Merge pull request #61 from Enlik/kswitch-revdep

[kswitch] use reverse dep. not PROVIDE
This commit is contained in:
Ettore Di Giacinto
2018-09-08 23:13:29 +02:00
committed by GitHub
3 changed files with 40 additions and 12 deletions

21
.ci Executable file
View File

@@ -0,0 +1,21 @@
#!/bin/bash
set -x
python2 --version
python3 --version
if [[ ! -e /usr/portage/profiles ]]; then
rsync -av -H -A -X --delete-during \
"rsync://rsync.at.gentoo.org/gentoo-portage/profiles/" \
/usr/portage/profiles || exit 1
fi
export LC_ALL=en_US.UTF-8 USERNAME=root ETP_TESTS_NONINTERACTIVE=1
equo install dev-util/bsdiff || exit 1
cd /entropy/lib/tests || exit 1
ret=0
python2 ./run || ret=$?
python3 ./run || ret=$?
exit $ret

View File

@@ -7,13 +7,7 @@ before_install:
- docker pull sabayon/base-amd64
script:
- >
docker run -v $TRAVIS_BUILD_DIR:/entropy sabayon/base-amd64
bash -c "python2 --version; python3 --version"
- >
docker run -v $TRAVIS_BUILD_DIR:/entropy sabayon/base-amd64
env LC_ALL=en_US.UTF-8 USERNAME=root ETP_TESTS_NONINTERACTIVE=1
bash -c 'equo i dev-util/bsdiff; cd /entropy/lib/tests && ret=0 && { python2 ./run || ret=$?; python3 ./run || ret=$?; }; exit $ret'
- docker run -v $TRAVIS_BUILD_DIR:/entropy sabayon/base-amd64 /entropy/.ci
notifications:
irc: "chat.freenode.net#sabayon-infra"

View File

@@ -29,6 +29,7 @@ import entropy.tools
KERNEL_BINARY_VIRTUAL = const_convert_to_unicode("virtual/linux-binary")
KERNEL_BINARY_LTS_VIRTUAL = const_convert_to_unicode("virtual/linux-binary-lts")
KERNEL_ATOM_PREFIX = "sys-kernel/"
KERNELS_DIR = const_convert_to_rawstring("/etc/kernels")
RELEASE_LEVEL = const_convert_to_rawstring("RELEASE_LEVEL")
@@ -155,10 +156,22 @@ class KernelSwitcher(object):
"""
Return a list of kernel package matches.
"""
return self._entropy.atom_match(
kernel_virtual_pkgs, _rc = self._entropy.atom_match(
KERNEL_BINARY_VIRTUAL,
multi_match=True, multi_repo=True)
kernel_packages = []
for pkg_id, repo_id in kernel_virtual_pkgs:
repo = self._entropy.open_repository(repo_id)
kernel_pkgs = repo.retrieveReverseDependencies(pkg_id)
for kernel_pkg in kernel_pkgs:
atom = repo.retrieveAtom(kernel_pkg)
if atom.startswith(KERNEL_ATOM_PREFIX):
kernel_packages.append((atom, kernel_pkg, repo_id))
return kernel_packages
def _get_target_tag(self, kernel_match):
"""
Get the package tag for the given kernel package match.
@@ -375,7 +388,7 @@ class KernelSwitcher(object):
@return: a sorted list of Entropy package matches
@rtype: list
"""
matches, _rc = self._get_kernels()
key_sorter = lambda x: \
self._entropy.open_repository(x[1]).retrieveAtom(x[0])
return sorted(matches, key=key_sorter)
matches = self._get_kernels()
key_sorter = lambda x: x[0]
result = [x[1:3] for x in sorted(matches, key=key_sorter)]
return result