added an experimental workaround for an ebuild.sh bug with environment.bz2 containing hardcoded ROOT=/ that causes package portage trigger to fail when installing in a different chroot

git-svn-id: http://svn.sabayonlinux.org/projects/entropy/trunk@1354 cd1c1023-2f26-0410-ae45-c471fc1f0318
This commit is contained in:
(no author)
2008-03-01 15:42:52 +00:00
parent ea3b00c2e3
commit 09b689cd94
+31 -3
View File
@@ -5969,7 +5969,7 @@ class TriggerInterface:
self.myebuild_moved = None
if os.path.isfile(myebuild):
myebuild = self._setup_ebuild_environment(myebuild, portage_atom)
myebuild = self._setup_remove_ebuild_environment(myebuild, portage_atom)
if os.path.isfile(myebuild):
@@ -6010,7 +6010,7 @@ class TriggerInterface:
self.myebuild_moved = None
if os.path.isfile(myebuild):
myebuild = self._setup_ebuild_environment(myebuild, portage_atom)
myebuild = self._setup_remove_ebuild_environment(myebuild, portage_atom)
if os.path.isfile(myebuild):
self.Entropy.updateProgress(
@@ -6036,7 +6036,7 @@ class TriggerInterface:
return 0
def _setup_ebuild_environment(self, myebuild, portage_atom):
def _setup_remove_ebuild_environment(self, myebuild, portage_atom):
ebuild_dir = os.path.dirname(myebuild)
ebuild_file = os.path.basename(myebuild)
@@ -6059,8 +6059,36 @@ class TriggerInterface:
if os.path.isfile(newmyebuild):
myebuild = newmyebuild
self.myebuild_moved = myebuild
self._ebuild_env_setup_hook(myebuild)
return myebuild
def _ebuild_env_setup_hook(self, myebuild):
ebuild_path = os.path.dirname(myebuild)
if not etpConst['systemroot']:
myroot = "/"
else:
myroot = etpConst['systemroot']+"/"
# we need to fix ROOT= if it's set inside environment
bz2envfile = os.path.join(ebuild_path,"environment.bz2")
if os.path.isfile(bz2envfile) and os.path.isdir(myroot):
print "found",bz2envfile,myroot
import bz2
envfile = self.Entropy.entropyTools.unpackBzip2(bz2envfile)
bzf = bz2.BZ2File(bz2envfile,"w")
f = open(envfile,"r")
line = f.readline()
while line:
if line.startswith("ROOT="):
print "found ROOT ::: ",line
line = "ROOT=%s\n" % (myroot,)
print "CHANGED ROOT ::: ",line
bzf.write(line)
line = f.readline()
f.close()
bzf.close()
os.remove(envfile)
def _remove_overlayed_ebuild(self):
if not self.myebuild_moved:
return