Hello all. Lurking on all these lists for a while, and finally have a tricky issue to bring up.

I hope this is the correct list to post this message.

I'm currently trying to re-vamp Gentoo's (www.gentoo.org) gnustep ebuilds. Ebuild are Gentoo's "install scripts" as it does install from source. However, the build system "portage" (with tools like "emerge" [for end installers] and "ebuild" [to do specific emerge actions on an ebuild file, mainyl for ebuild writers]) is pretty advanced, and is completely sandboxed from the live system: packages are built, installed into a "fake root" and then moved over into the system (and thus config files, modified files, etceteras can be saved from destruction). I hope this was enough of an overview for any non-Gentoo-ers out there.

Now, almost all GNUstep packages I've written ebuilds for have installed fine. The meat of it uses a style like:
        make \
                GNUSTEP_USER_ROOT=$TMP/fakehome/GNUstep \
                HOME=$TMP/fakehome \
                INSTALL_ROOT_DIR=${D} \
                GNUSTEP_INSTALLATION_DIR=${D}${GNUSTEP_SYSTEM_ROOT} \
                GNUSTEP_LOCAL_ROOT=${GNUSTEP_SYSTEM_ROOT} \
                GNUSTEP_NETWORK_ROOT=${GNUSTEP_SYSTEM_ROOT} \
                GNUSTEP_SYSTEM_ROOT=${GNUSTEP_SYSTEM_ROOT} \
                GNUSTEP_MAKEFILES=${GNUSTEP_SYSTEM_ROOT}/Makefiles \
                install || die "einstall failed"
... ${D} is going to be the "/" of the fake-root. $TMP is just a temporary directory I've created and can write to. Sadly, the GNUSTEP_USER_ROOT hackery doesn't work as expected, 'cause some GNUmakefiles tend to call make_services, and it always wants /root/GNUstep, but that's non-fatal, and hacked around.

However, I have a recurring problem with frameworks -- I've seen this problem in Addresses-0.4.5 and a CVS pull of gworkspace from today (yeah, i know the ickiness of GWorkspace's Makefiles has been addressed on discuss-gnustep, but it looks like they are fixed in CVS). The problem is that the framework install (/usr/GNUstep/Makefiles/Instance/framework.make in internal-framework-install_:: tries to copy by tar cf - | tar xf -, which is usually fine, and then some chown'ng magic, which is usually fine, but I can only guess becuase of the sandboxing that I get errors like these:

make[1]: Entering directory `/var/tmp/portage/gworkspace-0.6.5_p060804/work/gworkspace/FSNode'
Making install for framework FSNode...
Creating /var/tmp/portage/gworkspace-0.6.5_p060804/image//usr/GNUstep/System/Library/Frameworks...
 Installing framework FSNode...
tar: FSNode.framework/Versions/A/FSNode: Cannot change ownership to uid 0, gid
0: No such file or directory
tar: FSNode.framework/Versions/A/libFSNode.so: Cannot change ownership to uid 0, gid 0: No such file or directory
tar: Error exit delayed from previous errors
make[2]: *** [internal-framework-install_] Error 2
make[1]: *** [FSNode.install.framework.variables] Error 2
make[1]: Leaving directory `/var/tmp/portage/gworkspace-0.6.5_p060804/work/gworkspace/FSNode'
make: *** [internal-install] Error 2

... and now I'm stuck ... trying to play the 'echo "here I am"' game in /usr/GNUstep/Makefiles/Instance/framework.make doesn't ever output anything, and I'm at a loss if GNUstep's makefiles are trying to cp-tar to the actual system or my fakeroot. I'm pretty darn sure my make command is working great (like I said, all others packages 'cept frameworks install perfectly).

If any one can shed like on this, or enlighten me as to any hidden environment variables I should be setting, I would be most appreciative.

__Armando Di Cianno
[EMAIL PROTECTED]


Reply via email to