diff options
author | Mike Frysinger <vapier@gentoo.org> | 2013-02-25 18:03:52 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2013-02-25 18:03:52 +0000 |
commit | c1f214b71d6a55e7d961e54974d5c36f29c49c7c (patch) | |
tree | 62a5b927abe2abdb3274f661c5f76769f2813418 /app-portage | |
parent | Add a blocker on app-admin/rex to avoid file collisions, bug 459116. (diff) | |
download | gentoo-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)
Diffstat (limited to 'app-portage')
-rw-r--r-- | app-portage/gentoolkit/ChangeLog | 8 | ||||
-rw-r--r-- | app-portage/gentoolkit/files/0.3.0.7-root.patch | 153 | ||||
-rw-r--r-- | app-portage/gentoolkit/gentoolkit-0.3.0.7-r1.ebuild | 95 |
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" +} |