Hi! Got a sandbox violation when merging libsig++-1.0.4.ebuild. Haven't had a chance to look into it. Sandbox log is attached.
Created attachment 94 [details] sandbox-libsigc++-1.0.4-16570.log
I don't get this violation, I'll try on another machine too
Verified on second machine and still don't get this error, marking as WORKSFORME.
Hi! This occured on my machin at work which is admittedly not as up to date as my machine at home. 1. Noticed that I wasn't running the latest portage, so I upgraded to portage-1.8.6-r1 and tried to merge libsig++ but got the same sandbox error. 2.Checked the package database and noticed I had several stale versions of portage in there and unmerged them, but got the same sandbox error again. Don't know what's going on, I'll check my machine at home in a few hours. Perhaps there is someother package that is stale on my work machine. Sorry for the bother Geert, its probably something screwed with my system here. tod
Since it occurs on your system, please track it down and post a fix. It's true that other people can be affected. It's a pity I can't check.
Hi! Just tried this and didn't get the sandbox violation on my home computer. Don't know what's up with my work machine. Maybe I'll hit it with a hammer :)
Hi! I figured out what the problem was. It is in the sig++ source subdirectory Makefile. It performs a check for an old header install location, and if old headers are found it attempts to delete them. I guess the libsig++ developers are trying transition to a parallel lib version install scheme and think they are helping by removing the old headers automagically for you. Note: This only happens when you have an older version of libsig++ already installed. In my case, it is libsig++-1.0.3. The relevant section of the ${P}/sig++/Makefile is below: *****************************snip************************** install-data-hook: @if test -d "$(includedir)/sigc++" ; then \ echo ;\ echo "*** WARNING ***:" ;\ echo "You seem to have old libsigc++ header files installed in:" ;\ echo ;\ echo " \"$(includedir)/sigc++\"" ;\ echo ;\ echo "The entire directory will be removed now." ;\ echo "To allow parallel installation of sigc++-1.0 and sigc++-1.2," ;\ echo "the header files are now installed in a version specific subdirectory:" ;\ echo ;\ echo " \"$(libsigcincludedir)\"" ;\ echo ;\ rm -rf "$(includedir)/sigc++" ;\ fi ********************end snip******************************************* A quick fix would be just to comment out that 'rm -rf' and then echo a message to the user in pkg_postinst to be sure to unmerge any old versions of libsig++
Ok here's a patch to fix this. Note: one thing I'm not sure of is if in the case of a 'emerge --world update' and the person has libsig++-1.0.3 installed, whether there might be header confusion in subsequent builds against libsig++, if libsig++-1.0.3 hasn't been unmerged first. Can't attach so I'll paste. I can apply if you like. If there is a better way of handling this, I would be interested in knowing (I'm always trying to learn something new :) ***************patch********************************* --- libsigc++-1.0.4.ebuild.orig Tue Jan 29 09:47:45 2002 +++ libsigc++-1.0.4.ebuild Tue Jan 29 10:34:49 2002 @@ -26,6 +26,18 @@ --infodir=/usr/share/info \ --mandir=/usr/share/man \ ${myconf} || die + + #Fix sandbox violation when old libsig++ is already installed, + #hopefully this will go away after the header location settles down + #Comment out the remove old header directory line + cp sigc++/Makefile sigc++/Makefile.orig + sed -e 's:\(@if\):#\1:' \ + sigc++/Makefile.orig > sigc++/Makefile + + #This occurs in two places + cp sigc++/config/Makefile sigc++/config/Makefile.orig + sed -e 's:\(@if\):#\1:' \ + sigc++/config/Makefile.orig > sigc++/config/Makefile emake || die } @@ -36,3 +48,17 @@ dodoc AUTHORS ChangeLog COPYING README* INSTALL NEWS } + +pkg_postinst() { + + echo "" + echo "********************* WARNING ********************" + echo "" + echo "To allow parallel installation of sig++-1.0 and sig++-1.2," + echo "the header files are now installed in a version specific" + echo "subdirectory. Be sure to unmerge any libsig++ versions" + echo "< 1.0.4 that you may have previously installed." + echo "" + echo "**************************************************" + +}
Fixed ebuild and commited to cvs, checked with a previously installed version of v1.0.3 and it seems to work now.