[Distutils] [RFC] eggbuild

Manlio Perillo manlio.perillo at gmail.com
Wed Nov 3 21:23:56 CET 2010


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi.

I'm pleased to announce the eggbuild package.

This is a proof of concept for some ideas I have in mind for Python
packages distribution.

The package name, the implemented setuptools command names and the API
are unstable, and may change in the future.

The project is currently available at:
http://hg.mperillo.ath.cx/eggbuild.

The README and TODO file contain some informations, and I will try to
not replicate them here.


Basically, the idea is to build a setuptools distribution format that,
like PyInstaller, is *self contained* (containing all required packages
and all external shared libraries).

However, unlike PyInstaller, there are some important differences,
listed in the README file.

I have tested the eggbuild command with a patched psycopg2 package, on a
Linux Debian Squeeze system.

Just for information, the resulting egg is 1.4 Mb big, when a normal egg
is 156 Kb big.

The resulting EGG-INFO\native_libs file is available here:
http://paste.pocoo.org/show/285677/

The patch for psycopg2 is available here:
http://paste.pocoo.org/show/285662/



The code *seems* to work.
When importing the psycopg2 module, the *correct* shared libraries are
loaded.

At least the correct libpq.so.5 library is used.
The other libraries required by libpq.so.5 are searched in the system
default location, and I need to check if this can be solved without
having to patch each library (adding LD_RPATH).

A simple solution is to set LD_LIBRARY_PATH environment variable (but
there are some issues to be solved).


Now, what I want to implement is a setuptools command that will build a
Debian package, with the following features:

* pre-install script will create a virtual environment, using
  virtualenv.

  The virtualenv should be created in /opt/<pkg-name>.

* the package and required packages are stored in the deb data file, in
  egg binary format, and will be automatically copied to the virtual
  python installation.


The main feature to implement is, however, a full MSI installer.
However I don't know how MSI is supposed to work, and I will probably
need some help (at least some good tutorial about MSI technology, what
can be and what can not be done).


I will appreciate comments and suggestions about the eggbuild design and
implementation.




Thanks   Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkzRxNwACgkQscQJ24LbaUQimACfRhi6kJUbPR8RkOz16Zcjni8T
AA8AmQGqdakXHSuZTMc1oKbOaGPJKq2p
=Pwqc
-----END PGP SIGNATURE-----


More information about the Distutils-SIG mailing list