summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Robbins <drobbins@gentoo.org>2001-08-07 06:21:21 +0000
committerDaniel Robbins <drobbins@gentoo.org>2001-08-07 06:21:21 +0000
commit5f03e3885bec14cdaf76053d8128fe8d08d8f60c (patch)
tree9b5612aa9434b467089ad179074f6e641c7c2d26 /sys-apps
parentfix for handling flaky ebuilds during doebuild() "depend" phase (diff)
downloadgentoo-2-5f03e3885bec14cdaf76053d8128fe8d08d8f60c.tar.gz
gentoo-2-5f03e3885bec14cdaf76053d8128fe8d08d8f60c.tar.bz2
gentoo-2-5f03e3885bec14cdaf76053d8128fe8d08d8f60c.zip
Portage fix: should now gracefully handle syntax errors in ebuilds, printing
out bash error messages.
Diffstat (limited to 'sys-apps')
-rwxr-xr-xsys-apps/portage/files/1.5/bin/ebuild.sh16
-rwxr-xr-xsys-apps/portage/files/1.5/bin/emerge8
-rwxr-xr-xsys-apps/portage/files/1.5/pym/portage.py10
3 files changed, 25 insertions, 9 deletions
diff --git a/sys-apps/portage/files/1.5/bin/ebuild.sh b/sys-apps/portage/files/1.5/bin/ebuild.sh
index 142b5f009688..a634a9d69541 100755
--- a/sys-apps/portage/files/1.5/bin/ebuild.sh
+++ b/sys-apps/portage/files/1.5/bin/ebuild.sh
@@ -1,7 +1,11 @@
#!/bin/bash
-source /etc/profile
+source /etc/profile > /dev/null 2>&1
export PATH="/usr/lib/portage/bin:${PATH}"
-source /etc/rc.d/config/functions
+if [ -e /etc/rc.d/config/functions ]
+then
+ source /etc/rc.d/config/functions > /dev/null 2>&1
+fi
+
#if no perms are specified, dirs/files will have decent defaults
#(not secretive, but not stupid)
umask 022
@@ -615,8 +619,12 @@ dyn_help() {
#then
# source ${PEBUILD}
#fi
-source ${EBUILD}
-
+source ${EBUILD}
+if [ $? -ne 0 ]
+then
+ #abort if there was a parse problem
+ exit 1
+fi
#this is a little trick to define ${A} if it hasn't been defined yet
if [ "${A}" = "" ]
then
diff --git a/sys-apps/portage/files/1.5/bin/emerge b/sys-apps/portage/files/1.5/bin/emerge
index 3872d820038f..04074c63d9db 100755
--- a/sys-apps/portage/files/1.5/bin/emerge
+++ b/sys-apps/portage/files/1.5/bin/emerge
@@ -53,6 +53,9 @@ class depgraph:
mydep={}
myebuild=self.db[myroot]["porttree"].getname(mykey)
edepend=portage.doebuild(myebuild,"depend",1,edebug)
+ if edepend==1:
+ print "!!! emerge aborting."
+ sys.exit(1)
mydep={}
if portage.root=="/":
mydep["/"]=edepend[0]+" "+edepend[1]
@@ -189,8 +192,11 @@ class depgraph:
sys.exit(1)
def post_emerge(retval=0):
- root=portage.root
+ global myopts
print
+ if "--pretend" in myopts:
+ sys.exit(retval)
+ root=portage.root
if not os.path.isdir(root+"usr/share/info"):
print " "+root+"usr/share/info doesn't exist, skipping info regeneration."
elif not os.path.exists("/usr/bin/install-info"):
diff --git a/sys-apps/portage/files/1.5/pym/portage.py b/sys-apps/portage/files/1.5/pym/portage.py
index 8db5745e28b4..964f1f704320 100755
--- a/sys-apps/portage/files/1.5/pym/portage.py
+++ b/sys-apps/portage/files/1.5/pym/portage.py
@@ -484,13 +484,15 @@ def doebuild(myebuild,mydo,checkdeps=1,debug=0):
if checkdeps:
myso=getstatusoutput("/usr/sbin/ebuild.sh depend")
if myso[0]!=0:
- print "!!! Portage had a problem grabbing dependencies from:"
- print "!!!",settings["EBUILD"]
- print "!!! bash output was:"
print
+ print
+ print "!!! Portage had a problem processing this file:"
+ print "!!!",settings["EBUILD"]
+ print
print myso[1]
print
- print "!!! doebuild() aborting."
+ print "!!! aborting."
+ print
return 1
mydeps=string.split(myso[1],"\n")
if mydo=="depend":