[Bf-python] Remote IPython & PyCrust Shell for Blender
Dietrich Bollmann
diresu at web.de
Tue Apr 1 09:26:11 CEST 2008
Hi,
Me again...
I had to rename the patch after downloading it:
wget
http://lists.blender.org/pipermail/bf-python/attachments/20080401/dfcf0681/attachment.bin
mv attachment.bin getopt-exp.tar.gz
I appended a transcript of the whole process...
Dietrich
--- transcript ---
dietrich at pippi:~ $ TMP=/tmp
dietrich at pippi:~ $ mkdir ${TMP}/getopt
dietrich at pippi:~ $ cd ${TMP}/getopt
dietrich at pippi:/tmp/getopt $ wget
http://lists.blender.org/pipermail/bf-python/attachments/20080401/dfcf0681/attachment.bin
--2008-04-01 16:16:47--
http://lists.blender.org/pipermail/bf-python/attachments/20080401/dfcf0681/attachment.bin
Resolving lists.blender.org... 194.109.217.139
Connecting to lists.blender.org|194.109.217.139|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2561 (2.5K) [application/octet-stream]
Saving to: `attachment.bin'
100%[====================================================================================================>] 2,561 --.-K/s in 0s
2008-04-01 16:16:47 (102 MB/s) - `attachment.bin' saved [2561/2561]
dietrich at pippi:/tmp/getopt $ ls -la
total 5
drwxr-xr-x 2 dietrich dietrich 80 2008-04-01 16:16 .
drwxrwxrwt 18 root root 848 2008-04-01 16:16 ..
-rw-r--r-- 1 dietrich dietrich 2561 2008-04-01 16:06 attachment.bin
dietrich at pippi:/tmp/getopt $ mv attachment.bin getopt-exp.tar.gz
dietrich at pippi:/tmp/getopt $ gunzip getopt-exp.tar.gz
dietrich at pippi:/tmp/getopt $ tar xvf getopt-exp.tar
getopt-exp/
getopt-exp/Makefile
getopt-exp/README
getopt-exp/getopt-exp.c
getopt-exp/blender-getopt.patch
dietrich at pippi:/tmp/getopt $ cd getopt-exp/
dietrich at pippi:/tmp/getopt/getopt-exp $ mkdir vendor-drop
dietrich at pippi:/tmp/getopt/getopt-exp $ cd vendor-drop
dietrich at pippi:/tmp/getopt/getopt-exp/vendor-drop $ svn export
svn://gcc.gnu.org/svn/gcc/trunk/libiberty/getopt.c
A getopt.c
Export complete.
dietrich at pippi:/tmp/getopt/getopt-exp/vendor-drop $ svn export
svn://gcc.gnu.org/svn/gcc/trunk/include/getopt.h
A getopt.h
Export complete.
dietrich at pippi:/tmp/getopt/getopt-exp/vendor-drop $ cd ..
dietrich at pippi:/tmp/getopt/getopt-exp $ cp vendor-drop/* .
dietrich at pippi:/tmp/getopt/getopt-exp $ patch -p0 --ignore-whitespace <
blender-getopt.patch
patching file getopt.c
dietrich at pippi:/tmp/getopt/getopt-exp $ diff getopt.h
vendor-drop/getopt.h
dietrich at pippi:/tmp/getopt/getopt-exp $ diff getopt.c
vendor-drop/getopt.c
45,47c45
< /* uncommented for usage in blender (dietrich)
< #include "ansidecl.h"
< */
---
> #include "ansidecl.h"
dietrich at pippi:/tmp/getopt/getopt-exp $ make
gcc -c -o getopt.o getopt.c
gcc -c -o getopt-exp.o getopt-exp.c
gcc getopt.o getopt-exp.o -o getopt-exp
dietrich at pippi:/tmp/getopt/getopt-exp $ ./getopt-exp --help
GNU getopt() experiments :)
* dumping command line options:
- number of arguments: 1
- argv[1]: --help
* parsing the command line parameters with getopt:
usage: ./getopt-exp [options]
options:
-h | --help - print this help message.
-n | --no-arg - an option without arguments.
-r | --arg-required - an option with a required argument.
-o | --arg-optional - an option with an optional argument.
examples:
./getopt-exp -h
./getopt-exp --help
./getopt-exp -n
./getopt-exp --no-arg
./getopt-exp -n --no-arg
./getopt-exp -r arg1 --arg-required arg2
./getopt-exp -rarg1 --arg-required=arg2
./getopt-exp -o --arg-optional
./getopt-exp -oarg3 --arg-optional=arg4
./getopt-exp \
one \
-n --no-arg \
two \
-r arg1 --arg-required arg2 -rarg1 --arg-required=arg2 \
three \
-o --arg-optional -oarg3 --arg-optional=arg4 \
four \
-u --unknown-option \
five \
-u --unknown-option \
six
dietrich at pippi:/tmp/getopt/getopt-exp $ ./getopt-exp \
> one \
> -n --no-arg \
> two \
> -r arg1 --arg-required arg2 -rarg1 --arg-required=arg2 \
> three \
> -o --arg-optional -oarg3 --arg-optional=arg4 \
> four \
> -u --unknown-option \
> five \
> -u --unknown-option \
> six
GNU getopt() experiments :)
* dumping command line options:
- number of arguments: 22
- argv[1]: one
- argv[2]: -n
- argv[3]: --no-arg
- argv[4]: two
- argv[5]: -r
- argv[6]: arg1
- argv[7]: --arg-required
- argv[8]: arg2
- argv[9]: -rarg1
- argv[10]: --arg-required=arg2
- argv[11]: three
- argv[12]: -o
- argv[13]: --arg-optional
- argv[14]: -oarg3
- argv[15]: --arg-optional=arg4
- argv[16]: four
- argv[17]: -u
- argv[18]: --unknown-option
- argv[19]: five
- argv[20]: -u
- argv[21]: --unknown-option
- argv[22]: six
* parsing the command line parameters with getopt:
- no-arg option found.
- no-arg option found.
- arg-required option found; arg: arg1
- arg-required option found; arg: arg2
- arg-required option found; arg: arg1
- arg-required option found; arg: arg2
- arg-optional option found; arg: (null)
- arg-optional option found; arg: (null)
- arg-optional option found; arg: arg3
- arg-optional option found; arg: arg4
./getopt-exp: invalid option -- u
- unknown option `-u'.
./getopt-exp: unrecognized option `--unknown-option'
- unknown option character `\x0'.
./getopt-exp: invalid option -- u
- unknown option `-u'.
./getopt-exp: unrecognized option `--unknown-option'
- unknown option character `\x0'.
non-option arguments: one, two, three, four, five, six.
* dumping command line options:
- number of arguments: 22
- argv[1]: -n
- argv[2]: --no-arg
- argv[3]: -r
- argv[4]: arg1
- argv[5]: --arg-required
- argv[6]: arg2
- argv[7]: -rarg1
- argv[8]: --arg-required=arg2
- argv[9]: -o
- argv[10]: --arg-optional
- argv[11]: -oarg3
- argv[12]: --arg-optional=arg4
- argv[13]: -u
- argv[14]: --unknown-option
- argv[15]: -u
- argv[16]: --unknown-option
- argv[17]: one
- argv[18]: two
- argv[19]: three
- argv[20]: four
- argv[21]: five
- argv[22]: six
bye...
dietrich at pippi:/tmp/getopt/getopt-exp $ cd
dietrich at pippi:~ $ /bin/rm -r /tmp/getopt/
dietrich at pippi:~ $
On Tue, 2008-04-01 at 16:06 +0900, Dietrich Bollmann wrote:
> Hi Nathan,
>
> On Fri, 2008-03-28 at 11:38 +0200, Nathan Letwory wrote:
> > On Thu, Mar 27, 2008 at 11:50 AM, Dietrich Bollmann <diresu at web.de> wrote:
> >
> > > - I could write a simple patch which starts to move the blender
> > > option parsing code to GNU getopt().
> > > I thing GNU getopt() would be a better option as it goes with the
> > > current "best practise" in the c developer community and would
> > > make it easy to profit from further development of the GNU
> > > getopt() library.
> >
> > This is feasible only if it is cross-platform and cross-compiler, ie.
> > it should also compile with MSVC. I haven't researched the GNU
> > getopt() library though, but ideally it should be available as small
> > library that we can add to lib/windows if we were to use GNU getopt().
>
> I appended a tarball with a README explaining how to download the getopt
> sources and an example file to experiment with GNU getopt().
>
> Unfortunately I only use Linux, so I can't verify if the example works
> for MAC and microsoft. But maybe you or some other person could help
> out?
>
> Everything - downloading the sources, building and playing with the
> example - should only take some minutes.
>
> If everything works I could write an example patch for Blender
> implementing something like a --hello-world option. If this works fine I
> could write more patches porting the option parsing code to GNU getopt()
> step by step.
>
> Best wishes, Dietrich
>
> PS: Should I rather send this message to some other group?
>
> Here how to use the tarball from a unix bash shell:
>
> Use some directory for temporary files - in my case:
>
> TMP=/tmp
>
> # make a directory to experiment with getopt:
>
> mkdir ${TMP}/getopt
> cd ${TMP}/getopt
>
> # unpack the attached sources:
>
> gunzip getopt-exp.tar.gz
> tar xvf getopt-exp.tar
> cd getopt-exp/
>
> # continue as described in the README file
>
> cat README
>
> # --- README ---
>
> * getopt docs
>
> - http://www.gnu.org/software/libtool/manual/libc/Getopt.html
>
>
> * usage
>
> # make a directory for the original files and download GNU getopt.{c,h}
>
> mkdir vendor-drop
> cd vendor-drop
> svn export svn://gcc.gnu.org/svn/gcc/trunk/libiberty/getopt.c
> svn export svn://gcc.gnu.org/svn/gcc/trunk/include/getopt.h
> cd ..
>
> # make blender versions of getopt.* and patch them for usage with
> blender
>
> cp vendor-drop/* .
> patch -p0 --ignore-whitespace < blender-getopt.patch
>
> # having a look on the differences between original version and blender
> versions
> # (only the line '#include "ansidecl.h"' was uncommented...)
>
> diff getopt.h vendor-drop/getopt.h
> diff getopt.c vendor-drop/getopt.c
>
> # build getopt-exp
> # the Makefile has to be edited for windows and mac...
> # please post the result if working :)
>
> make
>
> # get usage information
>
> ./getopt-exp --help
>
> # play with GNU getopt()
>
> ./getopt-exp \
> one \
> -n --no-arg \
> two \
> -r arg1 --arg-required arg2 -rarg1 --arg-required=arg2 \
> three \
> -o --arg-optional -oarg3 --arg-optional=arg4 \
> four \
> -u --unknown-option \
> five \
> -u --unknown-option \
> six
>
>
> * fin.
>
>
> > /Nathan
> _______________________________________________
> Bf-python mailing list
> Bf-python at blender.org
> http://lists.blender.org/mailman/listinfo/bf-python
More information about the Bf-python
mailing list