[Sugar-devel] Bundling libraries, RPMs? (was Re: WatchMe-1, a VNC activity)

Benjamin M. Schwartz bmschwar at fas.harvard.edu
Mon Aug 17 15:18:22 EDT 2009


Peter Robinson wrote:
>>> Indeed.  The #1 thing to do, IMHO, is to get rid of the "yum install"
>>> requirement.  In the short term, the only way to do that is to bundle
>>> gtk-vnc and gtk-vnc-python into the .xo, which is fine... I'm just not
>>> quite sure how to do it.
>> If someone does know how to do this sort of thing, a quick how-to
>> writeup would be immensely useful!
> 
> Please DON'T do this. There is absolutely NO guarantee that this will
> work between Fedora versions, it fact its known to break, just look at
> a recent rawhide report and see the breakage for pippy. Its a complete
> hack and a complete mess and it will guarantee that things will break
> and the activity will then only be supported on the sugar release that
> it was based upon rather than be supportable across multiple sugar
> releases because the underlying Fedora libraries that the included
> binaries link against will have changed. If you have something that
> has a dependency you'd be much better to package it up as an rpm where
> you can do proper rpm requires which means it can pull in any required
> dependencies. I will quite happily assist in rpm creation and support.

So, in fact, I have taken a middle way that is somewhat interesting.  In
WatchMe-2 (currently pending in activities.sugarlabs.org; I'm not sure why
it hasn't been accepted) I have bundled the gtk-vnc and gtk-vnc-python
packages from Fedora 9, as well as a static binary of x11vnc (which still
has not been accepted into the Fedora repositories).  This makes the
bundle work "out of the box" on OLPC's XO distros.

To make this work, I've had to modify PATH, LD_LIBRARY_PATH, and
PYTHONPATH.  Normally, this setup would be unreliable on other versions of
Fedora or another distribution, and absolutely broken on another
architecture (e.g. PowerPC).  However, rather than naively setting these
PATH variables, I have introduced a compatibility shim that inspects the
current PATH, determines the current Python library search path, and
parses /etc/ld.so.conf to work out the systemwide libraries path.  It then
generates these variables so as to ensure that the bundles libraries are
inserted with _lowest_ priority, rather than _highest_ priority as is
typically the case.

As a result, if you install gtk-vnc, gtk-vnc-python, and x11vnc, WatchMe-2
should work on any distribution, on any architecture.  Additionally, it
runs on OLPC's Fedora 9 without any root privileges required.

I had planned on describing this system after WatchMe-2 appeared on ASLO,
but I guess our sysadmins have been a bit too busy fighting fires to
approve new Activities.

--Ben

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
Url : http://lists.sugarlabs.org/archive/sugar-devel/attachments/20090817/661395d6/attachment.pgp 


More information about the Sugar-devel mailing list