* 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
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.
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"
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"
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):
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"
#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:
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:
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)"
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"
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
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=[]
else:
for y in fails[x]:
print " "+y
-print
def grouplist(mylist,seperator="/"):
"""(list,seperator="/") -- Takes a list of elements; groups them into
# 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
# ==============================
#
# 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}"
# 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
# =================
#
# 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
# =================
#
# 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
# =================
#
# 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
# =================
#
# 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
# =================
#
# 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
# =================
#
+++ /dev/null
-# 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
# 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
# =================
#
# 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
# =================
#
# 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
# =================
#
# 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
# =================
#
# 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
# =================
#
# 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
# =================
#
# 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
# =================
#
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"
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
.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
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")
bsd_chflags = None
try:
+ from cache.cache_errors import CacheError
import cvstree
import xpak
import getbinpkg
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)
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)
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