order and detection of circular dependencies.
* The world and system sets allow automatic update of all installed slots.
* DEPEND atoms support SLOT dependencies of the form ${CATEGORY}/${PN}:${SLOT}.
-* Development: Extend PORTAGE_PYM_PATH support to allow overriding the hardcoded
+* Development: Extend PYTHONPATH support to allow overriding the hardcoded
/usr/lib/portage/pym for development/testing purposes
portage-2.1.1
#
import os, sys, string
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
+try:
+ import portage
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage
-import portage, dispatch_conf
+import dispatch_conf
FIND_EXTANT_CONTENTS = "find %s -name CONTENTS"
# the right files).
import string, os.path, os, sys
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
-import portage
+try:
+ import portage
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage
def CONTENTScheck(path):
try:
# $Id: /var/cvsroot/gentoo-src/portage/bin/clean_locks,v 1.1 2004/09/26 10:44:31 carpaski Exp $
import os,sys,errno
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
+try:
+ import portage_locks
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage_locks
-import portage_locks, portage_const
+import portage_const
if not sys.argv[1:] or "--help" in sys.argv or "-h" in sys.argv:
print
# dialog menus
#
+if not hasattr(__builtins__, "set"):
+ from sets import Set as set
+
from stat import *
from random import *
import atexit, commands, os, re, shutil, stat, string, sys
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
+try:
+ import portage
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage
-import portage, dispatch_conf, portage_const
+import dispatch_conf, portage_const
+from portage_exec import find_binary
FIND_EXTANT_CONFIGS = "find '%s' %s -iname '._cfg????_%s'"
DIFF_CONTENTS = 'diff -Nu %s %s'
return False
+ # config file freezing support
+ frozen_files = set(self.options.get("frozen-files", "").split())
+ auto_zapped = []
+
#
# Remove new configs identical to current
# and
if os.path.exists(mrgconf):
os.unlink(mrgconf)
return False
+ elif conf['current'] in frozen_files:
+ """Frozen files are automatically zapped. The new config has
+ already been archived with a .new suffix. When zapped, it is
+ left with the .new suffix (post_process is skipped), since it
+ hasn't been merged into the current config."""
+ auto_zapped.append(conf['current'])
+ os.unlink(conf['new'])
+ try:
+ os.unlink(mrgconf)
+ except OSError:
+ pass
+ return False
elif unmodified or same_cvs or same_wsc or conf ['dir'] in portage.settings ['CONFIG_PROTECT_MASK'].split ():
self.replace(newconf, conf['current'])
self.post_process(conf['current'])
else:
continue
+ if auto_zapped:
+ print
+ print " One or more updates are frozen and have been automatically zapped:"
+ print
+ for frozen in auto_zapped:
+ print " * '%s'" % frozen
+ print
def replace (self, newconf, curconf):
"""Replace current config with the new/merged version. Also logs
os.environ["FEATURES"] = os.environ.get("FEATURES", "") + " -noauto"
os.environ["PORTAGE_CALLER"]="ebuild"
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
+try:
+ import portage
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage
-import portage, portage_util, portage_const
+import portage_util, portage_const
# do this _after_ 'import portage' to prevent unnecessary tracing
if debug and "python-trace" in portage.features:
#!@PYTHON@ -O
import sys, os
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
from optparse import OptionParser, OptionValueError
import re
+try:
+ import portage
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage
-import os, portage, portage_const, portage_exception
+import portage_const, portage_exception
class WorldHandler(object):
def name():
sys.exit(1)
import os, stat
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
os.environ["PORTAGE_LEGACY_GLOBALS"] = "false"
-import portage
+try:
+ import portage
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage
del os.environ["PORTAGE_LEGACY_GLOBALS"]
from portage import digraph
# $Id: /var/cvsroot/gentoo-src/portage/bin/env-update,v 1.9 2004/10/04 13:56:50 vapier Exp $
import os,sys
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
def usage(status):
print "Usage: env-update [--no-ldconfig]"
print "!!! Invalid command line options!\n"
usage(1)
-import portage
+try:
+ import portage
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage
portage.env_update(makelinks)
# $Id: /var/cvsroot/gentoo-src/portage/bin/fix-db.py,v 1.8 2004/10/11 04:01:00 jstubbs Exp $
import os,sys,re
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
+
+try:
+ import portage
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage
from stat import *
from output import *
import os,sys
os.environ["PORTAGE_CALLER"]="fixpackages"
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
-
-import portage
+try:
+ import portage
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage
print
print "Done."
import os,sys,string
os.environ["FEATURES"]="mirror cvs"
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
-
-import portage
+try:
+ import portage
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage
from threading import *
from output import red,green,blue,bold
from random import shuffle
# $Id: /var/cvsroot/gentoo-src/portage/bin/pkgname,v 1.8 2004/10/04 13:56:50 vapier Exp $
import sys, os
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
-
-import portage
+try:
+ import portage
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage
a=portage.pkgsplit(sys.argv[1])
if a:
sys.exit(1)
import os
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
import types,string
if uses_root:
os.environ["ROOT"] = sys.argv[2]
global portage
- import portage
+ try:
+ import portage
+ except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage
if uses_root:
sys.argv[2] = portage.root
function(sys.argv[2:])
# $Id: /var/cvsroot/gentoo-src/portage/bin/regenworld,v 1.10.2.1 2005/01/11 03:40:57 carpaski Exp $
import sys, os
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
-import portage, string, re, portage_const
+try:
+ import portage
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage
+import string, re, portage_const
__candidatematcher__ = re.compile("^[0-9]+: \\*\\*\\* emerge ")
__noncandidatematcher__ = re.compile(" sync( |$)| clean( |$)| search( |$)|--oneshot|--fetchonly| unmerge( |$)")
if not hasattr(__builtins__, "set"):
from sets import Set as set
exename=os.path.basename(sys.argv[0])
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
version="1.2"
allowed_filename_chars="a-zA-Z0-9._-+:"
import string,signal,re,pickle,tempfile
os.environ["PORTAGE_LEGACY_GLOBALS"] = "false"
-import portage
+try:
+ import portage
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import portage
del os.environ["PORTAGE_LEGACY_GLOBALS"]
import portage_checksum
print "xpak: expecting three arguments."
sys.exit(1)
-sys.path.insert(0, os.environ.get("PORTAGE_PYM_PATH", "@PORTAGE_BASE@/pym"))
+try:
+ import xpak
+except ImportError:
+ sys.path.insert(0, "@PORTAGE_BASE@/pym")
+ import xpak
-import xpak
xpak.xpak(sys.argv[1],sys.argv[2])
# Per-session log file of changes made to configuration files
#log-file=/var/log/dispatch-conf.log
+
+# List of frozen files for which dispatch-conf will automatically zap updates
+#frozen-files=""
\fImake options\fR \\
install
.fi
-Please do \fBnot\fR use this in place of 'make install DESTDIR=${D}'.
+Please do \fBnot\fR use this in place of 'emake install DESTDIR=${D}'.
That is the preferred way of installing make-based packages. Also, do
not utilize the \fIEXTRA_EINSTALL\fR variable since it is for users.
if best_match:
defaults.append(cpdict[best_match])
defaults = " ".join(defaults)
- if defaults != self.configdict["defaults"]["USE"]:
+ if defaults != self.configdict["defaults"].get("USE",""):
self.configdict["defaults"]["USE"] = defaults
has_changed = True
useforce = []