Merged from trunk -r13103:13131
authorFabian Groffen <grobian@gentoo.org>
Wed, 18 Mar 2009 10:44:42 +0000 (10:44 -0000)
committerFabian Groffen <grobian@gentoo.org>
Wed, 18 Mar 2009 10:44:42 +0000 (10:44 -0000)
   | 13104    | Add missing brackets to [:upper:] and [:lower:] in          |
   | zmedico  | _sb_append_var() tr arguments.                              |

   | 13108    | Tweak grammar.                                              |
   | zmedico  |                                                             |

   | 13109    | Bug #262365 - Make the "portage.internal" category          |
   | zmedico  | (prepalldocs check) a warning instead of fatal.             |

   | 13113    | Add make.conf for amd64-fbsd submitted by Timothy Redaelli  |
   | zmedico  | <drizzt@g.o>.                                               |

   | 13114    | add m68k diff from kolla                                    |
   | SpankMan |                                                             |

   | 13115    | Do not create hardlinks when merging CONFIG_PROTECTed files |
   | zmedico  | since config files shouldn't be hardlinked to eachother     |
   |          | (for example, shadow installs several identical config      |
   |          | files inside /etc/pam.d/). Thanks to Caleb Cushing          |
   |          | <xenoterracide@gmail.com> for reporting.                    |

   | 13116    | Bug #262485 - Handle InvalidAtom from dep_expand().         |
   | zmedico  |                                                             |

   | 13117    | Punt fix-db.py since it's not really needed. It's been      |
   | zmedico  | broken since 2.1.6 and nobody noticed until bug #262132 was |
   |          | filed.                                                      |

   | 13118    | Bug #262365 - Punt the prepalldocs check until there is an  |
   | zmedico  | alternative available in EAPI 3.                            |

   | 13119    | Remove portage.internal docs (goes with previous commit).   |
   | zmedico  |                                                             |

   | 13126    | Validate argument atoms earlier for build actions.          |
   | zmedico  |                                                             |

   | 13130    | In order to avoid possible duplicate elog messages when     |
   | zmedico  | using ebuild(1) to call the same phase multiple times, wipe |
   |          | out elog log files for the current phase just before        |
   |          | executing the phase. Thanks to Mike Frysinger <vapier@g.o>  |
   |          | for reporting.                                              |

   | 13131    | Update copyright headers.                                   |
   | zmedico  |                                                             |

svn path=/main/branches/prefix/; revision=13133

14 files changed:
RELEASE-NOTES
bin/ebuild.sh
bin/emerge
bin/fix-db.py [deleted file]
bin/isolated-functions.sh
bin/quickpkg
bin/repoman
cnf/make.conf.amd64-fbsd.diff [new file with mode: 0644]
cnf/make.conf.m68k.diff [new file with mode: 0644]
man/repoman.1
pym/_emerge/__init__.py
pym/portage/dbapi/vartree.py
pym/repoman/checks.py
pym/repoman/errors.py

index 4e69005958cfb67c5838ef6f76bdf1ae16e04994..a38c165bc5fd64f28fe28792b62b57c0ec644d1c 100644 (file)
@@ -18,7 +18,7 @@ portage-2.2
   - packages won't be unmerged if they are referenced by an installed package
     set (with the exception of the world set, and installed being determined
     by the world_sets file).
-* "world" does no longer include "system" unconditionally, but you can add
+* "world" no longer includes "system" unconditionally, but you can add
   "@system" to the world_sets file to restore the old state.
 
 portage-2.1.6
index e3a7d18e4616cd73356b2498cb8b3d0a911e9c25..9429fb97d3a35a8b38d97a3664fd9bf24848ec45 100755 (executable)
@@ -87,7 +87,8 @@ export SANDBOX_ON="0"
 _sb_append_var() {
        local _v=$1 ; shift
        local var="SANDBOX_${_v}"
-       [[ -z $1 || -n $2 ]] && die "Usage: add$(echo ${_v} | LC_ALL=C tr :upper: :lower:) <colon-delimited list of paths>"
+       [[ -z $1 || -n $2 ]] && die "Usage: add$(echo ${_v} | \
+               LC_ALL=C tr [:upper:] [:lower:]) <colon-delimited list of paths>"
        export ${var}="${!var:+${!var}:}$1"
 }
 # bash-4 version:
@@ -642,6 +643,7 @@ ebuild_phase() {
 
 ebuild_phase_with_hooks() {
        local x phase_name=${1}
+       [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE"
        for x in {pre_,,post_}${phase_name} ; do
                ebuild_phase ${x}
        done
@@ -691,6 +693,7 @@ dyn_unpack() {
        if [ ! -d "${WORKDIR}" ]; then
                install -m${PORTAGE_WORKDIR_MODE:-0700} -d "${WORKDIR}" || die "Failed to create dir '${WORKDIR}'"
        fi
+       [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE"
        cd "${WORKDIR}" || die "Directory change failed: \`cd '${WORKDIR}'\`"
        ebuild_phase pre_src_unpack
        vecho ">>> Unpacking source..."
@@ -876,6 +879,7 @@ dyn_prepare() {
 
        trap abort_prepare SIGINT SIGQUIT
 
+       [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE"
        ebuild_phase pre_src_prepare
        vecho ">>> Preparing source in $srcdir ..."
        ebuild_phase src_prepare
@@ -896,6 +900,7 @@ dyn_configure() {
 
        trap abort_configure SIGINT SIGQUIT
 
+       [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE"
        ebuild_phase pre_src_configure
 
        vecho ">>> Configuring source in $srcdir ..."
@@ -918,6 +923,7 @@ dyn_compile() {
 
        trap abort_compile SIGINT SIGQUIT
 
+       [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE"
        ebuild_phase pre_src_compile
 
        vecho ">>> Compiling source in ${srcdir} ..."
@@ -955,6 +961,7 @@ dyn_test() {
        else
                local save_sp=${SANDBOX_PREDICT}
                addpredict /
+               [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE"
                ebuild_phase pre_src_test
                ebuild_phase src_test
                touch "$PORTAGE_BUILDDIR/.tested" || \
@@ -976,6 +983,7 @@ dyn_install() {
                return 0
        fi
        trap "abort_install" SIGINT SIGQUIT
+       [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE"
        ebuild_phase pre_src_install
        rm -rf "${PORTAGE_BUILDDIR}/image"
        mkdir "${PORTAGE_BUILDDIR}/image"
index a8bea23e3413e97133a902b5755f9aa73e09699d..9a96cb19eb31a719d3f46193bd0239f9470626a9 100755 (executable)
@@ -1,6 +1,6 @@
 #!@PORTAGE_PYTHON@
-# Copyright Gentoo Foundation 2006
-# Portage Emerge bits
+# Copyright 2006-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
 # $Id$
 
 import os
diff --git a/bin/fix-db.py b/bin/fix-db.py
deleted file mode 100755 (executable)
index aa2bd75..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-#!@PORTAGE_PYTHON@
-# Copyright 1999-2006 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-import os,sys,re
-
-# for an explanation on this logic, see pym/_emerge/__init__.py
-import os
-import sys
-if os.environ.__contains__("PORTAGE_PYTHONPATH"):
-       sys.path.insert(0, os.environ["PORTAGE_PYTHONPATH"])
-else:
-       sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), "pym"))
-import portage
-
-from stat import *
-from portage.output import *
-from portage import lockfile,unlockfile,VDB_PATH,root
-import portage.const
-
-
-mylog = open(portage.const.EPREFIX+"/var/log/emerge_fix-db.log", "a")
-def writemsg(msg):
-       if msg[-1] != '\n':
-               msg += "\n"
-       sys.stderr.write(msg)
-       sys.stderr.flush()
-       mylog.write(msg)
-       mylog.flush()
-
-def fix_global_counter(value):
-       myf = open(portage.const.EPREFIX+"/var/cache/edb/counter")
-       newvalue = value+1000
-       myf.write(str(newvalue))
-       myf.flush()
-       myf.close()
-       return newvalue
-
-bad = {}
-counters = {}
-times = {}
-
-try:
-       real_counter = long(open(portage.const.EPREFIX+"/var/cache/edb/counter").read())
-except SystemExit, e:
-       raise  # This needs to be propogated
-except:
-       writemsg("ERROR: Real counter is invalid.\n")
-       real_counter = 0
-
-vardbdir = root+VDB_PATH+"/"
-for cat in os.listdir(vardbdir):
-       catdir = vardbdir+cat+"/"
-       if not os.path.isdir(catdir):
-               writemsg("Invalid file: '%s'\n" % catdir[:-1])
-               continue
-       for pkg in os.listdir(catdir):
-               pkgdir = catdir+pkg+"/"
-               catpkg = cat+"/"+pkg
-
-               if not os.path.isdir(catdir):
-                       writemsg("Invalid file: '%s'\n" % pkgdir)
-                       continue
-                       
-               bad[catpkg] = []
-               
-               pkgdirlist = os.listdir(pkgdir)
-               if not pkgdirlist:
-                       writemsg("ERROR: Package directory is empty for '%s'\n" % catpkg)
-                       writemsg("       Deleting this directory. Remerge if you want it back.\n")
-                       os.rmdir(pkgdir)
-                       del bad[catpkg]
-                       continue
-               
-               if "CONTENTS" not in pkgdirlist:
-                       bad[catpkg] += ["CONTENTS is missing"]
-                       times[catpkg] = -1
-                       writemsg("ERROR: Contents file is missing from the package directory.\n")
-                       writemsg("       '%s' is corrupt and should be deleted.\n" % catpkg)
-               else:
-                       times[catpkg] = None
-                       for line in open(pkgdir+"CONTENTS").readlines():
-                               mysplit = line.split()
-                               if mysplit[0] == "obj":
-                                       try:
-                                               times[catpkg] = long(mysplit[-1])
-                                       except SystemExit, e:
-                                               raise  # This needs to be propogated
-                                       except:
-                                               times[catpkg] = -1
-                                               bad[catpkg] += ["CONTENTS is corrupt"]
-                                               writemsg("ERROR: Corrupt CONTENTS file in '%s'\n" % catpkg)
-                                               writemsg("       This package should be deleted.\n")
-                                       break
-                       if times[catpkg] == None:
-                               times[catpkg] = os.stat(pkgdir+"CONTENTS")[ST_MTIME]
-
-               if "COUNTER" not in pkgdirlist:
-                       bad[catpkg] += ["COUNTER is missing"]
-                       writemsg("ERROR: COUNTER file missing from '%s'.\n" % catpkg)
-                       counters[catpkg] = -1
-               else:
-                       try:
-                               counters[catpkg] = long(open(pkgdir+"COUNTER").read().strip())
-                               if counters[catpkg] > real_counter:
-                                       writemsg("ERROR: Global counter is lower than the '%s' COUNTER." % catpkg)
-                                       real_counter = fix_global_counter(counters[catpkg])
-                       except SystemExit, e:
-                               raise  # This needs to be propogated
-                       except:
-                               bad[catpkg] += ["COUNTER is corrupt"]
-                               counters[catpkg] = -1
-
-               if "SLOT" not in pkgdirlist:
-                       writemsg("ERROR: SLOT file missing from '%s'.\n" % catpkg)
-                       writemsg("       RE-MERGE this exact package version or unmerge and remerge.\n")
-                       bad[catpkg] += ["SLOT is missing"]
-               else:
-                       myslot = open(pkgdir+"SLOT").read()
-                       if myslot and myslot[-1]=="\n":
-                               #writemsg("WARN: SLOT file has a newline. '%s'\n" % catpkg)
-                               myslot = myslot[:-1]
-                       if not myslot:
-                               bad[catpkg] += ["SLOT is empty"]
-                               writemsg("ERROR: SLOT file is empty for '%s'.\n" % catpkg)
-                               writemsg("       RE-MERGE this exact package version or unmerge and remerge it.\n")
-                       elif re.search("[^-a-zA-Z0-9\._]", myslot):
-                               bad[catpkg] += ["SLOT is corrupt"]
-                               writemsg("ERROR: SLOT file is corrupt for '%s'.\n" % catpkg)
-                               writemsg("       RE-MERGE this exact package version or unmerge and remerge it.\n")
-                       elif myslot.strip() != myslot:
-                               writemsg("WARN: SLOT file has invalid characters. '%s'\n" % catpkg)
-                               bad[catpkg] += ["SLOT is invalid"]
-
-               if not bad[catpkg]:
-                       del bad[catpkg]
-
-
-actions = {}
-writemsg("\n\n")
-for catpkg in bad:
-       bad[catpkg].sort()
-
-       mystr = ""
-       for x in bad[catpkg]:
-               mystr += "   "+str(x)+"\n"
-
-       if bad[catpkg] == ["CONTENTS is missing", "SLOT is missing"]:
-               writemsg("%s: (possibly injected)\n%s\n" % (green(catpkg), mystr))
-               actions[catpkg] = ["ignore"]
-       elif bad[catpkg] == ["SLOT is empty"]:
-               writemsg("%s: (old package) []\n%s\n" % (yellow(catpkg), mystr))
-               actions[catpkg] = ["remerge"]
-       else:
-               writemsg("%s: (damaged/invalid) []\n%s\n" % (red(catpkg), mystr))
-               actions[catpkg] = ["merge exact"]
-
-if (len(sys.argv) > 1) and (sys.argv[1] == "--fix"):
-       writemsg("These are only directions, at the moment.")
-       for catpkg in actions:
-               action = actions[catpkg]
-               writemsg("We will now '%s' '%s'..." % (action, catpkg))
-               #if action == 
-else:
-       #writemsg("Run with '--fix' to attempt automatic correction.")
-       pass
-
index 839b8da28fe830624cab44eeaa1d27152a88d55d..4755d25ea6647d07111b3077eea864da23c225d4 100755 (executable)
@@ -1,4 +1,4 @@
-# Copyright 1999-2006 Gentoo Foundation
+# Copyright 1999-2009 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
index 44b1a4f39cc0d590d7e6d67319fb95a3c6b156bd..9223f2ea055c2fe293a793911fc9f2d80f15067c 100755 (executable)
@@ -18,7 +18,7 @@ def quickpkg_main(options, args, eout):
        from portage import catsplit, dep_expand, flatten, isvalidatom, xpak
        from portage.dep import use_reduce, paren_reduce
        from portage.util import ConfigProtect, ensure_dirs
-       from portage.exception import InvalidData, InvalidDependString
+       from portage.exception import InvalidAtom, InvalidData, InvalidDependString
        from portage.dbapi.vartree import dblink, tar_contents
        from portage.checksum import perform_md5
        import tarfile
@@ -51,15 +51,16 @@ def quickpkg_main(options, args, eout):
                        del e
                        missing.append(arg)
                        continue
-               except InvalidData, e:
-                       eout.eerror("Invalid atom: %s" % str(e))
-                       del e
+               except (InvalidAtom, InvalidData):
+                       eout.eerror("Invalid atom: %s" % (arg,))
                        missing.append(arg)
                        continue
-               if not isvalidatom(atom):
-                       eout.eerror("Invalid atom: %s" % atom)
+               if atom[:1] == '=' and arg[:1] != '=':
+                       # dep_expand() allows missing '=' but it's really invalid
+                       eout.eerror("Invalid atom: %s" % (arg,))
                        missing.append(arg)
                        continue
+
                matches = vardb.match(atom)
                pkgs_for_arg = 0
                for cpv in matches:
index 7d134b5b85f2075f3af6d44686b980bc9097fd16..058994440ba8b89fcbbc1342e349ece8fe383ab2 100755 (executable)
@@ -311,7 +311,6 @@ qahelp={
        "metadata.missing":"Missing metadata.xml files",
        "metadata.bad":"Bad metadata.xml files",
        "metadata.warning":"Warnings in metadata.xml files",
-       "portage.internal":"The ebuild uses an internal Portage function",
        "virtual.versioned":"PROVIDE contains virtuals with versions",
        "virtual.exists":"PROVIDE contains existing package names",
        "virtual.unavailable":"PROVIDE contains a virtual which contains no profile default",
diff --git a/cnf/make.conf.amd64-fbsd.diff b/cnf/make.conf.amd64-fbsd.diff
new file mode 100644 (file)
index 0000000..1ad4854
--- /dev/null
@@ -0,0 +1,61 @@
+--- make.conf  2006-03-19 18:40:11.000000000 +0100
++++ make.conf.amd64-fbsd       2006-03-19 18:26:21.000000000 +0100
+@@ -23,6 +23,11 @@
+ # Example:
+ #USE="X gtk gnome -alsa"
+ 
++# Host Setting
++# ============
++#
++CHOST="x86_64-gentoo-freebsd7.1"
++
+ # Host and optimization settings 
+ # ==============================
+ #
+@@ -33,10 +38,35 @@
+ # package (and in some cases the libraries it uses) at default optimizations
+ # before reporting errors to developers.
+ #
+-# Please refer to the GCC manual for a list of possible values.
++# -mcpu=<cpu-type> means optimize code for the particular type of CPU without
++# breaking compatibility with other CPUs. GCC 3.4 has deprecated support for
++# -mcpu, so use -mtune instead if using this compiler.
++#
++# -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.
++#
++# amd64 CPU types supported in gcc-3.4: athlon64, opteron, k8
++# 
++# 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. #
++# GCC 3.3 doesnt support an amd64 specific -march setting, use 3.4.         #
++# ************************************************************************* #
+ #
+-#CFLAGS="-O2 -pipe"
++# Decent examples:
+ #
++#CFLAGS="-mtune=k8 -O2 -pipe"
++#CFLAGS="-march=athlon64 -O2 -pipe"
++
+ # If you set a CFLAGS above, then this line will set your default C++ flags to
+ # the same settings.
+ #CXXFLAGS="${CFLAGS}"
+@@ -61,7 +91,7 @@
+ # DO NOT PUT ANYTHING BUT YOUR SPECIFIC ~ARCHITECTURE IN THE LIST.
+ # IF YOU ARE UNSURE OF YOUR ARCH, OR THE IMPLICATIONS, DO NOT MODIFY THIS.
+ #
+-#ACCEPT_KEYWORDS="~arch"
++#ACCEPT_KEYWORDS="~amd64-fbsd"
+ 
+ # Portage Directories
+ # ===================
diff --git a/cnf/make.conf.m68k.diff b/cnf/make.conf.m68k.diff
new file mode 100644 (file)
index 0000000..ac3d074
--- /dev/null
@@ -0,0 +1,34 @@
+--- make.conf
++++ make.conf.m68k
+@@ -23,6 +23,13 @@
+ # Example:
+ #USE="X gtk gnome -alsa"
+ 
++# Host Setting
++# ============
++#
++# m68k-unknown-linux-gnu for all m68k CPUs.
++#
++CHOST="m68k-unknown-linux-gnu"
++
+ # Host and optimization settings 
+ # ==============================
+ #
+@@ -35,7 +42,7 @@
+ #
+ # Please refer to the GCC manual for a list of possible values.
+ #
+-#CFLAGS="-O2 -pipe"
++#CFLAGS="-m68030 -pipe -Os"
+ #
+ # If you set a CFLAGS above, then this line will set your default C++ flags to
+ # the same settings.
+@@ -61,7 +68,7 @@
+ # DO NOT PUT ANYTHING BUT YOUR SPECIFIC ~ARCHITECTURE IN THE LIST.
+ # IF YOU ARE UNSURE OF YOUR ARCH, OR THE IMPLICATIONS, DO NOT MODIFY THIS.
+ #
+-#ACCEPT_KEYWORDS="~arch"
++#ACCEPT_KEYWORDS="~m68k"
+ 
+ # Portage Directories
+ # ===================
index b14cb17c2224d5942dc951bfbb64bc01eca74b37..6389a5fa2eeda4e3f6f3738f1177646fedbd0906 100644 (file)
@@ -279,9 +279,6 @@ Missing metadata.xml files
 .B metadata.warning
 Warnings in metadata.xml files
 .TP
-.B portage.internal
-The ebuild uses an internal Portage function
-.TP
 .B upstream.workaround
 The ebuild works around an upstream bug, an upstream bug should be filed and
 tracked in bugs.gentoo.org
index 54ea57340e8a9ac6fa3c7f5874e6819201210df8..314cec8c718c221cdce7bb6956fd6361f2280202 100644 (file)
@@ -15752,6 +15752,18 @@ def emerge_main():
        # "update", "system", or just process files:
        else:
                validate_ebuild_environment(trees)
+
+               for x in myfiles:
+                       if x.startswith(SETPREFIX) or \
+                               is_valid_package_atom(x):
+                               continue
+                       msg = []
+                       msg.append("'%s' is not a valid package atom." % (x,))
+                       msg.append("Please check ebuild(5) for full details.")
+                       writemsg_level("".join("!!! %s\n" % line for line in msg),
+                               level=logging.ERROR, noiselevel=-1)
+                       return 1
+
                if "--pretend" not in myopts:
                        display_news_notification(root_config, myopts)
                retval = action_build(settings, trees, mtimedb,
index 1cbdea35ef26eb984e3673a27b35fd8d9cf4ea60..3d485a59b2ae9dab35ace45eba72cf3c18b31153 100644 (file)
@@ -4305,6 +4305,7 @@ class dblink(object):
                                moveme = 1
                                zing = "!!!"
                                mymtime = None
+                               protected = self.isprotected(mydest)
                                if mydmode != None:
                                        # destination file exists
                                        if stat.S_ISDIR(mydmode):
@@ -4318,7 +4319,7 @@ class dblink(object):
                                                # or by a symlink to an existing regular file;
                                                # now, config file management may come into play.
                                                # we only need to tweak mydest if cfg file management is in play.
-                                               if self.isprotected(mydest):
+                                               if protected:
                                                        # we have a protection path; enable config file management.
                                                        destmd5 = perform_md5(mydest, calc_prelink=1)
                                                        if mymd5 == destmd5:
@@ -4355,21 +4356,28 @@ class dblink(object):
                                        # extract a tarball of the resulting hardlinks due to
                                        # 'Invalid cross-device link' errors (depends on layout of
                                        # mount points). Also, don't hardlink zero-byte files since
-                                       # it doesn't save any space.
+                                       # it doesn't save any space, and don't hardlink
+                                       # CONFIG_PROTECTed files since config files shouldn't be
+                                       # hardlinked to eachother (for example, shadow installs
+                                       # several identical config files inside /etc/pam.d/).
                                        parent_dir = os.path.dirname(myrealdest)
                                        hardlink_key = (parent_dir, mymd5, mystat.st_size,
                                                mystat.st_mode, mystat.st_uid, mystat.st_gid)
-                                       hardlink_candidates = self._md5_merge_map.get(hardlink_key)
-                                       if hardlink_candidates is None:
-                                               hardlink_candidates = []
-                                               if mystat.st_size != 0:
+
+                                       hardlink_candidates = None
+                                       if not protected and mystat.st_size != 0:
+                                               hardlink_candidates = self._md5_merge_map.get(hardlink_key)
+                                               if hardlink_candidates is None:
+                                                       hardlink_candidates = []
                                                        self._md5_merge_map[hardlink_key] = hardlink_candidates
+
                                        mymtime = movefile(mysrc, mydest, newmtime=thismtime,
                                                sstat=mystat, mysettings=self.settings,
                                                hardlink_candidates=hardlink_candidates)
                                        if mymtime is None:
                                                return 1
-                                       hardlink_candidates.append(mydest)
+                                       if hardlink_candidates is not None:
+                                               hardlink_candidates.append(mydest)
                                        zing = ">>>"
 
                                if mymtime != None:
index a9e29d2bed3fb9ab5a6df2682b2f814e71bef941..4588120578d9ab776dd963c772e50dc7cef99716 100644 (file)
@@ -345,15 +345,6 @@ class WantAutoDefaultValue(LineCheck):
                        return 'WANT_AUTO' + m.group(1) + \
                                ' redundantly set to default value "latest" on line: %d'
 
-class PortageInternal(LineCheck):
-       """
-       In February 2009 the Gentoo council ruled that
-       prepalldocs is a Portage internal.
-       """
-       repoman_check_name = 'portage.internal'
-       re = re.compile(r'[^#]*\bprepalldocs\b')
-       error = errors.PREPALLDOCS_ERROR
-
 _constant_checks = tuple((c() for c in (
        EbuildHeader, EbuildWhitespace, EbuildQuote,
        EbuildAssignment, EbuildUselessDodoc,
@@ -361,7 +352,7 @@ _constant_checks = tuple((c() for c in (
        EbuildPatches, EbuildQuotedA,
        IUseUndefined, ImplicitRuntimeDeps, InheritAutotools,
        EMakeParallelDisabled, EMakeParallelDisabledViaMAKEOPTS,
-       DeprecatedBindnowFlags, WantAutoDefaultValue, PortageInternal)))
+       DeprecatedBindnowFlags, WantAutoDefaultValue)))
 
 def run_checks(contents, pkg):
        checks = _constant_checks
index 451e499ad727f269ee03779803ca2c53221a36c4..2e13e0d67f45746c0737df1681731678515ce533 100644 (file)
@@ -16,4 +16,3 @@ REDUNDANT_CD_S_ERROR = 'Ebuild has redundant cd ${S} statement on line: %d'
 EMAKE_PARALLEL_DISABLED = 'Upstream parallel compilation bug (ebuild calls emake -j1 on line: %d)'
 EMAKE_PARALLEL_DISABLED_VIA_MAKEOPTS = 'Upstream parallel compilation bug (MAKEOPTS=-j1 on line: %d)'
 DEPRECATED_BINDNOW_FLAGS = 'Deprecated bindnow-flags call on line: %d'
-PREPALLDOCS_ERROR = 'prepalldocs called on line: %d'