I'm working on some extra cool and useful additions to PEP 370. It's
going to make compilation and usage of custom libraries very easy. Sit
back and watch the slide show. :)

The site module has two new options. The --user-base option prints the
path to the user base directory to stdout.

$ ~/dev/python/trunk/python -m site --user-base
/home/heimes/.local


I install libxslt-1.1.19 into my ~/.local directory.

libxslt-1.1.19$ ./configure --prefix `~/dev/python/trunk/python -m site
--user-base`
libxslt-1.1.19$ make
libxslt-1.1.19$ make install
...
test -z "/home/heimes/.local/lib" || mkdir -p -- "/home/heimes/.local/lib"
 /bin/bash ../libtool --mode=install /usr/bin/install -c  'libxslt.la'
'/home/heimes/.local/lib/libxslt.la'
/usr/bin/install -c .libs/libxslt.so.1.1.19
/home/heimes/.local/lib/libxslt.so.1.1.19


Now I compile lxml against the libraries and include directories in
~/.local. But first I have to add ~/.local/bin to PATH so lxml picks up
the right xslt-config binary.

$ export PATH=~/.local/bin:$PATH

lxml-1.3.6$ ~/dev/python/trunk/python setup.py build_ext --user
Building lxml version 1.3.6-8122
setupinfo.py:137: DeprecationWarning: os.popen3 is deprecated.  Use the
subprocess module.
  wf, rf, ef = os.popen3(cmd)
/home/heimes/dev/python/trunk/Lib/distutils/dist.py:263: UserWarning:
Unknown distribution option: 'zip_safe'
  warnings.warn(msg)
running build_ext
building 'lxml.etree' extension
creating build
creating build/temp.linux-i686-2.6-pydebug
creating build/temp.linux-i686-2.6-pydebug/src
creating build/temp.linux-i686-2.6-pydebug/src/lxml
gcc -pthread -fno-strict-aliasing -g -Wall -Wstrict-prototypes -fPIC
-I/home/heimes/.local/include -I/usr/include/libxml2
-I/home/heimes/dev/python/trunk/Include -I/home/heimes/dev/python/trunk
-I/home/heimes/.local/include -c src/lxml/etree.c -o
build/temp.linux-i686-2.6-pydebug/src/lxml/etree.o -w
creating build/lib.linux-i686-2.6-pydebug
creating build/lib.linux-i686-2.6-pydebug/lxml
gcc -pthread -shared build/temp.linux-i686-2.6-pydebug/src/lxml/etree.o
-L/home/heimes/.local/lib -L/home/heimes/.local/lib
-Wl,-R/home/heimes/.local/lib -lxslt -lexslt -lxml2 -lz -lm -o
build/lib.linux-i686-2.6-pydebug/lxml/etree.so
building 'lxml.objectify' extension
gcc -pthread -fno-strict-aliasing -g -Wall -Wstrict-prototypes -fPIC
-I/home/heimes/.local/include -I/usr/include/libxml2
-I/home/heimes/dev/python/trunk/Include -I/home/heimes/dev/python/trunk
-I/home/heimes/.local/include -c src/lxml/objectify.c -o
build/temp.linux-i686-2.6-pydebug/src/lxml/objectify.o -w
gcc -pthread -shared
build/temp.linux-i686-2.6-pydebug/src/lxml/objectify.o
-L/home/heimes/.local/lib -L/home/heimes/.local/lib
-Wl,-R/home/heimes/.local/lib -lxslt -lexslt -lxml2 -lz -lm -o
build/lib.linux-i686-2.6-pydebug/lxml/objectify.so
building 'lxml.pyclasslookup' extension
gcc -pthread -fno-strict-aliasing -g -Wall -Wstrict-prototypes -fPIC
-I/home/heimes/.local/include -I/usr/include/libxml2
-I/home/heimes/dev/python/trunk/Include -I/home/heimes/dev/python/trunk
-I/home/heimes/.local/include -c src/lxml/pyclasslookup.c -o
build/temp.linux-i686-2.6-pydebug/src/lxml/pyclasslookup.o -w
gcc -pthread -shared
build/temp.linux-i686-2.6-pydebug/src/lxml/pyclasslookup.o
-L/home/heimes/.local/lib -L/home/heimes/.local/lib
-Wl,-R/home/heimes/.local/lib -lxslt -lexslt -lxml2 -lz -lm -o
build/lib.linux-i686-2.6-pydebug/lxml/pyclasslookup.so


lxml-1.3.6$ ~/dev/python/trunk/python setup.py install --user
...


As you can see etree.so is going to load my local libxslt library
instead of the system one.

$ ldd /home/heimes/.local/lib/python2.6/site-packages/lxml/etree.so
        linux-gate.so.1 =>  (0xb7fc5000)
        libxslt.so.1 => /home/heimes/.local/lib/libxslt.so.1 (0xb7e89000)
        libexslt.so.0 => /home/heimes/.local/lib/libexslt.so.0 (0xb7e78000)
        libxml2.so.2 => /usr/lib/libxml2.so.2 (0xb7d3d000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb7d28000)
        libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7d03000)
        libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7ceb000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7b9c000)
        libgcrypt.so.11 => /lib/libgcrypt.so.11 (0xb7b4e000)
        libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7b4a000)
        /lib/ld-linux.so.2 (0xb7fc6000)
        libgpg-error.so.0 => /lib/libgpg-error.so.0 (0xb7b46000)


Comments? :)

Christian
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to