diff --git a/.ci b/.ci new file mode 100755 index 000000000..a8cf49897 --- /dev/null +++ b/.ci @@ -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 diff --git a/.travis.yml b/.travis.yml index 0cb37cfe8..ef192d8f4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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" diff --git a/lib/kswitch/__init__.py b/lib/kswitch/__init__.py index 0f877652a..ca20a88a8 100644 --- a/lib/kswitch/__init__.py +++ b/lib/kswitch/__init__.py @@ -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