summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2013-02-25 18:03:52 +0000
committerMike Frysinger <vapier@gentoo.org>2013-02-25 18:03:52 +0000
commitc1f214b71d6a55e7d961e54974d5c36f29c49c7c (patch)
tree62a5b927abe2abdb3274f661c5f76769f2813418
parentAdd a blocker on app-admin/rex to avoid file collisions, bug 459116. (diff)
downloadgentoo-2-c1f214b71d6a55e7d961e54974d5c36f29c49c7c.tar.gz
gentoo-2-c1f214b71d6a55e7d961e54974d5c36f29c49c7c.tar.bz2
gentoo-2-c1f214b71d6a55e7d961e54974d5c36f29c49c7c.zip
Add fix for ROOT handling #160815.
(Portage version: 2.2.0_alpha163/cvs/Linux x86_64, signed Manifest commit with key FB7C4156)
-rw-r--r--app-portage/gentoolkit/ChangeLog8
-rw-r--r--app-portage/gentoolkit/files/0.3.0.7-root.patch153
-rw-r--r--app-portage/gentoolkit/gentoolkit-0.3.0.7-r1.ebuild95
3 files changed, 255 insertions, 1 deletions
diff --git a/app-portage/gentoolkit/ChangeLog b/app-portage/gentoolkit/ChangeLog
index b4b3b9f6791d..24dde60dd0d1 100644
--- a/app-portage/gentoolkit/ChangeLog
+++ b/app-portage/gentoolkit/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for app-portage/gentoolkit
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-portage/gentoolkit/ChangeLog,v 1.291 2013/02/22 18:07:16 zmedico Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-portage/gentoolkit/ChangeLog,v 1.292 2013/02/25 18:03:52 vapier Exp $
+
+*gentoolkit-0.3.0.7-r1 (25 Feb 2013)
+
+ 25 Feb 2013; Mike Frysinger <vapier@gentoo.org> +files/0.3.0.7-root.patch,
+ +gentoolkit-0.3.0.7-r1.ebuild:
+ Add fix for ROOT handling #160815.
22 Feb 2013; Zac Medico <zmedico@gentoo.org> gentoolkit-0.3.0.7.ebuild:
Add ~arm-linux keyword.
diff --git a/app-portage/gentoolkit/files/0.3.0.7-root.patch b/app-portage/gentoolkit/files/0.3.0.7-root.patch
new file mode 100644
index 000000000000..19dde6ad963e
--- /dev/null
+++ b/app-portage/gentoolkit/files/0.3.0.7-root.patch
@@ -0,0 +1,153 @@
+From 35cc856ee0ce03858a39210525b9893ca061f079 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Wed, 19 Dec 2012 18:50:17 -0500
+Subject: [PATCH] equery: make more ROOT aware
+
+This at least fixes:
+ belongs
+ check
+ depends
+ files
+ list
+ size
+
+URL: https://bugs.gentoo.org/160815
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+Signed-off-by: Paul Varner <fuzzyray@gentoo.org>
+---
+ pym/gentoolkit/equery/check.py | 17 +++++++++--------
+ pym/gentoolkit/package.py | 35 ++++++++++++++++++++++-------------
+ 2 files changed, 31 insertions(+), 21 deletions(-)
+
+diff --git a/pym/gentoolkit/equery/check.py b/pym/gentoolkit/equery/check.py
+index 84be634..e903355 100644
+--- a/pym/gentoolkit/equery/check.py
++++ b/pym/gentoolkit/equery/check.py
+@@ -105,26 +105,27 @@ class VerifyContents(object):
+ for cfile in files:
+ n_checked += 1
+ ftype = files[cfile][0]
+- if not os.path.exists(cfile):
++ real_cfile = os.environ.get('ROOT', '') + cfile
++ if not os.path.exists(real_cfile):
+ errs.append("%s does not exist" % cfile)
+ continue
+ elif ftype == "dir":
+- if not os.path.isdir(cfile):
++ if not os.path.isdir(real_cfile):
+ err = "%(cfile)s exists, but is not a directory"
+ errs.append(err % locals())
+ continue
+ elif ftype == "obj":
+- obj_errs = self._verify_obj(files, cfile, errs)
++ obj_errs = self._verify_obj(files, cfile, real_cfile, errs)
+ if len(obj_errs) > len(errs):
+ errs = obj_errs[:]
+ continue
+ elif ftype == "sym":
+ target = files[cfile][2].strip()
+- if not os.path.islink(cfile):
++ if not os.path.islink(real_cfile):
+ err = "%(cfile)s exists, but is not a symlink"
+ errs.append(err % locals())
+ continue
+- tgt = os.readlink(cfile)
++ tgt = os.readlink(real_cfile)
+ if tgt != target:
+ err = "%(cfile)s does not point to %(target)s"
+ errs.append(err % locals())
+@@ -137,14 +138,14 @@ class VerifyContents(object):
+
+ return n_passed, n_checked, errs
+
+- def _verify_obj(self, files, cfile, errs):
++ def _verify_obj(self, files, cfile, real_cfile, errs):
+ """Verify the MD5 sum and/or mtime and return any errors."""
+
+ obj_errs = errs[:]
+ if self.check_sums:
+ md5sum = files[cfile][2]
+ try:
+- cur_checksum = checksum.perform_md5(cfile, calc_prelink=1)
++ cur_checksum = checksum.perform_md5(real_cfile, calc_prelink=1)
+ except IOError:
+ err = "Insufficient permissions to read %(cfile)s"
+ obj_errs.append(err % locals())
+@@ -155,7 +156,7 @@ class VerifyContents(object):
+ return obj_errs
+ if self.check_timestamps:
+ mtime = int(files[cfile][1])
+- st_mtime = int(os.lstat(cfile).st_mtime)
++ st_mtime = int(os.lstat(real_cfile).st_mtime)
+ if st_mtime != mtime:
+ err = (
+ "%(cfile)s has wrong mtime (is %(st_mtime)d, should be "
+diff --git a/pym/gentoolkit/package.py b/pym/gentoolkit/package.py
+index e324399..2a103de 100644
+--- a/pym/gentoolkit/package.py
++++ b/pym/gentoolkit/package.py
+@@ -58,16 +58,14 @@ from gentoolkit.eprefix import EPREFIX
+ # Settings
+ # =======
+
+-if EPREFIX:
+- default_settings = portage.config(local_config=True, eprefix=EPREFIX)
+- default_settings.lock()
+- nolocal_settings = portage.config(local_config=False, eprefix=EPREFIX)
+- nolocal_settings.lock()
+-else:
+- default_settings = portage.config(local_config=True)
+- default_settings.lock()
+- nolocal_settings = portage.config(local_config=False)
+- nolocal_settings.lock()
++def _NewPortageConfig(local_config):
++ ret = portage.config(local_config=local_config,
++ eprefix=EPREFIX if EPREFIX else None,
++ target_root=os.environ.get('ROOT', None))
++ ret.lock()
++ return ret
++default_settings = _NewPortageConfig(local_config=True)
++nolocal_settings = _NewPortageConfig(local_config=False)
+
+ # =======
+ # Classes
+@@ -350,14 +348,25 @@ class Package(CPV):
+ iuse, final_flags = get_flags(self.cpv, final_setting=True)
+ return final_flags
+
+- def parsed_contents(self):
++ def parsed_contents(self, prefix_root=False):
+ """Returns the parsed CONTENTS file.
+
+ @rtype: dict
+ @return: {'/full/path/to/obj': ['type', 'timestamp', 'md5sum'], ...}
+ """
+
+- return self.dblink.getcontents()
++ contents = self.dblink.getcontents()
++
++ # Portage will automatically prepend ROOT. Undo that.
++ if not prefix_root:
++ myroot = self._settings["ROOT"]
++ if myroot != '/':
++ ret = {}
++ for key, val in self.dblink.getcontents().iteritems():
++ ret['/' + os.path.relpath(key, myroot)] = val
++ contents = ret
++
++ return contents
+
+ def size(self):
+ """Estimates the installed size of the contents of this package.
+@@ -368,7 +377,7 @@ class Package(CPV):
+
+ seen = set()
+ size = n_files = n_uncounted = 0
+- for f in self.parsed_contents():
++ for f in self.parsed_contents(prefix_root=True):
+ try:
+ st = os.lstat(path)
+ except OSError:
+--
+1.8.1.2
+
diff --git a/app-portage/gentoolkit/gentoolkit-0.3.0.7-r1.ebuild b/app-portage/gentoolkit/gentoolkit-0.3.0.7-r1.ebuild
new file mode 100644
index 000000000000..1788066f6f3d
--- /dev/null
+++ b/app-portage/gentoolkit/gentoolkit-0.3.0.7-r1.ebuild
@@ -0,0 +1,95 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-portage/gentoolkit/gentoolkit-0.3.0.7-r1.ebuild,v 1.1 2013/02/25 18:03:52 vapier Exp $
+
+EAPI="3"
+SUPPORT_PYTHON_ABIS="1"
+RESTRICT_PYTHON_ABIS="2.[45]"
+PYTHON_USE_WITH="xml"
+PYTHON_NONVERSIONED_EXECUTABLES=(".*")
+
+inherit distutils python eutils
+
+DESCRIPTION="Collection of administration scripts for Gentoo"
+HOMEPAGE="http://www.gentoo.org/proj/en/portage/tools/index.xml"
+SRC_URI="mirror://gentoo/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE=""
+
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~x64-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+
+# Note: dev-lang/python dependencies are so emerge will print a blocker if any
+# installed slot of python is not built with +xml. This is used since
+# PYTHON_USE_WITH just dies in the middle of the emerge. See bug 399331.
+DEPEND="sys-apps/portage"
+RDEPEND="${DEPEND}
+ >=dev-lang/python-2.6[xml]
+ !>=dev-lang/python-2.6[-xml]
+ !<=app-portage/gentoolkit-dev-0.2.7
+ || ( >=sys-apps/coreutils-8.15 app-misc/realpath sys-freebsd/freebsd-bin )
+ sys-apps/gawk
+ sys-apps/grep
+ virtual/python-argparse"
+
+distutils_src_compile_pre_hook() {
+ echo VERSION="${PVR}" "$(PYTHON)" setup.py set_version
+ VERSION="${PVR}" "$(PYTHON)" setup.py set_version \
+ || die "setup.py set_version failed"
+}
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PV}-root.patch
+}
+
+src_install() {
+ python_convert_shebangs -r "" build-*/scripts-*
+ distutils_src_install
+
+ # Rename the python versions of revdep-rebuild, since we are not ready
+ # to switch to the python version yet. Link /usr/bin/revdep-rebuild to
+ # revdep-rebuild.sh. Leaving the python version available for potential
+ # testing by a wider audience.
+ mv "${ED}"/usr/bin/revdep-rebuild "${ED}"/usr/bin/revdep-rebuild.py
+ dosym revdep-rebuild.sh /usr/bin/revdep-rebuild
+
+ # Create cache directory for revdep-rebuild
+ dodir /var/cache/revdep-rebuild
+ keepdir /var/cache/revdep-rebuild
+ use prefix || fowners root:root /var/cache/revdep-rebuild
+ fperms 0700 /var/cache/revdep-rebuild
+
+ # remove on Gentoo Prefix platforms where it's broken anyway
+ if use prefix; then
+ elog "The revdep-rebuild command is removed, the preserve-libs"
+ elog "feature of portage will handle issues."
+ rm "${ED}"/usr/bin/revdep-rebuild*
+ rm "${ED}"/usr/share/man/man1/revdep-rebuild.1
+ rm -rf "${ED}"/etc/revdep-rebuild
+ rm -rf "${ED}"/var
+ fi
+
+ # Can distutils handle this?
+ dosym eclean /usr/bin/eclean-dist
+ dosym eclean /usr/bin/eclean-pkg
+}
+
+pkg_postinst() {
+ distutils_pkg_postinst
+
+ einfo
+ einfo "For further information on gentoolkit, please read the gentoolkit"
+ einfo "guide: http://www.gentoo.org/doc/en/gentoolkit.xml"
+ einfo
+ einfo "Another alternative to equery is app-portage/portage-utils"
+ einfo
+ einfo "Additional tools that may be of interest:"
+ einfo
+ einfo " app-admin/eclean-kernel"
+ einfo " app-portage/diffmask"
+ einfo " app-portage/flaggie"
+ einfo " app-portage/install-mask"
+ einfo " app-portage/portpeek"
+ einfo " app-portage/smart-live-rebuild"
+}