merge with trunk rev 2947:2966
authorKito <kito@gentoo.org>
Mon, 20 Mar 2006 21:12:29 +0000 (21:12 -0000)
committerKito <kito@gentoo.org>
Mon, 20 Mar 2006 21:12:29 +0000 (21:12 -0000)
svn path=/main/branches/prefix/; revision=2967

25 files changed:
NEWS
RELEASE-NOTES
bin/ebuild.sh
bin/emerge
bin/emerge-webrsync
bin/isolated-functions.sh
bin/repoman
cnf/make.conf
cnf/make.conf.alpha
cnf/make.conf.amd64
cnf/make.conf.arm
cnf/make.conf.hppa
cnf/make.conf.ia64
cnf/make.conf.mac [deleted file]
cnf/make.conf.mips
cnf/make.conf.ppc
cnf/make.conf.ppc64
cnf/make.conf.s390
cnf/make.conf.sparc
cnf/make.conf.x86
cnf/make.conf.x86-fbsd
cnf/make.globals
man/make.conf.5
pym/portage.py
pym/portage_util.py

diff --git a/NEWS b/NEWS
index 559e8415ce380ab2dae16fe4c5dffe33365f0358..c126c32115242968aa122fe845c0586003ed35b1 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -34,3 +34,4 @@ portage-2.1 (ongoing via pre releases)
 * Global updates and fixpackages performance optimizations.
 * Tests show that file locking is now more reliable.
 * A bash call stack is printed when an ebuild dies in ebuild.sh.
+* New rsync option handling by using a generic PORTAGE_RSYNC_EXTRA_OPTS variable
index 4a2747f5d2330781558835367414549a96b3c329..0e6753b12a1949f0247db22d1f5d49fd3f3bfe82 100644 (file)
@@ -16,3 +16,5 @@ portage-2.1
   for other actions)
 * Tools that call emerge should override the EMERGE_DEFAULT_OPTS environment
   variable or use the emerge --ignore-default-opts option.
+* rsync option handling has been redesigned, instead of RSYNC_* variables
+  use PORTAGE_RSYNC_EXTRA_OPTS from now on.
index 5b597671244d9b57467bf25f278f1a1cf0b00d1a..6ab87581b7aee3d9ce2c243d12419e9590c0d56d 100755 (executable)
@@ -52,8 +52,16 @@ export PATH="${DEFAULT_PATH}:${ROOTPATH}"
 
 source @PORTAGE_BASE@/bin/isolated-functions.sh &>/dev/null
 
-# TODO: make this conditional on config settings, fix any remaining stuff
-set_colors
+
+case "${NOCOLOR:-false}" in
+       yes|true)
+               unset_colors
+               ;;
+       no|false)
+               set_colors
+               ;;
+esac
+
 
 # the sandbox is disabled by default except when overridden in the relevant stages
 export SANDBOX_ON="0"
@@ -137,22 +145,6 @@ useq() {
        fi
 }
 
-has() {
-       hasq "$@"
-}
-
-hasv() {
-       if hasq "$@" ; then
-               echo "$1"
-               return 0
-       fi
-       return 1
-}
-
-hasq() {
-       [[ " ${*:2} " == *" $1 "* ]]
-}
-
 has_version() {
        if [ "${EBUILD_PHASE}" == "depend" ]; then
                die "portageq calls (has_version calls portageq) are not allowed in the global scope"
index 7604dc93dbf76ada3228b10121848e2e180f53a4..c7d8b493e6f8c90c3fd047e8c551d7b7f86e0f39 100755 (executable)
@@ -408,8 +408,14 @@ if ("--resume" in myopts):
                myopts.remove("--tree")
 
 # Set color output
-if ("--nocolor" in myopts) and (sys.stdout.isatty()):
+if "--nocolor" in myopts or \
+portage.settings["NOCOLOR"] in ("yes","true"):
        nocolor()
+       if "NOCOLOR" not in portage.settings:
+               portage.settings.unlock()
+               portage.settings["NOCOLOR"] = "true"
+               portage.settings.backup_changes("NOCOLOR")
+               portage.settings.lock()
 
 if not ("--quiet" in myopts):
        if not sys.stdout.isatty() or ("--nospinner" in myopts):
@@ -2504,53 +2510,105 @@ if myaction in ["sync","metadata"] and (not "--help" in myopts):
                        print "!!! Type \"emerge net-misc/rsync\" to enable rsync support."
                        sys.exit(1)
                mytimeout=180
-               if portage.settings.has_key("RSYNC_TIMEOUT"):
-                       try:
-                               mytimeout=int(portage.settings["RSYNC_TIMEOUT"])
-                       except SystemExit, e:
-                               raise # Needed else can't exit
-                       except:
-                               pass
-
-               rsync_flags = [
-                       "--recursive",    # Recurse directories
-                       "--links",        # Consider symlinks
-                       "--safe-links",   # Ignore links outside of tree
-                       "--perms",        # Preserve permissions
-                       "--times",        # Preserive mod times
-                       "--compress",     # Compress the data transmitted
-                       "--force",        # Force deletion on non-empty dirs
-                       "--whole-file",   # Don't do block transfers, only entire files
-                       "--delete",       # Delete files that aren't in the master tree
-                       "--delete-after", # Delete only after everything else is done
-                       "--stats",        # Show final statistics about what was transfered
-                       "--timeout="+str(mytimeout), # IO timeout if not done in X seconds
-                       "--exclude='/distfiles'",   # Exclude distfiles from consideration
-                       "--exclude='/local'",       # Exclude local     from consideration
-                       "--exclude='/packages'",    # Exclude packages  from consideration
-               ]
+
+               rsync_opts = []
+
+               if portage.settings["PORTAGE_RSYNC_OPTS"] == "":
+                       portage.writemsg("PORTAGE_RSYNC_OPTS empty or unset, using hardcoded defaults\n")
+                       rsync_opts.extend([
+                               "--recursive",    # Recurse directories
+                               "--links",        # Consider symlinks
+                               "--safe-links",   # Ignore links outside of tree
+                               "--perms",        # Preserve permissions
+                               "--times",        # Preserive mod times
+                               "--compress",     # Compress the data transmitted
+                               "--force",        # Force deletion on non-empty dirs
+                               "--whole-file",   # Don't do block transfers, only entire files
+                               "--delete",       # Delete files that aren't in the master tree
+                               "--delete-after", # Delete only after everything else is done
+                               "--stats",        # Show final statistics about what was transfered
+                               "--timeout="+str(mytimeout), # IO timeout if not done in X seconds
+                               "--exclude='/distfiles'",   # Exclude distfiles from consideration
+                               "--exclude='/local'",       # Exclude local     from consideration
+                               "--exclude='/packages'",    # Exclude packages  from consideration
+                       ])
+
+               else:
+                       # The below validation is not needed when using the above hardcoded
+                       # defaults.
+
+                       portage.writemsg("Using PORTAGE_RSYNC_OPTS instead of hardcoded defaults\n")
+                       rsync_opts.extend(portage.settings["PORTAGE_RSYNC_OPTS"].split())
+
+                       for opt in ("--recursive", "--times"):
+                               if opt not in rsync_opts:
+                                       portage.writemsg(yellow("WARNING:") + " adding required option " + \
+                                       "%s not included in PORTAGE_RSYNC_OPTS\n" % opt)
+                                       rsync_opts.append(opt)
+       
+                       for exclude in ("distfiles", "local", "packages"):
+                               opt = "--exclude='/%s'" % exclude
+                               if opt not in rsync_opts:
+                                       portage.writemsg(yellow("WARNING:") + \
+                                       " adding required option %s not included in "  % opt + \
+                                       "PORTAGE_RSYNC_OPTS (override with --exclude='!')\n")
+                                       rsync_opts.append(opt)
+       
+                       if portage.settings["RSYNC_TIMEOUT"] != "":
+                               portage.writemsg("WARNING: usage of RSYNC_TIMEOUT is deprecated, " + \
+                               "use PORTAGE_RSYNC_OPTS instead\n")
+                               try:
+                                       mytimeout = int(portage.settings["RSYNC_TIMEOUT"])
+                                       rsync_opts.append("--timeout=%d" % mytimeout)
+                               except ValueError, e:
+                                       portage.writemsg("!!! %s\n" % str(e))
+       
+                       # TODO: determine options required for official servers
+                       if syncuri.rstrip("/").endswith(".gentoo.org/gentoo-portage"):
+
+                               def rsync_opt_startswith(opt_prefix):
+                                       for x in rsync_opts:
+                                               if x.startswith(opt_prefix):
+                                                       return True
+                                       return False
+
+                               if not rsync_opt_startswith("--timeout="):
+                                       rsync_opts.append("--timeout=%d" % mytimeout)
+
+                               for opt in ("--compress", "--whole-file"):
+                                       if opt not in rsync_opts:
+                                               portage.writemsg(yellow("WARNING:") + " adding required option " + \
+                                               "%s not included in PORTAGE_RSYNC_OPTS\n" % opt)
+                                               rsync_opts.append(opt)
 
                if "--quiet" in myopts:
-                       rsync_flags.append("--quiet")    # Shut up a lot
+                       rsync_opts.append("--quiet")    # Shut up a lot
                else:
-                       rsync_flags.append("--progress") # Progress meter for each file
+                       rsync_opts.append("--progress") # Progress meter for each file
 
                if "--verbose" in myopts:
-                       rsync_flags.append("--verbose")  # More noise? Not really sure what
+                       rsync_opts.append("--verbose")  # More noise? Not really sure what
 
                if "--debug" in myopts:
-                       rsync_flags.append("--checksum") # Force checksum on all files
+                       rsync_opts.append("--checksum") # Force checksum on all files
 
-               if portage.settings.has_key("RSYNC_EXCLUDEFROM"):
+               if portage.settings["RSYNC_EXCLUDEFROM"] != "":
+                       portage.writemsg(yellow("WARNING:") + \
+                       " usage of RSYNC_EXCLUDEFROM is deprecated, use " + \
+                       "PORTAGE_RSYNC_EXTRA_OPTS instead\n")
                        if os.path.exists(portage.settings["RSYNC_EXCLUDEFROM"]):
-                               rsync_flags.append("--exclude-from="+portage.settings["RSYNC_EXCLUDEFROM"])
+                               rsync_opts.append("--exclude-from=%s" % \
+                               portage.settings["RSYNC_EXCLUDEFROM"])
                        else:
-                               print "!!! RSYNC_EXCLUDEFROM specified, but file does not exist."
+                               portage.writemsg("!!! RSYNC_EXCLUDEFROM specified," + \
+                               " but file does not exist.\n")
 
-               if portage.settings.has_key("RSYNC_RATELIMIT"):
-                       rsync_flags.append("--bwlimit="+portage.settings["RSYNC_RATELIMIT"])
-
-               rsynccommand = "rsync " + string.join(rsync_flags, " ")
+               if portage.settings["RSYNC_RATELIMIT"] != "":
+                       portage.writemsg(yellow("WARNING:") + \
+                       " usage of RSYNC_RATELIMIT is deprecated, use " + \
+                       "PORTAGE_RSYNC_EXTRA_OPTS instead")
+                       rsync_opts.append("--bwlimit=%s" % \
+                       portage.settings["RSYNC_RATELIMIT"])
 
                servertimestampdir  = portage.settings.depcachedir+"/"
                servertimestampfile = portage.settings.depcachedir+"/timestamp.chk"
@@ -2579,7 +2637,11 @@ if myaction in ["sync","metadata"] and (not "--help" in myopts):
 
                #exitcode=0
                try:
-                       maxretries=int(portage.settings["RSYNC_RETRIES"])
+                       if portage.settings.has_key("RSYNC_RETRIES"):
+                               print yellow("WARNING:")+" usage of RSYNC_RETRIES is deprecated, use PORTAGE_RSYNC_RETRIES instead"
+                               maxretries=int(portage.settings["RSYNC_RETRIES"])                               
+                       else:
+                               maxretries=int(portage.settings["PORTAGE_RSYNC_RETRIES"])
                except SystemExit, e:
                        raise # Needed else can't exit
                except:
@@ -2629,7 +2691,17 @@ if myaction in ["sync","metadata"] and (not "--help" in myopts):
 
                        if "--quiet" not in myopts:
                                print ">>> Checking server timestamp ..."
-                       mycommand=rsynccommand+" "+dosyncuri+"/metadata/timestamp.chk "+tmpservertimestampdir
+
+                       rsynccommand = " ".join(["/usr/bin/rsync",
+                               portage.settings["PORTAGE_RSYNC_EXTRA_OPTS"],
+                               " ".join(rsync_opts)])
+
+                       if "--debug" in myopts:
+                               print rsynccommand
+
+                       mycommand = " ".join([rsynccommand,
+                               dosyncuri + "/metadata/timestamp.chk",
+                               tmpservertimestampdir])
                        exitcode=portage.spawn(mycommand,portage.settings,free=1)
                        if (exitcode==0):
                                try:
index 882f66061bb3607d2d268185898428ac4ecc59c5..91c32f5f7607e17b678c4e51b5713b891575c917 100755 (executable)
@@ -12,6 +12,8 @@ if [ -n "${PORTAGE_NICENESS}" ]; then
        renice $PORTAGE_NICENESS $$ > /dev/null
 fi
 
+source @PORTAGE_BASE@/bin/isolated-functions.sh || exit 1
+FEATURES="$(@PORTAGE_BASE@/bin/portageq envvar FEATURES)"
 GENTOO_MIRRORS="${GENTOO_MIRRORS} $(@PORTAGE_BASE@/bin/portageq gentoo_mirrors)"
 PORTDIR="$(@PORTAGE_BASE@/bin/portageq portdir)"
 FETCHCOMMAND="$(@PORTAGE_BASE@/bin/portageq envvar FETCHCOMMAND)"
@@ -74,8 +76,10 @@ sync_local() {
                echo "cleaning up"
                rm -rf portage
        fi
-       echo "transferring metadata/cache"
-       emerge --metadata
+       if hasq metadata-transfer ${FEATURES} ; then
+               echo "transferring metadata/cache"
+               emerge --metadata
+       fi
 }
 
 echo "Fetching most recent snapshot"
index 20be25e77ee4a866f9773724e86beb6ce25fdc58..c257a10d50c478e18b79bf1b8e40dea532b6d384 100644 (file)
@@ -206,4 +206,21 @@ RC_ENDCOL="yes"
 RC_INDENTATION=''
 RC_DEFAULT_INDENT=2
 RC_DOT_PATTERN=''
+
+has() {
+       hasq "$@"
+}
+
+hasv() {
+       if hasq "$@" ; then
+               echo "$1"
+               return 0
+       fi
+       return 1
+}
+
+hasq() {
+       [[ " ${*:2} " == *" $1 "* ]]
+}
+
 true
index 9ca26e69f50bfc93e1dc43e272cc6c5f6f288103..d57ac4e36c85fc003ebfe643de01d25c82acb154 100755 (executable)
@@ -1064,7 +1064,7 @@ for x in scanlist:
                                stats["KEYWORDS.stupid"] += 1
                                fails["KEYWORDS.stupid"].append(x+"/"+y+".ebuild")
                
-               if "--ignore-other-arches" in myoptions:
+               if "--ignore-arches" in myoptions:
                        arches=[[repoman_settings["ARCH"], repoman_settings["ARCH"], portage.groups]]
                else:
                        arches=[]
@@ -1401,7 +1401,6 @@ for x in qacats:
        else:
                for y in fails[x]:
                        print "   "+y
-print
 
 def grouplist(mylist,seperator="/"):
        """(list,seperator="/") -- Takes a list of elements; groups them into
index 863fb957e8974b5d22b20f023be9d3a0b422865e..d993464ca9500d43138fb4c70b973f85f09be9d7 100644 (file)
 # Example:
 #USE="X gtk gnome -alsa"
 
-# Host Setting
-# ============
-#
-# DO NOT CHANGE THIS SETTING UNLESS YOU ARE USING STAGE1!
-# Change this line as appropriate (i686, i586, i486 or i386).
-# All modern systems (even Athlons) should use "i686-pc-linux-gnu".
-# All K6's are i586.
-CHOST="i686-pc-linux-gnu"
-
 # Host and optimization settings 
 # ==============================
 #
@@ -42,34 +33,10 @@ CHOST="i686-pc-linux-gnu"
 # package (and in some cases the libraries it uses) at default optimizations
 # before reporting errors to developers.
 #
-# -mcpu=<cpu-type> means optimize code for the particular type of CPU without
-# breaking compatibility with other CPUs.
-#
-# -march=<cpu-type> means to take full advantage of the ABI and instructions
-# for the particular CPU; this will break compatibility with older CPUs (for
-# example, -march=athlon-xp code will not run on a regular Athlon, and
-# -march=i686 code will not run on a Pentium Classic.
-#
-# CPU types supported in gcc-3.2 and higher: athlon-xp, athlon-mp,
-# athlon-tbird, athlon, k6, k6-2, k6-3, i386, i486, i586 (Pentium), i686
-# (PentiumPro), pentium, pentium-mmx, pentiumpro, pentium2 (Celeron),
-# pentium3, and pentium4.
-#
-# Note that Gentoo Linux 1.4 and higher include at least gcc-3.2.
-# 
-# CPU types supported in gcc-2.95*: k6, i386, i486, i586 (Pentium), i686
-# (Pentium Pro), pentium, pentiumpro Gentoo Linux 1.2 and below use gcc-2.95*
-#
-# CRITICAL WARNINGS: ****************************************************** #
-# K6 markings are deceptive. Avoid setting -march for them. See Bug #24379. #
-# Pentium-M CPU's should not enable sse2 until at least gcc-3.4. Bug 50616. #
-# ************************************************************************* #
+# Please refer to the GCC manual for a list of possible values.
 #
-# Decent examples:
+#CFLAGS="-O2 -pipe"
 #
-#CFLAGS="-mcpu=athlon-xp -O3 -pipe"
-#CFLAGS="-march=pentium3 -O3 -pipe"
-
 # If you set a CFLAGS above, then this line will set your default C++ flags to
 # the same settings.
 #CXXFLAGS="${CFLAGS}"
@@ -207,18 +174,17 @@ CHOST="i686-pc-linux-gnu"
 #   Australia:     "rsync://rsync.au.gentoo.org/gentoo-portage"
 #SYNC="rsync://rsync.gentoo.org/gentoo-portage"
 #
-# RSYNC_RETRIES sets the number of times portage will attempt to retrieve
+# PORTAGE_RSYNC_RETRIES sets the number of times portage will attempt to retrieve
 #     a current portage tree before it exits with an error. This allows
 #     for a more successful retrieval without user intervention most times.
-#RSYNC_RETRIES="3"
-#
-# RSYNC_TIMEOUT sets the length of time rsync will wait before it times out
-#     on a connection. Most users will benefit from this setting as it will
-#     reduce the amount of 'dead air' they experience when they run across
-#     the occasional, unreachable mirror. Dialup users might want to set this
-#     value up around the 300 second mark.
-#RSYNC_TIMEOUT=180
-
+#PORTAGE_RSYNC_RETRIES="3"
+#
+# PORTAGE_RSYNC_EXTRA_OPTS can be used to feed additional options to the rsync
+#     command used by `emerge --sync`. This will not change the default options
+#     which are set by PORTAGE_RSYNC_OPTS (don't change those unless you know 
+#     exactly what you're doing).
+#PORTAGE_RSYNC_EXTRA_OPTS=""
+#
 # Advanced Features
 # =================
 #
index 613c2abb4c3beee34544bc007e4b725366e5c793..6a5609d61618bd64ba85ab95264a0619565e4dd5 100644 (file)
@@ -193,18 +193,17 @@ CFLAGS="-mcpu=ev5 -O3 -pipe "
 #   Australia:     "rsync://rsync.au.gentoo.org/gentoo-portage"
 #SYNC="rsync://rsync.gentoo.org/gentoo-portage"
 #
-# RSYNC_RETRIES sets the number of times portage will attempt to retrieve
+# PORTAGE_RSYNC_RETRIES sets the number of times portage will attempt to retrieve
 #     a current portage tree before it exits with an error. This allows
 #     for a more successful retrieval without user intervention most times.
-#RSYNC_RETRIES="3"
-#
-# RSYNC_TIMEOUT sets the length of time rsync will wait before it times out
-#     on a connection. Most users will benefit from this setting as it will
-#     reduce the amount of 'dead air' they experience when they run across
-#     the occasional, unreachable mirror. Dialup users might want to set this
-#     value up around the 300 second mark.
-#RSYNC_TIMEOUT=180
-
+#PORTAGE_RSYNC_RETRIES="3"
+#
+# PORTAGE_RSYNC_EXTRA_OPTS can be used to feed additional options to the rsync
+#     command used by `emerge --sync`. This will not change the default options
+#     which are set by PORTAGE_RSYNC_OPTS (don't change those unless you know 
+#     exactly what you're doing).
+#PORTAGE_RSYNC_EXTRA_OPTS=""
+#
 # Advanced Features
 # =================
 #
index ef4ef32126ea47d425b152b2e6d6abc7f3f80da3..2b83eb56667ab4cc9f9fca1f410b816a791a756f 100644 (file)
@@ -204,18 +204,17 @@ CHOST="x86_64-pc-linux-gnu"
 #   Australia:     "rsync://rsync.au.gentoo.org/gentoo-portage"
 #SYNC="rsync://rsync.gentoo.org/gentoo-portage"
 #
-# RSYNC_RETRIES sets the number of times portage will attempt to retrieve
+# PORTAGE_RSYNC_RETRIES sets the number of times portage will attempt to retrieve
 #     a current portage tree before it exits with an error. This allows
 #     for a more successful retrieval without user intervention most times.
-#RSYNC_RETRIES="3"
-#
-# RSYNC_TIMEOUT sets the length of time rsync will wait before it times out
-#     on a connection. Most users will benefit from this setting as it will
-#     reduce the amount of 'dead air' they experience when they run across
-#     the occasional, unreachable mirror. Dialup users might want to set this
-#     value up around the 300 second mark.
-#RSYNC_TIMEOUT=180
-
+#PORTAGE_RSYNC_RETRIES="3"
+#
+# PORTAGE_RSYNC_EXTRA_OPTS can be used to feed additional options to the rsync
+#     command used by `emerge --sync`. This will not change the default options
+#     which are set by PORTAGE_RSYNC_OPTS (don't change those unless you know 
+#     exactly what you're doing).
+#PORTAGE_RSYNC_EXTRA_OPTS=""
+#
 # Advanced Features
 # =================
 #
index ccb4e47b572766aa6f7d5b00b8de2fb823ca957d..d9a4bdacb17af1597345bec3fcac1129f0e4e72b 100644 (file)
@@ -201,18 +201,17 @@ CHOST="armv4l-unknown-linux-gnu"
 #   Australia:     "rsync://rsync.au.gentoo.org/gentoo-portage"
 #SYNC="rsync://rsync.gentoo.org/gentoo-portage"
 #
-# RSYNC_RETRIES sets the number of times portage will attempt to retrieve
+# PORTAGE_RSYNC_RETRIES sets the number of times portage will attempt to retrieve
 #     a current portage tree before it exits with an error. This allows
 #     for a more successful retrieval without user intervention most times.
-#RSYNC_RETRIES="3"
-#
-# RSYNC_TIMEOUT sets the length of time rsync will wait before it times out
-#     on a connection. Most users will benefit from this setting as it will
-#     reduce the amount of 'dead air' they experience when they run across
-#     the occasional, unreachable mirror. Dialup users might want to set this
-#     value up around the 300 second mark.
-#RSYNC_TIMEOUT=180
-
+#PORTAGE_RSYNC_RETRIES="3"
+#
+# PORTAGE_RSYNC_EXTRA_OPTS can be used to feed additional options to the rsync
+#     command used by `emerge --sync`. This will not change the default options
+#     which are set by PORTAGE_RSYNC_OPTS (don't change those unless you know 
+#     exactly what you're doing).
+#PORTAGE_RSYNC_EXTRA_OPTS=""
+#
 # Advanced Features
 # =================
 #
index 892fa51c415dc8a2b2de48eff3407108b569ec92..ffe0e32db3fef5f593336a930a4e17ff55804705 100644 (file)
@@ -210,18 +210,17 @@ CHOST="hppa-unknown-linux-gnu"
 #   Australia:     "rsync://rsync.au.gentoo.org/gentoo-portage"
 #SYNC="rsync://rsync.gentoo.org/gentoo-portage"
 #
-# RSYNC_RETRIES sets the number of times portage will attempt to retrieve
+# PORTAGE_RSYNC_RETRIES sets the number of times portage will attempt to retrieve
 #     a current portage tree before it exits with an error. This allows
 #     for a more successful retrieval without user intervention most times.
-#RSYNC_RETRIES="3"
-#
-# RSYNC_TIMEOUT sets the length of time rsync will wait before it times out
-#     on a connection. Most users will benefit from this setting as it will
-#     reduce the amount of 'dead air' they experience when they run across
-#     the occasional, unreachable mirror. Dialup users might want to set this
-#     value up around the 300 second mark.
-#RSYNC_TIMEOUT=180
-
+#PORTAGE_RSYNC_RETRIES="3"
+#
+# PORTAGE_RSYNC_EXTRA_OPTS can be used to feed additional options to the rsync
+#     command used by `emerge --sync`. This will not change the default options
+#     which are set by PORTAGE_RSYNC_OPTS (don't change those unless you know 
+#     exactly what you're doing).
+#PORTAGE_RSYNC_EXTRA_OPTS=""
+#
 # Advanced Features
 # =================
 #
index 95df49395c8b37aeffc65c895237374a22777e69..270111443c01234a54b24158a06c9d53bfd57043 100644 (file)
@@ -172,18 +172,17 @@ CHOST="ia64-unknown-linux-gnu"
 #   Australia:     "rsync://rsync.au.gentoo.org/gentoo-portage"
 #SYNC="rsync://rsync.gentoo.org/gentoo-portage"
 #
-# RSYNC_RETRIES sets the number of times portage will attempt to retrieve
+# PORTAGE_RSYNC_RETRIES sets the number of times portage will attempt to retrieve
 #     a current portage tree before it exits with an error. This allows
 #     for a more successful retrieval without user intervention most times.
-#RSYNC_RETRIES="3"
-#
-# RSYNC_TIMEOUT sets the length of time rsync will wait before it times out
-#     on a connection. Most users will benefit from this setting as it will
-#     reduce the amount of 'dead air' they experience when they run across
-#     the occasional, unreachable mirror. Dialup users might want to set this
-#     value up around the 300 second mark.
-#RSYNC_TIMEOUT=180
-
+#PORTAGE_RSYNC_RETRIES="3"
+#
+# PORTAGE_RSYNC_EXTRA_OPTS can be used to feed additional options to the rsync
+#     command used by `emerge --sync`. This will not change the default options
+#     which are set by PORTAGE_RSYNC_OPTS (don't change those unless you know 
+#     exactly what you're doing).
+#PORTAGE_RSYNC_EXTRA_OPTS=""
+#
 # Advanced Features
 # =================
 #
diff --git a/cnf/make.conf.mac b/cnf/make.conf.mac
deleted file mode 100644 (file)
index 292d9a5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-# Copyright 1999-2006 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id: /var/cvsroot/gentoo-src/portage/cnf/make.conf.mac,v 1.2 2004/09/30 06:34:27 vapier Exp $
-# Contains local system settings for Portage system
-
-#Nothing needed here 
index 8602b00e26bb9ce9d6df069364b7139b6ba92056..16ac25b9d05b2c09cc60852e1a2f9afa9635608b 100644 (file)
@@ -190,18 +190,17 @@ CHOST="mips-unknown-linux-gnu"
 #   Australia:     "rsync://rsync.au.gentoo.org/gentoo-portage"
 #SYNC="rsync://rsync.gentoo.org/gentoo-portage"
 #
-# RSYNC_RETRIES sets the number of times portage will attempt to retrieve
+# PORTAGE_RSYNC_RETRIES sets the number of times portage will attempt to retrieve
 #     a current portage tree before it exits with an error. This allows
 #     for a more successful retrieval without user intervention most times.
-#RSYNC_RETRIES="3"
-#
-# RSYNC_TIMEOUT sets the length of time rsync will wait before it times out
-#     on a connection. Most users will benefit from this setting as it will
-#     reduce the amount of 'dead air' they experience when they run across
-#     the occasional, unreachable mirror. Dialup users might want to set this
-#     value up around the 300 second mark.
-#RSYNC_TIMEOUT=180
-
+#PORTAGE_RSYNC_RETRIES="3"
+#
+# PORTAGE_RSYNC_EXTRA_OPTS can be used to feed additional options to the rsync
+#     command used by `emerge --sync`. This will not change the default options
+#     which are set by PORTAGE_RSYNC_OPTS (don't change those unless you know 
+#     exactly what you're doing).
+#PORTAGE_RSYNC_EXTRA_OPTS=""
+#
 # Advanced Features
 # =================
 #
index 1b6ebcc77939455003c91974fe870f40cb9e5d2d..5bfc411bb392c81ae75be700cd73c9a5f6eadb2e 100644 (file)
@@ -230,18 +230,17 @@ CHOST="powerpc-unknown-linux-gnu"
 #   Australia:     "rsync://rsync.au.gentoo.org/gentoo-portage"
 #SYNC="rsync://rsync.gentoo.org/gentoo-portage"
 #
-# RSYNC_RETRIES sets the number of times portage will attempt to retrieve
+# PORTAGE_RSYNC_RETRIES sets the number of times portage will attempt to retrieve
 #     a current portage tree before it exits with an error. This allows
 #     for a more successful retrieval without user intervention most times.
-#RSYNC_RETRIES="3"
-#
-# RSYNC_TIMEOUT sets the length of time rsync will wait before it times out
-#     on a connection. Most users will benefit from this setting as it will
-#     reduce the amount of 'dead air' they experience when they run across
-#     the occasional, unreachable mirror. Dialup users might want to set this
-#     value up around the 300 second mark.
-#RSYNC_TIMEOUT=180
-
+#PORTAGE_RSYNC_RETRIES="3"
+#
+# PORTAGE_RSYNC_EXTRA_OPTS can be used to feed additional options to the rsync
+#     command used by `emerge --sync`. This will not change the default options
+#     which are set by PORTAGE_RSYNC_OPTS (don't change those unless you know 
+#     exactly what you're doing).
+#PORTAGE_RSYNC_EXTRA_OPTS=""
+#
 # Advanced Features
 # =================
 #
index 80c4e1fbaea6ed659eb5b95b9d00cb430f6956ab..f0816ead8bf714634bd1ca9ee13c4e5432410cb2 100644 (file)
@@ -214,18 +214,17 @@ CHOST="powerpc64-unknown-linux-gnu"
 #   Australia:     "rsync://rsync.au.gentoo.org/gentoo-portage"
 #SYNC="rsync://rsync.gentoo.org/gentoo-portage"
 #
-# RSYNC_RETRIES sets the number of times portage will attempt to retrieve
+# PORTAGE_RSYNC_RETRIES sets the number of times portage will attempt to retrieve
 #     a current portage tree before it exits with an error. This allows
 #     for a more successful retrieval without user intervention most times.
-#RSYNC_RETRIES="3"
-#
-# RSYNC_TIMEOUT sets the length of time rsync will wait before it times out
-#     on a connection. Most users will benefit from this setting as it will
-#     reduce the amount of 'dead air' they experience when they run across
-#     the occasional, unreachable mirror. Dialup users might want to set this
-#     value up around the 300 second mark.
-#RSYNC_TIMEOUT=180
-
+#PORTAGE_RSYNC_RETRIES="3"
+#
+# PORTAGE_RSYNC_EXTRA_OPTS can be used to feed additional options to the rsync
+#     command used by `emerge --sync`. This will not change the default options
+#     which are set by PORTAGE_RSYNC_OPTS (don't change those unless you know 
+#     exactly what you're doing).
+#PORTAGE_RSYNC_EXTRA_OPTS=""
+#
 # Advanced Features
 # =================
 #
index f1f612711a6c48562e94009429cefc0820a39036..55f727b4f73051fef012e8406a3c0e6319175846 100644 (file)
@@ -172,18 +172,17 @@ CHOST="s390-ibm-linux-gnu"
 #   Australia:     "rsync://rsync.au.gentoo.org/gentoo-portage"
 #SYNC="rsync://rsync.gentoo.org/gentoo-portage"
 #
-# RSYNC_RETRIES sets the number of times portage will attempt to retrieve
+# PORTAGE_RSYNC_RETRIES sets the number of times portage will attempt to retrieve
 #     a current portage tree before it exits with an error. This allows
 #     for a more successful retrieval without user intervention most times.
-#RSYNC_RETRIES="3"
-#
-# RSYNC_TIMEOUT sets the length of time rsync will wait before it times out
-#     on a connection. Most users will benefit from this setting as it will
-#     reduce the amount of 'dead air' they experience when they run across
-#     the occasional, unreachable mirror. Dialup users might want to set this
-#     value up around the 300 second mark.
-#RSYNC_TIMEOUT=180
-
+#PORTAGE_RSYNC_RETRIES="3"
+#
+# PORTAGE_RSYNC_EXTRA_OPTS can be used to feed additional options to the rsync
+#     command used by `emerge --sync`. This will not change the default options
+#     which are set by PORTAGE_RSYNC_OPTS (don't change those unless you know 
+#     exactly what you're doing).
+#PORTAGE_RSYNC_EXTRA_OPTS=""
+#
 # Advanced Features
 # =================
 #
index 637bc174ef1d61b8334b8ac3125479ae54926054..13605c53c01329a639bb56568755a5009c3c5f31 100644 (file)
 #   Australia:     "rsync://rsync.au.gentoo.org/gentoo-portage"
 #SYNC="rsync://rsync.gentoo.org/gentoo-portage"
 #
-# RSYNC_RETRIES sets the number of times portage will attempt to retrieve
+# PORTAGE_RSYNC_RETRIES sets the number of times portage will attempt to retrieve
 #     a current portage tree before it exits with an error. This allows
 #     for a more successful retrieval without user intervention most times.
-#RSYNC_RETRIES="3"
-#
-# RSYNC_TIMEOUT sets the length of time rsync will wait before it times out
-#     on a connection. Most users will benefit from this setting as it will
-#     reduce the amount of 'dead air' they experience when they run across
-#     the occasional, unreachable mirror. Dialup users might want to set this
-#     value up around the 300 second mark.
-#RSYNC_TIMEOUT=180
-
+#PORTAGE_RSYNC_RETRIES="3"
+#
+# PORTAGE_RSYNC_EXTRA_OPTS can be used to feed additional options to the rsync
+#     command used by `emerge --sync`. This will not change the default options
+#     which are set by PORTAGE_RSYNC_OPTS (don't change those unless you know 
+#     exactly what you're doing).
+#PORTAGE_RSYNC_EXTRA_OPTS=""
+#
 # Advanced Features
 # =================
 #
index f1272ccd396a079633cf1d2bc2d843e0d38948bc..c053d7256080ef6cdbf125d054f27e2876aa459f 100644 (file)
@@ -207,18 +207,17 @@ CHOST="i686-pc-linux-gnu"
 #   Australia:     "rsync://rsync.au.gentoo.org/gentoo-portage"
 #SYNC="rsync://rsync.gentoo.org/gentoo-portage"
 #
-# RSYNC_RETRIES sets the number of times portage will attempt to retrieve
+# PORTAGE_RSYNC_RETRIES sets the number of times portage will attempt to retrieve
 #     a current portage tree before it exits with an error. This allows
 #     for a more successful retrieval without user intervention most times.
-#RSYNC_RETRIES="3"
-#
-# RSYNC_TIMEOUT sets the length of time rsync will wait before it times out
-#     on a connection. Most users will benefit from this setting as it will
-#     reduce the amount of 'dead air' they experience when they run across
-#     the occasional, unreachable mirror. Dialup users might want to set this
-#     value up around the 300 second mark.
-#RSYNC_TIMEOUT=180
-
+#PORTAGE_RSYNC_RETRIES="3"
+#
+# PORTAGE_RSYNC_EXTRA_OPTS can be used to feed additional options to the rsync
+#     command used by `emerge --sync`. This will not change the default options
+#     which are set by PORTAGE_RSYNC_OPTS (don't change those unless you know 
+#     exactly what you're doing).
+#PORTAGE_RSYNC_EXTRA_OPTS=""
+#
 # Advanced Features
 # =================
 #
index 8e4ba35415bb6fed47615508b6015fed1c288547..53571185a3403a90099741bdba8ac030432df327 100644 (file)
@@ -207,18 +207,17 @@ CHOST="i686-unknown-freebsd5.3"
 #   Australia:     "rsync://rsync.au.gentoo.org/gentoo-portage"
 #SYNC="rsync://rsync.gentoo.org/gentoo-portage"
 #
-# RSYNC_RETRIES sets the number of times portage will attempt to retrieve
+# PORTAGE_RSYNC_RETRIES sets the number of times portage will attempt to retrieve
 #     a current portage tree before it exits with an error. This allows
 #     for a more successful retrieval without user intervention most times.
-#RSYNC_RETRIES="3"
-#
-# RSYNC_TIMEOUT sets the length of time rsync will wait before it times out
-#     on a connection. Most users will benefit from this setting as it will
-#     reduce the amount of 'dead air' they experience when they run across
-#     the occasional, unreachable mirror. Dialup users might want to set this
-#     value up around the 300 second mark.
-#RSYNC_TIMEOUT=180
-
+#PORTAGE_RSYNC_RETRIES="3"
+#
+# PORTAGE_RSYNC_EXTRA_OPTS can be used to feed additional options to the rsync
+#     command used by `emerge --sync`. This will not change the default options
+#     which are set by PORTAGE_RSYNC_OPTS (don't change those unless you know 
+#     exactly what you're doing).
+#PORTAGE_RSYNC_EXTRA_OPTS=""
+#
 # Advanced Features
 # =================
 #
index f5deb0dd5c0e03c44f5014bc6540fcbceeac8c0d..2f53e9318f27865f36be1726a3593c2279afac3c 100644 (file)
@@ -49,10 +49,12 @@ EMERGE_WARNING_DELAY="10"
 AUTOCLEAN="yes"
 
 # Number of times 'emerge --sync' will run before giving up.
-RSYNC_RETRIES="3"
+PORTAGE_RSYNC_RETRIES="3"
 
 # Number of seconds rsync will wait before timing out.
-RSYNC_TIMEOUT="180"
+#RSYNC_TIMEOUT="180"
+
+PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude='/distfiles' --exclude='/local' --exclude='/packages'"
 
 # Minimal CONFIG_PROTECT
 CONFIG_PROTECT="@DOMAIN_PREFIX@/etc"
index ae0a67bf580dccad98065e1849e92580328ce694..cf4116953a9b68446eada5adabc958f79c0f5955 100644 (file)
@@ -298,6 +298,24 @@ emerge is running at.  In other words, this will not set the nice level,
 it will increment it.  For more information about nice levels and what 
 are acceptable ranges, see \fBnice\fR(1).
 .TP
+\fBPORTAGE_RSYNC_EXTRA_OPTS\fR = \fI[rsync options string]\fR
+Additional rsync options to be used by \fBemerge --sync\fR.
+.br
+Defaults to no value.
+.TP
+\fBPORTAGE_RSYNC_OPTS\fR = \fI[rsync options string]\fR
+Default rsync options to be used by \fBemerge --sync\fR. 
+.br
+\fBDon't change this unless you know exactly what you're doing!\fR
+.br
+Defaults to "--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude='/distfiles' --exclude='/local' --exclude='/packages'"
+.TP
+\fBPORTAGE_RSYNC_RETRIES\fR = \fI[NUMBER]\fR
+The number of times rsync should retry on failed connections before
+giving up.
+.br
+Defaults to 3.
+.TP
 \fBPORTAGE_TMPDIR\fR = \fI[path]\fR
 Defines the location of the temporary build directories.
 .br
@@ -330,26 +348,6 @@ images.
 .br
 Defaults to /.
 .TP
-\fBRSYNC_EXCLUDEFROM\fR = \fI"/etc/portage/rsync_excludes"\fR
-This is a file that portage will pass to rsync when it updates the portage 
-tree.  Specific chucks of the tree may be excluded from the sync process.  
-This may cause dependency failures if you are not careful.  The file format 
-is one pattern per line, blanks and ';' or '#' lines are comments.  See 
-\fBrsync\fR(1) for more details.
-.TP
-\fBRSYNC_RETRIES\fR = \fI[NUMBER]\fR
-The number of times rsync should retry on failed connections before
-giving up.
-.br
-Defaults to 3.
-.TP
-\fBRSYNC_TIMEOUT\fR = \fI[SECONDS]\fR
-The number of seconds rsync should remain idle before it determines the
-connection has timed out. Dialup users may need to set this value at or
-above 300 seconds.
-.br
-Defaults to 180 seconds.
-.TP
 \fBRPMDIR\fR = \fI[path]\fR
 Defines the location where created RPM packages will be stored.
 .br
index 0d71ec03e09c10e180f91950881441f60e00d8cb..e397be41bb6ca1cdc7e9fca563ebe0d290794d64 100644 (file)
@@ -30,10 +30,9 @@ try:
        import commands
        from time import sleep
        from random import shuffle
-       from cache.cache_errors import CacheError
 except ImportError, e:
        sys.stderr.write("\n\n")
-       sys.stderr.write("!!! Failed to complete python imports. There are internal modules for\n")
+       sys.stderr.write("!!! Failed to complete python imports. These are internal modules for\n")
        sys.stderr.write("!!! python and failure here indicates that you have a problem with python\n")
        sys.stderr.write("!!! itself and thus portage is not able to continue processing.\n\n")
 
@@ -50,6 +49,7 @@ except ImportError:
        bsd_chflags = None
 
 try:
+       from cache.cache_errors import CacheError
        import cvstree
        import xpak
        import getbinpkg
@@ -1644,15 +1644,17 @@ def spawn(mystring,mysettings,debug=0,free=0,droppriv=0,sesandbox=0,fd_pipes=Non
 
        if free:
                keywords["opt_name"] += " bash"
+               spawn_func = portage_exec.spawn_bash
        else:
                keywords["opt_name"] += " sandbox"
+               spawn_func = portage_exec.spawn_sandbox
 
        if sesandbox:
                con = selinux.getcontext()
                con = string.replace(con, mysettings["PORTAGE_T"], mysettings["PORTAGE_SANDBOX_T"])
                selinux.setexec(con)
 
-       retval = portage_exec.spawn_bash(mystring, env=env, **keywords)
+       retval = spawn_func(mystring, env=env, **keywords)
 
        if sesandbox:
                selinux.setexec(None)
@@ -2118,24 +2120,22 @@ def digestgen(myarchives,mysettings,overwrite=1,manifestonly=0):
                if mydigests==None: # There was a problem, exit with an errorcode.
                        return 0
 
-               try:
-                       outfile=open(digestfn, "w+")
-               except SystemExit, e:
-                       raise
-               except Exception, e:
-                       print "!!! Filesystem error skipping generation. (Read-Only?)"
-                       print "!!!",e
-                       return 0
-               for x in digestCreateLines(myarchives, mydigests):
-                       outfile.write(x+"\n")
-               outfile.close()
-               try:
-                       os.chown(digestfn,os.getuid(),portage_gid)
-                       os.chmod(digestfn,0664)
-               except SystemExit, e:
-                       raise
-               except Exception,e:
-                       print e
+               if mydigests != myolddigest:
+                       digest_lines = digestCreateLines(myarchives, mydigests)
+                       digest_success = True
+                       try:
+                               write_atomic(digestfn, "\n".join(digest_lines) + "\n")
+                               digest_success = apply_secpass_permissions(
+                                       digestfn, gid=portage_gid, mode=0664)
+                       except (IOError, OSError), e:
+                               writemsg("!!! %s\n" % str(e))
+                               digest_success = False
+                       except portage_exception.PortageException:
+                               writemsg("!!! %s\n" % str(e))
+                               digest_success = False
+                       if not digest_success:
+                               writemsg("!!! Filesystem error, skipping generation.\n")
+                               return 0
 
        print green(">>> Generating the manifest file...")
        mypfiles=listdir(pbasedir,recursive=1,filesonly=1,ignorecvs=1,EmptyOnError=1)
index aa84fa74e2e7f5de96cd158d31c81e3441d8ad9c..ae5312175d104b2b2a51aa03adcd2152f501560f 100644 (file)
@@ -628,6 +628,11 @@ class atomic_ofstream(file):
                                                pass
                                        except FileNotFound:
                                                pass
+                                       except OSError, oe: # from the above os.stat call
+                                               if oe.errno in (errno.ENOENT, errno.EPERM):
+                                                       pass
+                                               else:
+                                                       raise
                                        os.rename(self.name, self._real_name)
                        finally:
                                # Make sure we cleanup the temp file