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]