[sys-apps/entropy] revbump, backport patches from master
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: $
|
||||
|
||||
EAPI=5
|
||||
|
||||
PYTHON_COMPAT=( python2_7 )
|
||||
PYTHON_REQ_USE="sqlite"
|
||||
|
||||
inherit eutils python-single-r1 user
|
||||
|
||||
DESCRIPTION="Entropy Package Manager foundation library"
|
||||
HOMEPAGE="http://www.sabayon.org"
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~arm ~ia64 ~ppc ~ppc64 ~x86"
|
||||
|
||||
IUSE=""
|
||||
SRC_URI="mirror://sabayon/${CATEGORY}/${P}.tar.bz2"
|
||||
|
||||
RDEPEND="dev-db/sqlite:3[soundex(+)]
|
||||
net-misc/rsync
|
||||
sys-apps/diffutils
|
||||
sys-apps/sandbox
|
||||
>=sys-apps/portage-2.1.9[${PYTHON_USEDEP}]
|
||||
sys-devel/gettext
|
||||
${PYTHON_DEPS}"
|
||||
DEPEND="${RDEPEND}
|
||||
dev-util/intltool"
|
||||
|
||||
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
|
||||
|
||||
S="${S}/lib"
|
||||
|
||||
REPO_CONFPATH="${ROOT}/etc/entropy/repositories.conf"
|
||||
REPO_D_CONFPATH="${ROOT}/etc/entropy/repositories.conf.d"
|
||||
ENTROPY_CACHEDIR="${ROOT}/var/lib/entropy/caches"
|
||||
|
||||
pkg_setup() {
|
||||
python-single-r1_pkg_setup
|
||||
# Can:
|
||||
# - update repos
|
||||
# - update security advisories
|
||||
# - handle on-disk cache (atm)
|
||||
enewgroup entropy || die "failed to create entropy group"
|
||||
# Create unprivileged entropy user
|
||||
enewgroup entropy-nopriv || die "failed to create entropy-nopriv group"
|
||||
enewuser entropy-nopriv -1 -1 -1 entropy-nopriv || die "failed to create entropy-nopriv user"
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
|
||||
# Backport patches
|
||||
epatch "${FILESDIR}"/0001-entropy.spm-_add_kernel_dependency_to_pkg-rewrite-to.patch
|
||||
}
|
||||
|
||||
src_install() {
|
||||
emake DESTDIR="${D}" LIBDIR="usr/lib" install || die "make install failed"
|
||||
|
||||
python_optimize "${D}/usr/lib/entropy/lib/entropy"
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
for ex_conf in "${REPO_D_CONFPATH}"/_entropy_sabayon-limbo.example; do
|
||||
real_conf="${ex_conf%.example}"
|
||||
if [ -f "${real_conf}" ] || [ -f "${real_conf/_}" ]; then
|
||||
# skip installation then
|
||||
continue
|
||||
fi
|
||||
elog "Installing: ${real_conf}"
|
||||
cp "${ex_conf}" "${real_conf}" -p
|
||||
done
|
||||
|
||||
# Copy config file over
|
||||
if [ -f "${REPO_CONFPATH}.example" ] && [ ! -f "${REPO_CONFPATH}" ]; then
|
||||
elog "Copying ${REPO_CONFPATH}.example over to ${REPO_CONFPATH}"
|
||||
cp "${REPO_CONFPATH}.example" "${REPO_CONFPATH}" -p
|
||||
fi
|
||||
|
||||
if [ -d "${ENTROPY_CACHEDIR}" ]; then
|
||||
einfo "Purging current Entropy cache"
|
||||
rm -rf "${ENTROPY_CACHEDIR}"/*
|
||||
fi
|
||||
|
||||
# Fixup Entropy Resources Lock, and /etc/entropy/packages
|
||||
# files permissions. This fixes unprivileged Entropy Library usage
|
||||
local res_file="${ROOT}"/var/lib/entropy/client/database/*/.using_resources
|
||||
if [ -f "${res_file}" ]; then
|
||||
chown root:entropy "${res_file}"
|
||||
chmod g+rw "${res_file}"
|
||||
chmod o+r "${res_file}"
|
||||
fi
|
||||
local pkg_files="package.mask package.unmask package.mask.d package.unmask.d"
|
||||
local pkg_file
|
||||
for pkg_file in ${pkg_files}; do
|
||||
pkg_file="${ROOT}/etc/entropy/packages/${pkg_file}"
|
||||
recursive=""
|
||||
if [ -d "${pkg_file}" ]; then
|
||||
recursive="-R"
|
||||
fi
|
||||
if [ -e "${pkg_file}" ]; then
|
||||
chown ${recursive} root:entropy "${pkg_file}"
|
||||
chmod ${recursive} go+r "${pkg_file}"
|
||||
fi
|
||||
done
|
||||
|
||||
# Setup Entropy Library directories ownership
|
||||
chown root:entropy "${ROOT}/var/lib/entropy" # no recursion
|
||||
chown root:entropy "${ROOT}/var/lib/entropy/client/packages" # no recursion
|
||||
chown root:entropy "${ROOT}/var/log/entropy" # no recursion
|
||||
|
||||
echo
|
||||
elog "If you want to enable Entropy packages delta download support, please"
|
||||
elog "install dev-util/bsdiff."
|
||||
echo
|
||||
}
|
||||
+122
@@ -0,0 +1,122 @@
|
||||
From 978eccc78e94e9144dc66cc7392a5120943c32d3 Mon Sep 17 00:00:00 2001
|
||||
From: Fabio Erculiani <lxnay@sabayon.org>
|
||||
Date: Tue, 1 Oct 2013 13:17:38 +0200
|
||||
Subject: [PATCH] [entropy.spm] _add_kernel_dependency_to_pkg, rewrite to use
|
||||
/etc/kernels data
|
||||
|
||||
Trying to figure out the kernel owning /lib/modules/vermagic doesn't work
|
||||
in all cases. Packages like sys-kernel/spl may be returned as valid
|
||||
kernel packages. Now that /etc/kernels/vermagic consolidated, it's time
|
||||
to use it.
|
||||
---
|
||||
.../plugins/interfaces/portage_plugin/__init__.py | 72 +++++++++++++++-------
|
||||
1 file changed, 51 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py b/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py
|
||||
index ebcf779..ae06027 100644
|
||||
--- a/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py
|
||||
+++ b/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py
|
||||
@@ -1172,6 +1172,10 @@ class PortagePlugin(SpmPlugin):
|
||||
kmod_pfx = "/lib/modules"
|
||||
kmox_sfx = ".ko"
|
||||
|
||||
+ # these have to be kept in sync with kswitch
|
||||
+ kernels_dir = "/etc/kernels"
|
||||
+ release_level = "RELEASE_LEVEL"
|
||||
+
|
||||
content = [x for x in pkg_data['content'] if x.startswith(kmod_pfx)]
|
||||
content = [x for x in content if x.endswith(kmox_sfx)]
|
||||
enc = etpConst['conf_encoding']
|
||||
@@ -1217,6 +1221,41 @@ class PortagePlugin(SpmPlugin):
|
||||
|
||||
return modinfo_output.split()[0]
|
||||
|
||||
+ def find_kernel(vermagic):
|
||||
+ k_dirs = []
|
||||
+ try:
|
||||
+ k_dirs += os.listdir(kernels_dir)
|
||||
+ except (OSError, IOError):
|
||||
+ pass
|
||||
+
|
||||
+ k_dirs = [os.path.join(kernels_dir, x) for x in k_dirs]
|
||||
+ k_dirs = [x for x in k_dirs if os.path.isdir(x)]
|
||||
+
|
||||
+ for k_dir in k_dirs:
|
||||
+ rl_path = os.path.join(k_dir, release_level)
|
||||
+ if not os.path.lexists(rl_path):
|
||||
+ # skip without trying to open() it.
|
||||
+ continue
|
||||
+
|
||||
+ level = None
|
||||
+ try:
|
||||
+ with codecs.open(rl_path, "r", encoding = enc) as rl_f:
|
||||
+ level = rl_f.read(512).strip()
|
||||
+ except (OSError, IOError):
|
||||
+ continue
|
||||
+
|
||||
+ if level != vermagic:
|
||||
+ # not the vermagic we're looking for.
|
||||
+ continue
|
||||
+
|
||||
+ owners = self.search_paths_owners([rl_path])
|
||||
+ if not owners:
|
||||
+ # wtf? ignore dependency then
|
||||
+ continue
|
||||
+ atom_slot = sorted(owners.keys())[0] # deterministic
|
||||
+ return atom_slot # (atom, slot) tuple
|
||||
+
|
||||
+ vermagic_cache = set()
|
||||
for item in content:
|
||||
|
||||
# read vermagic
|
||||
@@ -1225,6 +1264,11 @@ class PortagePlugin(SpmPlugin):
|
||||
if kern_vermagic is None:
|
||||
continue
|
||||
|
||||
+ if kern_vermagic in vermagic_cache:
|
||||
+ # skip, already processed
|
||||
+ continue
|
||||
+ vermagic_cache.add(kern_vermagic)
|
||||
+
|
||||
if not entropy.dep.is_valid_package_tag(kern_vermagic):
|
||||
# argh! wtf, this is invalid!
|
||||
continue
|
||||
@@ -1235,28 +1279,14 @@ class PortagePlugin(SpmPlugin):
|
||||
pkg_data['slot'] = "%s,%s" % (pkg_data['slot'], kern_vermagic,)
|
||||
|
||||
# now try to guess package providing that vermagic
|
||||
- possible_kernel_owned_path = os.path.join(kmod_pfx, kern_vermagic)
|
||||
- owners = self.search_paths_owners([possible_kernel_owned_path])
|
||||
- owner_data = None
|
||||
- k_atom = None
|
||||
- for k_atom, k_slot in owners:
|
||||
- k_cat, k_name, k_ver, k_rev = entropy.dep.catpkgsplit(k_atom)
|
||||
- if k_cat == PortagePlugin.KERNEL_CATEGORY:
|
||||
- owner_data = (k_cat, k_name, k_ver, k_rev,)
|
||||
- break
|
||||
-
|
||||
- if owner_data is None:
|
||||
- # heh, user has broken deps, who cares!
|
||||
- return
|
||||
-
|
||||
- # yippie, kernel dep installed also for SPM.
|
||||
- k_cat, k_name, k_ver, k_rev = owner_data
|
||||
- if k_rev != "r0":
|
||||
- k_ver += "-%s" % (k_rev,)
|
||||
- if k_atom is not None:
|
||||
- kern_dep_key = "=%s~-1" % (k_atom,)
|
||||
+ k_atom_slot = find_kernel(kern_vermagic)
|
||||
+ if k_atom_slot is None:
|
||||
+ # cannot bind a kernel package to this vermagic
|
||||
+ continue
|
||||
|
||||
- return kern_dep_key
|
||||
+ k_atom, _k_slot = k_atom_slot
|
||||
+ # yippie, kernel dep installed also for SPM
|
||||
+ return "=%s~-1" % (k_atom,)
|
||||
|
||||
def _get_default_virtual_pkg(self, virtual_key):
|
||||
defaults = self._portage.settings.getvirtuals()[virtual_key]
|
||||
--
|
||||
1.8.3.2
|
||||
|
||||
Reference in New Issue
Block a user