Merged from trunk -r11372:11387
authorFabian Groffen <grobian@gentoo.org>
Sun, 10 Aug 2008 09:37:51 +0000 (09:37 -0000)
committerFabian Groffen <grobian@gentoo.org>
Sun, 10 Aug 2008 09:37:51 +0000 (09:37 -0000)
   | 11373   | Bug #234157 - Remove BUILD_PREFIX from the docs since it's   |
   | zmedico | not a user config variable.                                  |

   | 11374   | Bug #234100 - Update date and portage version in man page    |
   | zmedico | headers.                                                     |

   | 11375   | * Use shlex.split() for splitting COLLISION_IGNORE. * Define |
   | zmedico | __all__.                                                     |

   | 11376   | Add write_contents() and tar_contents() functions to         |
   | zmedico | __all__.                                                     |

   | 11377   | Fix dyn_clean() to properly clean                            |
   | zmedico | $PORTAGE_BUILDDIR/.configured.                               |

   | 11378   | Make the scheduler's job delay ramp up faster by increasing  |
   | zmedico | the factor to 1.0 and adding an exponent of 1.5.             |

   | 11379   | Eliminate duplicate code by making _eapi1_src_compile() call |
   | zmedico | _eapi2_src_configure().                                      |

   | 11380   | Remove pointless `cd` calls in dyn_configure() and           |
   | zmedico | dyn_compile().                                               |

   | 11381   | Remove INHERITED from the vardbapi aux_get cache since it's  |
   | zmedico | not really that useful (@live-rebuild currently pulls        |
   |         | INHERITED from the highest visible ebuild). Also adjust keys |
   |         | used to pull metadata for Package instances, so that         |
   |         | INHERITED won't get pulled from the vardbapi anymore.        |

   | 11382   | Fix typo.                                                    |
   | zmedico |                                                              |

   | 11383   | Add new sections for EAPI 0 and 1 (currently empty).         |
   | zmedico |                                                              |

   | 11384   | Document the differences between EAPIs 0 and 1.              |
   | zmedico |                                                              |

   | 11385   | Add sample code for the new src_configure and src_compile    |
   | zmedico | phase functions.                                             |

   | 11386   | Remove most references to Package.metadata_keys and replace  |
   | zmedico | them with approriate keys for the given package type.        |

   | 11387   | Move the default EAPI definition where it will work in any   |
   | zmedico | case it might be necessary, such as after loading an exising |
   |         | environment.                                                 |

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

20 files changed:
bin/ebuild.sh
doc/package/ebuild.docbook
doc/package/ebuild/eapi/0.docbook [new file with mode: 0644]
doc/package/ebuild/eapi/1.docbook [new file with mode: 0644]
doc/package/ebuild/eapi/2.docbook
doc/portage.docbook
man/color.map.5
man/dispatch-conf.1
man/ebuild.1
man/ebuild.5
man/emaint.1
man/emerge.1
man/env-update.1
man/etc-update.1
man/make.conf.5
man/portage.5
man/quickpkg.1
man/repoman.1
pym/_emerge/__init__.py
pym/portage/dbapi/vartree.py

index 08aa8341d0031f82e4ee9e615bd80fafa1553010..faa0c5d9f484fc76da9f586527c5eec7b351e1d8 100755 (executable)
@@ -623,9 +623,7 @@ _eapi0_src_test() {
 }
 
 _eapi1_src_compile() {
-       if [[ -x ${ECONF_SOURCE:-.}/configure ]] ; then
-               econf
-       fi
+       _eapi2_src_configure
        _eapi2_src_compile
 }
 
@@ -737,12 +735,9 @@ dyn_clean() {
        fi
 
        if ! hasq keepwork $FEATURES; then
-               rm -rf "${PORTAGE_BUILDDIR}/.exit_status"
-               rm -rf "${PORTAGE_BUILDDIR}/.logid"
-               rm -rf "${PORTAGE_BUILDDIR}/.unpacked"
-               rm -rf "${PORTAGE_BUILDDIR}/.compiled"
-               rm -rf "${PORTAGE_BUILDDIR}/.tested"
-               rm -rf "${PORTAGE_BUILDDIR}/.packaged"
+               rm -f "$PORTAGE_BUILDDIR"/.{exit_status,logid,unpacked} \
+                       "$PORTAGE_BUILDDIR"/.{configured,compiled,tested,packaged}
+
                rm -rf "${PORTAGE_BUILDDIR}/build-info"
                rm -rf "${WORKDIR}"
        fi
@@ -889,10 +884,9 @@ dyn_configure() {
 
        vecho ">>> Configuring source in $srcdir ..."
        ebuild_phase src_configure
+       touch "$PORTAGE_BUILDDIR"/.configured
        vecho ">>> Source configured."
-       #|| abort_configure "fail"
-       cd "$PORTAGE_BUILDDIR"
-       touch .configured
+
        [[ $(type -t post_src_configure) = function ]] && \
                qa_call post_src_configure
 
@@ -914,10 +908,9 @@ dyn_compile() {
 
        vecho ">>> Compiling source in ${srcdir} ..."
        ebuild_phase src_compile
+       touch "$PORTAGE_BUILDDIR"/.compiled
        vecho ">>> Source compiled."
-       #|| abort_compile "fail"
-       cd "${PORTAGE_BUILDDIR}"
-       touch .compiled
+
        [ "$(type -t post_src_compile)" == "function" ] && qa_call post_src_compile
 
        trap SIGINT SIGQUIT
@@ -1896,11 +1889,6 @@ if ! hasq ${EBUILD_PHASE} clean && \
                debug-print "RDEPEND: not set... Setting to: ${DEPEND}"
        fi
 
-       # Set default EAPI if necessary, so that most
-       # code can simply assume that it's defined.
-       # PREFIX HACK: ignore prefix, and then respect it again
-       [[ -n ${EAPI/prefix/} ]] || EAPI="${EAPI}${EAPI:+ }0"
-
        # add in dependency info from eclasses
        IUSE="${IUSE} ${E_IUSE}"
        DEPEND="${DEPEND} ${E_DEPEND}"
@@ -1911,6 +1899,11 @@ if ! hasq ${EBUILD_PHASE} clean && \
        set +f
 fi
 
+# Set default EAPI if necessary, so that most
+# code can simply assume that it's defined.
+# PREFIX HACK: ignore prefix, and then respect it again
+[[ -n ${EAPI/prefix/} ]] || EAPI="${EAPI}${EAPI:+ }0"
+
 # enable bashrc support for the clean phase
 [[ ${EBUILD_PHASE} == clean ]] && source_all_bashrcs
 
index fa4f75609f13fb6850b55c221fc097cd446d8eeb..162b79c53d75ef998724980295d68461cbd5a920 100644 (file)
@@ -2,5 +2,7 @@
 <title>Ebuild</title>
 &package_ebuild_phases;
 &package_ebuild_helper_functions;
+&package_ebuild_eapi_0;
+&package_ebuild_eapi_1;
 &package_ebuild_eapi_2;
 </chapter>
diff --git a/doc/package/ebuild/eapi/0.docbook b/doc/package/ebuild/eapi/0.docbook
new file mode 100644 (file)
index 0000000..72e998b
--- /dev/null
@@ -0,0 +1,19 @@
+<sect1 id='package-ebuild-eapi-0'>
+       <title>EAPI 0</title>
+       <sect2 id='package-ebuild-eapi-0-phases'>
+               <title>Phases</title>
+               <sect3 id='package-ebuild-eapi-0-phases-default-src-compile'>
+                       <title>Default src_compile Phase Function</title>
+                       <programlisting>
+src_compile() {
+       if [ -x ./configure ] ; then
+               econf
+       fi
+       if [ -f Makefile ] || [ -f GNUmakefile ] || [ -f makefile ] ; then
+               emake || die "emake failed"
+       fi
+}
+                       </programlisting>
+               </sect3>
+       </sect2>
+</sect1>
diff --git a/doc/package/ebuild/eapi/1.docbook b/doc/package/ebuild/eapi/1.docbook
new file mode 100644 (file)
index 0000000..ad84ae6
--- /dev/null
@@ -0,0 +1,54 @@
+<sect1 id='package-ebuild-eapi-1'>
+       <title>EAPI 1</title>
+       <sect2 id='package-ebuild-eapi-1-phases'>
+               <title>Phases</title>
+               <sect3 id='package-ebuild-eapi-1-phases-default-src-compile'>
+                       <title>Default src_compile Phase Function</title>
+                       <para>
+                       Support for the ECONF_SOURCE variable, which is also supported
+                       by econf, has been added to the default src_compile implementation.
+                       </para>
+                       <programlisting>
+src_compile() {
+       if [[ -x ${ECONF_SOURCE:-.}/configure ]] ; then
+               econf
+       fi
+       if [ -f Makefile ] || [ -f GNUmakefile ] || [ -f makefile ] ; then
+               emake || die "emake failed"
+       fi
+}
+                       </programlisting>
+               </sect3>
+       </sect2>
+       <sect2 id='package-ebuild-eapi-1-slot-deps'>
+       <title>SLOT Dependencies</title>
+       <para>
+       Any valid atom can be constrained to match a specific SLOT. This is
+       accomplished by appending a colon to the atom, followed by a SLOT value.
+       </para>
+       <table><title>Slot Dependency Examples</title>
+       <tgroup cols='1' align='left' >
+       <colspec colname='atom'/>
+       <thead>
+       <row>
+       <entry>Atom</entry>
+       </row>
+       </thead>
+       <tbody>
+       <row>
+       <entry>x11-libs/qt:3</entry>
+       </row>
+       <row>
+       <entry>~x11-libs/qt-3.3.8:3</entry>
+       </row>
+       <row>
+       <entry>&gt;=x11-libs/qt-3.3.8:3</entry>
+       </row>
+       <row>
+       <entry>=x11-libs/qt-3.3*:3</entry>
+       </row>
+       </tbody>
+       </tgroup>
+       </table>
+       </sect2>
+</sect1>
index 1bd1c986cb705e0a1f267be6c6bf25290b5e5f32..8e152f21d79de260833b9677af3312603b92b752 100644 (file)
                        src_configure function is called in between the src_unpack and
                        src_compile functions.
                        </para>
+                       <programlisting>
+src_configure() {
+       if [[ -x ${ECONF_SOURCE:-.}/configure ]] ; then
+               econf
+       fi
+}
+
+src_compile() {
+       if [ -f Makefile ] || [ -f GNUmakefile ] || [ -f makefile ] ; then
+               emake || die "emake failed"
+       fi
+}
+                       </programlisting>
                        <table><title>Execution Order of Phase Functions</title>
                                <tgroup cols='1' align='left' >
                                <colspec colname='name'/>
index c038079a25d0639228203241d83a1d7503b8bb0d..bfe9750d3f4a51cfa5f21c6c85124fdc353589cb 100644 (file)
@@ -15,6 +15,8 @@
        <!ENTITY package_ebuild SYSTEM "package/ebuild.docbook">
        <!ENTITY package_ebuild_phases SYSTEM "package/ebuild/phases.docbook">
        <!ENTITY package_ebuild_helper_functions SYSTEM "package/ebuild/helper_functions.docbook">
+       <!ENTITY package_ebuild_eapi_0 SYSTEM "package/ebuild/eapi/0.docbook">
+       <!ENTITY package_ebuild_eapi_1 SYSTEM "package/ebuild/eapi/1.docbook">
        <!ENTITY package_ebuild_eapi_2 SYSTEM "package/ebuild/eapi/2.docbook">
        <!ENTITY qa SYSTEM "qa.docbook">
        <!ENTITY config SYSTEM "config.docbook">
index 39f76a4cb882eff14ea63cc13c5e83d15e3b4c6e..7b11ba23a4b854bb5d0a41bab35c4b024f28cdab 100644 (file)
@@ -1,4 +1,4 @@
-.TH "COLOR.MAP" "5" "Jul 2007" "Portage 2.1.3" "Portage"
+.TH "COLOR.MAP" "5" "Aug 2008" "Portage 2.2" "Portage"
 .SH "NAME"
 color.map \- custom color settings for Portage
 .SH "SYNOPSIS"
index 5bc34b210a899cd098df4362819ab96c4f6f6f98..a19ca1fbce083ac0767bb2ffc38c1a332b76c3ac 100644 (file)
@@ -1,4 +1,4 @@
-.TH "DISPATCH-CONF" "1" "Dec 2005" "Portage 2.1" "Portage"
+.TH "DISPATCH-CONF" "1" "Aug 2008" "Portage 2.2" "Portage"
 .SH NAME
 dispatch-conf \- Sanely update configuration files after emerging new packages
 .SH SYNOPSIS
index 5fa2f8116b819eee788dc13cf0088656e60994a9..1bbb004e4249e74ca0b6f8b89884a8eb15514326 100644 (file)
@@ -1,4 +1,4 @@
-.TH "EBUILD" "1" "Jun 2007" "Portage 2.1.3" "Portage"
+.TH "EBUILD" "1" "Aug 2008" "Portage 2.2" "Portage"
 .SH "NAME"
 ebuild \- a low level interface to the Portage system
 .SH "SYNOPSIS"
index d4af35d17fa8e8aa1438d0fbc8fa359c1b4c156b..ef5f2136e072df31dfa62e16d8a3cc44de38d416 100644 (file)
@@ -1,4 +1,4 @@
-.TH "EBUILD" "5" "Jun 2007" "Portage 2.1.3" "Portage"
+.TH "EBUILD" "5" "Aug 2008" "Portage 2.2" "Portage"
 .SH "NAME"
 ebuild \- the internal format, variables, and functions in an ebuild script
 .SH "DESCRIPTION"
index 2cf31420fdc6fa924f32f6664ae1cc39c2b24c32..31624b2086bee045f0d5e8833e73b046c0c6d389 100644 (file)
@@ -1,4 +1,4 @@
-.TH "EMAINT" "1" "Dec 2005" "Portage 2.1" "Portage"
+.TH "EMAINT" "1" "Aug 2008" "Portage 2.2" "Portage"
 .SH NAME
 emaint \- performs system health checks and maintenance
 .SH SYNOPSIS
index e92f85d2e9a3fc1ef2b5219d2098929c734903c4..65a893e9ca0a68e3c3a6d1655197caec8b8402d6 100644 (file)
@@ -1,4 +1,4 @@
-.TH "EMERGE" "1" "Jun 2007" "Portage 2.1.3" "Portage"
+.TH "EMERGE" "1" "Aug 2008" "Portage 2.2" "Portage"
 .SH "NAME"
 emerge \- Command\-line interface to the Portage system
 .SH "SYNOPSIS"
index 12f8fc8784b99cca232e48cfbdc3ac56ee14fca8..a7d069599c7d3328049a7b8f33cefe2a7e25688f 100644 (file)
@@ -1,4 +1,4 @@
-.TH "ENV-UPDATE" "1" "Mar 2006" "Portage 2.1" "Portage"
+.TH "ENV-UPDATE" "1" "Aug 2008" "Portage 2.2" "Portage"
 .SH NAME
 env\-update \- updates environment settings automatically
 .SH SYNOPSIS
index c4b771962d06a49fb6113518c88e15544f29b599..12feff1cb83b34d431dc8250fc96316de9e5b27c 100644 (file)
@@ -1,4 +1,4 @@
-.TH "ETC-UPDATE" "1" "Dec 2005" "Portage 2.1" "Portage"
+.TH "ETC-UPDATE" "1" "Aug 2008" "Portage 2.2" "Portage"
 .SH NAME
 etc-update \- handle configuration file updates
 .SH SYNOPSIS
index 0eee4cd736999f01683e891918bb04349c537831..c6020303896a4570890eb8cf4898b4f9cc185dae 100644 (file)
@@ -1,4 +1,4 @@
-.TH "MAKE.CONF" "5" "Jun 2007" "Portage 2.1.3" "Portage"
+.TH "MAKE.CONF" "5" "Aug 2008" "Portage 2.2" "Portage"
 .SH "NAME"
 make.conf \- custom settings for Portage
 .SH "SYNOPSIS"
@@ -36,11 +36,6 @@ set this to '~ppc'.  This is an incremental variable.  Only define a
 .br
 Defaults to the value of $ARCH.
 .TP
-\fBBUILD_PREFIX\fR = \fI[path]\fR
-Defines the location of the package working directory. 
-.br
-Defaults to ${PORTAGE_TMPDIR}/portage
-.TP
 .B CBUILD
 This variable is passed by the \fIebuild scripts\fR to the \fIconfigure\fR
 as \fI\-\-build=${CBUILD}\fR only if it is defined.  Do not set this yourself
index d6a29678a4b19edc69e771c5081258c9b6b0d5ce..3a1237f5914b0fee127f0401f86caab788ff5497 100644 (file)
@@ -1,4 +1,4 @@
-.TH "PORTAGE" "5" "Jun 2007" "Portage 2.1.3" "Portage"
+.TH "PORTAGE" "5" "Aug 2008" "Portage 2.2" "Portage"
 .SH NAME
 portage \- the heart of Gentoo
 .SH "DESCRIPTION"
index a0ec2ab194d204f2f1e53125dab717a08cc55a1b..4c033e6d5f6ebbe16c20b1f1a5be19270e71c30e 100644 (file)
@@ -1,4 +1,4 @@
-.TH "QUICKPKG" "1" "Dec 2005" "Portage 2.1" "Portage"
+.TH "QUICKPKG" "1" "Aug 2008" "Portage 2.2" "Portage"
 .SH NAME
 quickpkg \- creates portage packages
 .SH SYNOPSIS
index 53802540b2ee06ea0f465a00b0ecaa3543debdc7..befd96b9257626e9ca8ddeb4530d3d57054882d1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "REPOMAN" "1" "Dec 2005" "Portage 2.1" "Portage"
+.TH "REPOMAN" "1" "Aug 2008" "Portage 2.2" "Portage"
 .SH NAME
 repoman \- Gentoo's program to enforce a minimal level of quality assurance in packages added to the portage tree
 .SH SYNOPSIS
index 781532758a84ca6eb36c1166b90975ddd660586f..2ef7ceaae73b599f25e60567acb24e430b3b0d7f 100644 (file)
@@ -1061,10 +1061,7 @@ class FakeVartree(portage.vartree):
                portdb = root_config.trees["porttree"].dbapi
                self.root = real_vartree.root
                self.settings = real_vartree.settings
-               mykeys = list(Package.metadata_keys)
-               for required_key in ("COUNTER", "SLOT"):
-                       if required_key not in mykeys:
-                               mykeys.append(required_key)
+               mykeys = list(real_vartree.dbapi._aux_cache_keys)
                self._pkg_cache = pkg_cache
                self.dbapi = PackageVirtualDbapi(real_vartree.settings)
                vdb_path = os.path.join(self.root, portage.VDB_PATH)
@@ -1224,9 +1221,9 @@ class FakeVartree(portage.vartree):
        def _pkg(self, cpv):
                root_config = self._root_config
                real_vardb = root_config.trees["vartree"].dbapi
+               db_keys = list(real_vardb._aux_cache_keys)
                pkg = Package(cpv=cpv, installed=True,
-                       metadata=izip(Package.metadata_keys,
-                               real_vardb.aux_get(cpv, Package.metadata_keys)),
+                       metadata=izip(db_keys, real_vardb.aux_get(cpv, db_keys)),
                        root_config=root_config,
                        type_name="installed")
                return pkg
@@ -4088,8 +4085,6 @@ class depgraph(object):
 
        pkg_tree_map = RootConfig.pkg_tree_map
 
-       _mydbapi_keys = Package.metadata_keys
-
        _dep_keys = ["DEPEND", "RDEPEND", "PDEPEND"]
 
        # If dep calculation time exceeds this value then automatically
@@ -4209,7 +4204,7 @@ class depgraph(object):
                        if "--usepkg" in self.myopts:
                                db_keys = list(bindb._aux_cache_keys)
                                dbs.append((bindb,  "binary", True, False, db_keys))
-                       db_keys = self._mydbapi_keys
+                       db_keys = list(trees[myroot]["vartree"].dbapi._aux_cache_keys)
                        dbs.append((vardb, "installed", True, True, db_keys))
                        self._filtered_trees[myroot]["dbs"] = dbs
                        if "--usepkg" in self.myopts:
@@ -4824,8 +4819,8 @@ class depgraph(object):
                                        os.path.realpath(self.trees[myroot]["bintree"].getname(mykey)):
                                        print colorize("BAD", "\n*** You need to adjust PKGDIR to emerge this package.\n")
                                        return 0, myfavorites
-                               metadata = izip(self._mydbapi_keys,
-                                       bindb.aux_get(mykey, self._mydbapi_keys))
+                               db_keys = list(bindb._aux_cache_keys)
+                               metadata = izip(db_keys, bindb.aux_get(mykey, db_keys))
                                pkg = Package(type_name="binary", root_config=root_config,
                                        cpv=mykey, built=True, metadata=metadata,
                                        onlydeps=onlydeps)
@@ -4862,8 +4857,8 @@ class depgraph(object):
                                else:
                                        raise portage.exception.PackageNotFound(
                                                "%s is not in a valid portage tree hierarchy or does not exist" % x)
-                               metadata = izip(self._mydbapi_keys,
-                                       portdb.aux_get(mykey, self._mydbapi_keys))
+                               db_keys = list(portdb._aux_cache_keys)
+                               metadata = izip(db_keys, portdb.aux_get(mykey, db_keys))
                                pkg = Package(type_name="ebuild", root_config=root_config,
                                        cpv=mykey, metadata=metadata, onlydeps=onlydeps)
                                pkgsettings.setcpv(pkg)
@@ -5730,10 +5725,11 @@ class depgraph(object):
                pkg = self._pkg_cache.get(
                        (type_name, root_config.root, cpv, operation))
                if pkg is None:
-                       db = root_config.trees[
-                               self.pkg_tree_map[type_name]].dbapi
-                       metadata = izip(Package.metadata_keys,
-                               db.aux_get(cpv, Package.metadata_keys))
+                       tree_type = self.pkg_tree_map[type_name]
+                       db = root_config.trees[tree_type].dbapi
+                       db_keys = list(self._trees_orig[root_config.root][
+                               tree_type].dbapi._aux_cache_keys)
+                       metadata = izip(db_keys, db.aux_get(cpv, db_keys))
                        pkg = Package(cpv=cpv, metadata=metadata,
                                root_config=root_config, installed=installed)
                        if type_name == "ebuild":
@@ -7636,10 +7632,12 @@ class depgraph(object):
                                continue
                        if action != "merge":
                                continue
-                       mydb = trees[myroot][self.pkg_tree_map[pkg_type]].dbapi
+                       tree_type = self.pkg_tree_map[pkg_type]
+                       mydb = trees[myroot][tree_type].dbapi
+                       db_keys = list(self._trees_orig[myroot][
+                               tree_type].dbapi._aux_cache_keys)
                        try:
-                               metadata = izip(self._mydbapi_keys,
-                                       mydb.aux_get(pkg_key, self._mydbapi_keys))
+                               metadata = izip(db_keys, mydb.aux_get(pkg_key, db_keys))
                        except KeyError:
                                # It does no exist or it is corrupt.
                                if action == "uninstall":
@@ -8924,7 +8922,8 @@ class Scheduler(PollScheduler):
                # jobs are added, so we need to limit the rate of adding
                # new jobs.
                self._job_delay_max = 5
-               self._job_delay_factor = 0.75
+               self._job_delay_factor = 1.0
+               self._job_delay_exp = 1.5
                self._previous_job_start_time = None
 
                self._set_digraph(digraph)
@@ -9566,7 +9565,7 @@ class Scheduler(PollScheduler):
                        settings = merge.merge.settings
                        build_dir = settings.get("PORTAGE_BUILDDIR")
                        build_log = settings.get("PORTAGE_LOG_FILE")
-                       fetch_log = self._fetch_Log
+                       fetch_log = self._fetch_log
 
                        self._failed_pkgs.append(self._failed_pkg(
                                build_dir=build_dir, build_log=build_log,
@@ -9788,7 +9787,7 @@ class Scheduler(PollScheduler):
 
                        current_time = time.time()
 
-                       delay = self._job_delay_factor * self._jobs
+                       delay = self._job_delay_factor * self._jobs ** self._job_delay_exp
                        if delay > self._job_delay_max:
                                delay = self._job_delay_max
                        if (current_time - self._previous_job_start_time) < delay:
@@ -10044,10 +10043,11 @@ class Scheduler(PollScheduler):
                if installed:
                        operation = "nomerge"
 
-               db = root_config.trees[
-                       depgraph.pkg_tree_map[type_name]].dbapi
-               metadata = izip(Package.metadata_keys,
-                       db.aux_get(cpv, Package.metadata_keys))
+               tree_type = depgraph.pkg_tree_map[type_name]
+               db = root_config.trees[tree_type].dbapi
+               db_keys = list(self.trees[root_config.root][
+                       tree_type].dbapi._aux_cache_keys)
+               metadata = izip(db_keys, db.aux_get(cpv, db_keys))
                pkg = Package(cpv=cpv, metadata=metadata,
                        root_config=root_config, installed=installed)
                if type_name == "ebuild":
@@ -10186,13 +10186,13 @@ def unmerge(root_config, myopts, unmerge_action,
        xterm_titles = "notitles" not in settings.features
 
        pkg_cache = {}
+       db_keys = list(vartree.dbapi._aux_cache_keys)
 
        def _pkg(cpv):
                pkg = pkg_cache.get(cpv)
                if pkg is None:
                        pkg = Package(cpv=cpv, installed=True,
-                               metadata=izip(Package.metadata_keys,
-                                       vartree.dbapi.aux_get(cpv, Package.metadata_keys)),
+                               metadata=izip(db_keys, vartree.dbapi.aux_get(cpv, db_keys)),
                                root_config=root_config,
                                type_name="installed")
                        pkg_cache[cpv] = pkg
index e58bb6c824d6909047a13b8c480e48ae478899a5..78eb91115f101a43ea805b68c16e04043b4f553a 100644 (file)
@@ -2,6 +2,10 @@
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
+__all__ = ["PreservedLibsRegistry", "LinkageMap",
+       "vardbapi", "vartree", "dblink"] + \
+       ["write_contents", "tar_contents"]
+
 from portage.checksum import perform_md5
 from portage.const import CACHE_PATH, CONFIG_MEMORY_FILE, PORTAGE_BIN_PATH, \
        PRIVATE_PATH, VDB_PATH, EPREFIX, EPREFIX_LSTRIP
@@ -29,6 +33,7 @@ from portage.elog.filtering import filter_mergephases, filter_unmergephases
 
 import os, re, sys, stat, errno, commands, copy, time, subprocess
 import logging
+import shlex
 from itertools import izip
 
 try:
@@ -788,7 +793,7 @@ class vardbapi(dbapi):
                self.vartree = vartree
                self._aux_cache_keys = set(
                        ["CHOST", "COUNTER", "DEPEND", "DESCRIPTION",
-                       "EAPI", "HOMEPAGE", "INHERITED", "IUSE", "KEYWORDS",
+                       "EAPI", "HOMEPAGE", "IUSE", "KEYWORDS",
                        "LICENSE", "PDEPEND", "PROVIDE", "RDEPEND",
                        "repository", "RESTRICT" , "SLOT", "USE"])
                self._aux_cache_obj = None
@@ -2728,7 +2733,7 @@ class dblink(object):
        
        def _collision_protect(self, srcroot, destroot, mypkglist, mycontents):
                        collision_ignore = set([normalize_path(myignore) for myignore in \
-                               self.settings.get("COLLISION_IGNORE", "").split()])
+                               shlex.split(self.settings.get("COLLISION_IGNORE", ""))])
 
                        showMessage = self._display_merge
                        scheduler = self._scheduler