[ 1343164 ] Error compiling Inkscape from CVS
Hello Everyone I have filed a report on the Bug Tracker on my continuing issue compiling Inkscape from CVS on Fedora Core 3:
https://sourceforge.net/tracker/index.php?func=detail&aid=1343164&gr...
If you need any more info from me, please let me know.
Steven P. Ulrick
On Sun, 30 Oct 2005 23:03:11 -0600 "Steven P. Ulrick" <lists@...1052...> wrote:
Hello Everyone I have filed a report on the Bug Tracker on my continuing issue compiling Inkscape from CVS on Fedora Core 3:
https://sourceforge.net/tracker/index.php?func=detail&aid=1343164&gr...
If you need any more info from me, please let me know.
Steven P. Ulrick
Hello, Everyone I just updated Inkscape from CVS and attempted to compile (I saw that a lot of po/*.po files were updated/patched, so I thought that maybe this issue was fixed. Unfortunatlely, it is not fixed. But now "make" bombs on a different *.po file (ja.po) All that being the case, the link to this bug report is in the part of this thread that I quoted above, so I will not repeat it down here :)
Steven P. Ulrick
On Thu, 3 Nov 2005 07:35:55 -0600 "Steven P. Ulrick" <lists@...1052...> wrote:
On Sun, 30 Oct 2005 23:03:11 -0600 "Steven P. Ulrick" <lists@...1052...> wrote:
Hello Everyone I have filed a report on the Bug Tracker on my continuing issue compiling Inkscape from CVS on Fedora Core 3:
https://sourceforge.net/tracker/index.php?func=detail&aid=1343164&gr...
If you need any more info from me, please let me know.
Steven P. Ulrick
Hello, Everyone I just updated Inkscape from CVS and attempted to compile (I saw that a lot of po/*.po files were updated/patched, so I thought that maybe this issue was fixed. Unfortunatlely, it is not fixed. But now "make" bombs on a different *.po file (ja.po) All that being the case, the link to this bug report is in the part of this thread that I quoted above, so I will not repeat it down here :)
Hello, Everyone I just updated Inkscape from CVS and ran "make check" instead of "make" Here is a link to the entire output, in case it will help fix this problem: http://www.afolkey2.net/inkscape-MakeCheck.log
As of now, Inkscape will not build on our Fedora Core 3 system.
Steven P. Ulrick
On 11/4/05, Steven P. Ulrick <lists@...1052...> wrote:
On Thu, 3 Nov 2005 07:35:55 -0600 "Steven P. Ulrick" <lists@...1052...> wrote:
On Sun, 30 Oct 2005 23:03:11 -0600 "Steven P. Ulrick" <lists@...1060....> wrote:
https://sourceforge.net/tracker/index.php?func=detail&aid=1343164&gr...
Hello, Everyone I just updated Inkscape from CVS and ran "make check" instead of ...
The extra output from the 'check' target is not necessary and may be giving you false hope!
pt_BR.po:2001: message catalog has plural form translations... pt_BR.po:5: ...but header entry lacks a "plural=EXPRESSION" attribute
My guess is that there is 'something wrong' with some (many) of your .po files. Are you able to use CVS operations, fully and conveniently documented and described here:
http://cvsbook.red-bean.com/cvsbook.html ,
to investigate this?
If not please state where you get stuck, as we will need to update the developer pages on the Wiki.
Good luck!
Ben
On Sat, 5 Nov 2005 09:05:47 +0000 Ben Fowler <ben.the.mole@...400...> wrote:
On 11/4/05, Steven P. Ulrick <lists@...1052...> wrote:
On Thu, 3 Nov 2005 07:35:55 -0600 "Steven P. Ulrick" <lists@...1052...> wrote:
On Sun, 30 Oct 2005 23:03:11 -0600 "Steven P. Ulrick" <lists@...1052...> wrote:
https://sourceforge.net/tracker/index.php?func=detail&aid=1343164&gr...
Hello, Everyone I just updated Inkscape from CVS and ran "make check" instead of ...
The extra output from the 'check' target is not necessary and may be giving you false hope!
pt_BR.po:2001: message catalog has plural form translations... pt_BR.po:5: ...but header entry lacks a "plural=EXPRESSION" attribute
My guess is that there is 'something wrong' with some (many) of your .po files.
Hello, Ben I "suspect" that nothing is wrong with my .po files. The reason being, I have tried to compile Inkscape on multiple occasions after removing the po directory and re-updating, and I have also tried with completely fresh checkouts of Inkscape from CVS. make still crashes with similar errors, even with fresh checkouts of the po dir, and fresh checkouts of Inkscape.
Are you able to use CVS operations, fully and conveniently documented and described here:
http://cvsbook.red-bean.com/cvsbook.html ,
to investigate this?
If not please state where you get stuck, as we will need to update the developer pages on the Wiki.
I need to go get some sleep, so I will look at that later.
Steven P. Ulrick
On 11/5/05, Steven P. Ulrick <lists@...1052...> wrote:
On Sat, 5 Nov 2005 09:05:47 +0000 Ben Fowler <ben.the.mole@...400...> wrote:
My guess is that there is 'something wrong' with some (many) of your .po files.
I "suspect" that nothing is wrong with my .po files. The reason being, I have tried to compile Inkscape on multiple occasions after removing the po directory and re-updating, and I have also tried with completely fresh checkouts of Inkscape from CVS. make still crashes with similar errors, even with fresh checkouts of the po dir, and fresh checkouts of Inkscape.
That is very clear. Re-updating, and as an extreme instance of that, a completely fresh checkout are both excellent and very good, respectively, ways of approaching a problem like this, and are recommended by me without reservation.
I would suggest that you cd to the directory where the problem occurs, e.g.
$ cd /home/steve/CVS/Assorted-CVS-Modules/inkscape/po
(Incidentally, you are more or less unique in using 'CVS' as a directory name, but I doubt that that is the cause of any difficulties here. (I use 'SF' as a place to keep projects that I have checked out of sourceforge)),
and check that your files are up to date with
$ cvs -Q up -dP $ cvs -Q diff
Next, try to make, just to check that things are still not working
$ make
(Incidentally, it looks as if your make operation is bailing out with errors rather than crashing. If you really are getting a crash then you may have a more fundamental problem, and you are not going to be helped (much) by these instructions); and perhaps make -n to look at the commands that are failing
$ make -n > make.out $ head make.out
I am going to make a guess that the first command that fails is:
file=./`echo pt_BR | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file pt_BR.po
What happens is you run by hand:
$ /usr/bin/gmsgfmt -o pt_BR.gmo pt_BR.po
Do you get an error that you can fix?
What do you get for::
$ /usr/bin/gmsgfmt --version gmsgfmt (GNU gettext-tools) 0.14.4 ....
What do you get for::
$ grep -n plural pt_BR.po 2000:msgid_plural "<b>%d</b> objects found (out of <b>%d</b>), %s match." 3227:msgid_plural "Removed <b>%i</b> unused definitions in <defs>." 3685:msgid_plural "Sending message; %u messages remaining in send queue." 3696:msgid_plural "Receiving change; %u changes left to process." 3802:msgid_plural "%u changes in receive queue." 3809:msgid_plural "%u changes in send queue." 4340:msgid_plural "" 4358:msgid_plural "<b>%i</b> of <b>%i</b> nodes selected; %s. %s." 4365:msgid_plural "<b>%i</b> of <b>%i</b> nodes selected. %s." 4879:msgid_plural "<b>%i</b> objects selected" 4891:msgid_plural "%s in <b>%i</b> layers. %s." 5045:msgid_plural "<b>Group</b> of <b>%d</b> objects" 5081:msgid_plural "<b>Path</b> (%i nodes)" 5100:#. string as needed to deal with an localized plural forms. 5109:msgid_plural "<b>Star</b> with %d vertices" 5116:msgid_plural "<b>Polygon</b> with %d vertices"
I get very similar results for pt.po .
It is possible that your gettext-tools installation can handle plural expressions in some cases, but not in all cases.
Maybe the problem is with Fedora (are other Fedora users able to compile Inkscape?).
Maybe we need to check for versions and/or capabilities of gettext-tools.
I am sorry to give you homework to do when you may be feeling ignored by the Inkscape crew, but could you make it your care and delight to personally download the 0.43 release candidates for us as they appear and check that they work with your installation of Fedora. Whilst Fedora is not as widespread in my part of the world as Ubuntu or Mandrake, it most certainly is one that new Linux users are pointed to, and I am sure that we should walk the extra mile to double check that our realeases work on that distro.
Better still, of course, would be for a Fedora dev to make Fedora rpms and upload them to Inkscape. Perhaps there is a dogfood possibility: Can the Fedora release team be persuaded to use Inkscape for making icons and graphics ...
Do get back to us if there are problems.
Ben
On Sat, 5 Nov 2005 10:15:24 +0000 Ben Fowler <ben.the.mole@...400...> wrote:
On 11/5/05, Steven P. Ulrick <lists@...1052...> wrote:
On Sat, 5 Nov 2005 09:05:47 +0000 Ben Fowler <ben.the.mole@...400...> wrote:
My guess is that there is 'something wrong' with some (many) of your .po files.
I "suspect" that nothing is wrong with my .po files. The reason being, I have tried to compile Inkscape on multiple occasions after removing the po directory and re-updating, and I have also tried with completely fresh checkouts of Inkscape from CVS. make still crashes with similar errors, even with fresh checkouts of the po dir, and fresh checkouts of Inkscape.
That is very clear. Re-updating, and as an extreme instance of that, a completely fresh checkout are both excellent and very good, respectively, ways of approaching a problem like this, and are recommended by me without reservation.
I would suggest that you cd to the directory where the problem occurs, e.g.
$ cd /home/steve/CVS/Assorted-CVS-Modules/inkscape/po
(Incidentally, you are more or less unique in using 'CVS' as a directory name, but I doubt that that is the cause of any difficulties here. (I use 'SF' as a place to keep projects that I have checked out of sourceforge)),
and check that your files are up to date with
$ cvs -Q up -dP $ cvs -Q diff
Hello, Ben There was no output when I did what you said above.
Next, try to make, just to check that things are still not working
$ make
(Incidentally, it looks as if your make operation is bailing out with errors rather than crashing. If you really are getting a crash then you may have a more fundamental problem, and you are not going to be helped (much) by these instructions); and perhaps make -n to look at the commands that are failing
I am sure that I am guilty of using the word "crash" when it does not apply. I will be seeing my brother Dave today (the family Linux guru) and I will have him educate me on the proper usage of the term "crash"
$ make -n > make.out $ head make.out
The output of "head make.out" is as follows: [steve@...1062... po]$ head make.out file=./`echo mk | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file mk.po file=./`echo nb | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file nb.po file=./`echo nl | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file nl.po file=./`echo nn | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file nn.po file=./`echo pa | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file pa.po
I am going to make a guess that the first command that fails is:
file=./`echo pt_BR | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file pt_BR.po
What happens is you run by hand:
$ /usr/bin/gmsgfmt -o$ pt_BR.gmo pt_BR.po
I do not even have a "/usr/bin/gmsgfmt" command. I did discover that I do have "/usr/bin/msgfmt" and that that comes from the gettext RPM. If this is a problem, let me know how to get "/usr/bin/gmsgfmt"
I discovered that there are no .gmo files for ANY of the files mentioned in the output of "head make.out" Here are the only .po files that have .gmo files (I understand the the .gmo files are not created until "make" is run): am.gmo az.gmo be.gmo ca.gmo cs.gmo da.gmo de.gmo el.gmo es.gmo es_MX.gmo et.gmo eu.gmo fr.gmo ga.gmo gl.gmo hu.gmo it.gmo ja.gmo
You might be interested in the output of "make" that I ran from inkscape/po: [steve@...1062... po]$ make file=./`echo mk | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file mk.po file=./`echo nb | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file nb.po file=./`echo nl | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file nl.po file=./`echo nn | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file nn.po file=./`echo pa | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file pa.po file=./`echo pl | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file pl.po file=./`echo pt | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file pt.po file=./`echo pt_BR | sed 's,.*/,,'`.gmo \ && rm -f $file && /usr/bin/msgfmt -c -o $file pt_BR.po pt_BR.po:2001: message catalog has plural form translations... pt_BR.po:5: ...but header entry lacks a "plural=EXPRESSION" attribute pt_BR.po:2001: message catalog has plural form translations... pt_BR.po:5: ...but header entry lacks a "nplurals=INTEGER" attribute make: *** [pt_BR.gmo] Error 1
You will notice that pt_BR IS mentioned.
Do you get an error that you can fix?
Like I said, I have no "/usr/bin/gmsgfmt", so I can't answer that question.
What do you get for::
$ /usr/bin/gmsgfmt --version gmsgfmt (GNU gettext-tools) 0.14.4 ....
I ran rpm -qa | grep gettext and I only have gettext and gettext-devel installed. I did run "/usr/bin/msgfmt --version" and I got the following: [steve@...1062... ~]$ /usr/bin/msgfmt --version msgfmt (GNU gettext-tools) 0.14.1 Copyright (C) 1995-1998, 2000-2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Ulrich Drepper.
What do you get for::
$ grep -n plural pt_BR.po 2000:msgid_plural "<b>%d</b> objects found (out of <b>%d</b>), %s match." 3227:msgid_plural "Removed <b>%i</b> unused definitions in <defs>." 3685:msgid_plural "Sending message; %u messages remaining in send queue." 3696:msgid_plural "Receiving change; %u changes left to process." 3802:msgid_plural "%u changes in receive queue." 3809:msgid_plural "%u changes in send queue." 4340:msgid_plural "" 4358:msgid_plural "<b>%i</b> of <b>%i</b> nodes selected; %s. %s." 4365:msgid_plural "<b>%i</b> of <b>%i</b> nodes selected. %s." 4879:msgid_plural "<b>%i</b> objects selected" 4891:msgid_plural "%s in <b>%i</b> layers. %s." 5045:msgid_plural "<b>Group</b> of <b>%d</b> objects" 5081:msgid_plural "<b>Path</b> (%i nodes)" 5100:#. string as needed to deal with an localized plural forms. 5109:msgid_plural "<b>Star</b> with %d vertices" 5116:msgid_plural "<b>Polygon</b> with %d vertices"
[steve@...1062... po]$ grep -n plural pt_BR.po 2000:msgid_plural "<b>%d</b> objects found (out of <b>%d</b>), %s match." 3227:msgid_plural "Removed <b>%i</b> unused definitions in <defs>." 3685:msgid_plural "Sending message; %u messages remaining in send queue." 3696:msgid_plural "Receiving change; %u changes left to process." 3802:msgid_plural "%u changes in receive queue." 3809:msgid_plural "%u changes in send queue." 4340:msgid_plural "" 4358:msgid_plural "<b>%i</b> of <b>%i</b> nodes selected; %s. %s." 4365:msgid_plural "<b>%i</b> of <b>%i</b> nodes selected. %s." 4879:msgid_plural "<b>%i</b> objects selected" 4891:msgid_plural "%s in <b>%i</b> layers. %s." 5045:msgid_plural "<b>Group</b> of <b>%d</b> objects" 5081:msgid_plural "<b>Path</b> (%i nodes)" 5100:#. string as needed to deal with an localized plural forms. 5109:msgid_plural "<b>Star</b> with %d vertices" 5116:msgid_plural "<b>Polygon</b> with %d vertices"
I get very similar results for pt.po .
It is possible that your gettext-tools installation can handle plural expressions in some cases, but not in all cases.
Maybe the problem is with Fedora (are other Fedora users able to compile Inkscape?).
Maybe we need to check for versions and/or capabilities of gettext-tools.
I would suspect that myself, since I have "/usr/bin/msgfmt" installed but I don't have "/usr/bin/gmsgfmt" installed. Since I have the weekend off, I will try compiling gettext from the most recent source I can get a hold of. I will even check into various Fedora Core 3/Rawhide SRPMS. If I have any luck, I will get back to with the output of "/usr/bin/gmsgfmt -o$ pt_BR.gmo pt_BR.po"
I am sorry to give you homework to do when you may be feeling ignored by the Inkscape crew, but could you make it your care and delight to personally download the 0.43 release candidates for us as they appear and check that they work with your installation of Fedora. Whilst Fedora is not as widespread in my part of the world as Ubuntu or Mandrake, it most certainly is one that new Linux users are pointed to, and I am sure that we should walk the extra mile to double check that our realeases work on that distro.
Not only would I love to do that for Inkscape and the community, but I actually will :)
Better still, of course, would be for a Fedora dev to make Fedora rpms and upload them to Inkscape. Perhaps there is a dogfood possibility: Can the Fedora release team be persuaded to use Inkscape for making icons and graphics ...
Do get back to us if there are problems.
Ben
On Sat, 5 Nov 2005 05:29:04 -0600 "Steven P. Ulrick" <lists@...1052...> wrote:
On Sat, 5 Nov 2005 10:15:24 +0000 Ben Fowler <ben.the.mole@...400...> wrote:
On 11/5/05, Steven P. Ulrick <lists@...1052...> wrote:
On Sat, 5 Nov 2005 09:05:47 +0000 Ben Fowler <ben.the.mole@...400...> wrote:
It is possible that your gettext-tools installation can handle plural expressions in some cases, but not in all cases.
Maybe the problem is with Fedora (are other Fedora users able to compile Inkscape?).
Maybe we need to check for versions and/or capabilities of gettext-tools.
I would suspect that myself, since I have "/usr/bin/msgfmt" installed but I don't have "/usr/bin/gmsgfmt" installed. Since I have the weekend off, I will try compiling gettext from the most recent source I can get a hold of. I will even check into various Fedora Core 3/Rawhide SRPMS. If I have any luck, I will get back to with the output of "/usr/bin/gmsgfmt -o$ pt_BR.gmo pt_BR.po"
Hello, Ben While re-compiling the src.rpm for FC3's version of gettext, I observed the following: checking for gmsgfmt... /usr/bin/msgfmt Can I assume that /usr/bin/msgfmt is the same as /usr/bin/gmsgfmt?
If it is, here is the output of "/usr/bin/gmsgfmt -o$ pt_BR.gmo pt_BR.po"
[steve@...1062... po]$ /usr/bin/msgfmt -o$ pt_BR.gmo pt_BR.po pt_BR.gmo:1:2: parse error pt_BR.gmo:1: keyword "$" unknown pt_BR.gmo:2: keyword "P" unknown pt_BR.gmo:3: keyword "a" unknown pt_BR.gmo:4: keyword "a" unknown pt_BR.gmo:5: keyword "a" unknown pt_BR.gmo:6: keyword "d" unknown pt_BR.gmo:7: keyword "_e" unknown pt_BR.gmo:8: keyword "Vf" unknown pt_BR.gmo:9: keyword "f" unknown pt_BR.gmo:10: end-of-line within string pt_BR.gmo:11: keyword "p" unknown pt_BR.gmo:12: keyword "p" unknown pt_BR.gmo:13: end-of-line within string pt_BR.gmo:14: keyword "r" unknown pt_BR.gmo:15: keyword "Xv" unknown pt_BR.gmo:16: keyword "tv" unknown pt_BR.gmo:17: end-of-line within string pt_BR.gmo:18: keyword "L" unknown pt_BR.gmo:19: keyword "M" unknown /usr/bin/msgfmt: too many errors, aborting
NOW I will go to bed.......
Steven P. Ulrick
On 11/5/05, Steven P. Ulrick <lists@...1052...> wrote:
On Sat, 5 Nov 2005 05:29:04 -0600 "Steven P. Ulrick" <lists@...1052...> wrote:
On Sat, 5 Nov 2005 10:15:24 +0000 Ben Fowler <ben.the.mole@...400...> wrote:
On 11/5/05, Steven P. Ulrick <lists@...1052...> wrote:
On Sat, 5 Nov 2005 09:05:47 +0000 Ben Fowler <ben.the.mole@...1063....> wrote:
Hello, Ben While re-compiling the src.rpm for FC3's version of gettext, I observed the following: checking for gmsgfmt... /usr/bin/msgfmt Can I assume that /usr/bin/msgfmt is the same as /usr/bin/gmsgfmt?
Yes.
If it is, here is the output of "/usr/bin/gmsgfmt -o$ pt_BR.gmo pt_BR.po"
[steve@...1062... po]$ /usr/bin/msgfmt -o$ pt_BR.gmo pt_BR.po pt_BR.gmo:1:2: parse error
There is a stray '$' in the command. If that is my doing (and it most probably is), I apologise.
I think that you are on the right lines, and the next step is the one I posted a second or two ago, try:
$ /usr/bin/msgfmt -o pt_BR.gmo pt_BR.po
and search Google for help with the error message(s).
See https://lister.ping.uio.no/pipermail/lister.ping.uio.no/i18n-no/2004-June/00... , for example.
Ben
On 11/5/05, Steven P. Ulrick <lists@...1052...> wrote:
On Sat, 5 Nov 2005 10:15:24 +0000 Ben Fowler <ben.the.mole@...400...> wrote:
On 11/5/05, Steven P. Ulrick <lists@...1052...> wrote: ...
I would suggest that you cd to the directory where the problem occurs, ... and check that your files are up to date with
$ cvs -Q up -dP $ cvs -Q diff
There was no output when I did what you said above.
That is what the capital Q is for. No output means everything went OK. I have added a couple of links to the wiki http://wiki.inkscape.org/cgi-bin/wiki.pl?WorkingWithCVS pointing to reference information for CVS.
Next, try to make, just to check that things are still not working ... ... and perhaps make -n to look at the commands that are failing What happens is you run by hand:
$ /usr/bin/gmsgfmt -o pt_BR.gmo pt_BR.po
I do not even have a "/usr/bin/gmsgfmt" command. I did discover that I do have "/usr/bin/msgfmt" and that that comes from the gettext RPM. If this is a problem, let me know how to get "/usr/bin/gmsgfmt"
Thank you. It is the other way round. My /usr/bin/gmsgfmt is just a link to msgfmt . I will need to stop using the former.
Do you get an error that you can fix?
Like I said, I have no "/usr/bin/gmsgfmt", so I can't answer that question.
Correction: Try
$ /usr/bin/msgfmt -o pt_BR.gmo pt_BR.po
... [steve@...1062... ~]$ /usr/bin/msgfmt --version msgfmt (GNU gettext-tools) 0.14.1 Copyright (C) 1995-1998, 2000-2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Ulrich Drepper.
* One outside possibility is that gettext-tools 0.14.1 is too old, but on Mac OS X, msgfmt is at version 0.10.40 and that works, so I don't think so.
Maybe we need to check for versions and/or capabilities of gettext-tools.
I would suspect that myself, since I have "/usr/bin/msgfmt" installed but I don't have "/usr/bin/gmsgfmt" installed. Since I have the weekend off, I will try compiling gettext from the most recent source I can get a hold of. I will even check into various Fedora Core 3/Rawhide SRPMS. If I have any luck, I will get back to with the output of "/usr/bin/gmsgfmt -o pt_BR.gmo pt_BR.po"
Certainly, that is one good way of spending a wet weekend, but I have never had to work that closely with .po files. In the long run, we are looking to find something that works for people who have Fedora installed using standard methods.
Once we have have ascertained exactly what error message you get, and how to produce it at will , you can probably Google for the answer. In fact, you might be able to skip directly to that step.
Ben
participants (2)
-
Ben Fowler
-
Steven P. Ulrick