diff options
author | Zac Medico <zmedico@gentoo.org> | 2014-11-23 13:03:21 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2014-11-27 00:45:40 -0800 |
commit | b9c06a6a2dd4ccc875f8b9dd3139ea582e1e5621 (patch) | |
tree | ec652b12899c28caf41f2050520fb0b1e59a61b5 /pym/portage/tests/ebuild | |
parent | Force the SELinux user during relabel operation (530192) (diff) | |
download | portage-b9c06a6a2dd4ccc875f8b9dd3139ea582e1e5621.tar.gz portage-b9c06a6a2dd4ccc875f8b9dd3139ea582e1e5621.tar.bz2 portage-b9c06a6a2dd4ccc875f8b9dd3139ea582e1e5621.zip |
make.defaults: negative incrementals in USE_EXPAND (530222)
Previously, USE_EXPAND variable settings in profile make.defaults only
supported positive incremental settings. This patch adds support for
negative settings like PYTHON_TARGETS="-python3_3", which brings
behavior into alignment with PMS.
Notably, this patch does not change behavior for settings in make.conf.
In make.conf, settings to USE_EXPAND variables remain entirely
non-incremental. PMS does not govern make.conf behavior.
X-Gentoo-Bug: 530222
X-Gentoo-Url: https://bugs.gentoo.org/show_bug.cgi?id=530222
Acked-by: Brian Dolbec <dolsen@gentoo.org>
Diffstat (limited to 'pym/portage/tests/ebuild')
-rw-r--r-- | pym/portage/tests/ebuild/test_use_expand_incremental.py | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/pym/portage/tests/ebuild/test_use_expand_incremental.py b/pym/portage/tests/ebuild/test_use_expand_incremental.py new file mode 100644 index 000000000..a58f08cb9 --- /dev/null +++ b/pym/portage/tests/ebuild/test_use_expand_incremental.py @@ -0,0 +1,132 @@ +# Copyright 2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +from __future__ import unicode_literals + +import io + +from portage import os, _encodings +from portage.dep import Atom +from portage.package.ebuild.config import config +from portage.tests import TestCase +from portage.tests.resolver.ResolverPlayground import ResolverPlayground +from portage.util import ensure_dirs + +class UseExpandIncrementalTestCase(TestCase): + + def testUseExpandIncremental(self): + + profiles = ( + ( + 'base', + { + "eapi": ("5",), + "parent": ("..",), + "make.defaults": ( + "INPUT_DEVICES=\"keyboard mouse\"", + "PYTHON_TARGETS=\"python2_7 python3_3\"", + ("USE_EXPAND=\"INPUT_DEVICES PYTHON_TARGETS " + "VIDEO_CARDS\""), + ) + } + ), + ( + 'default/linux', + { + "eapi": ("5",), + "make.defaults": ( + "VIDEO_CARDS=\"dummy fbdev v4l\"", + ) + } + ), + ( + 'default/linux/x86', + { + "eapi": ("5",), + "make.defaults": ( + # Test negative incremental for bug 530222. + "PYTHON_TARGETS=\"-python3_3\"", + ), + "parent": ("../../../base", + "../../../mixins/python/3.4", + ".." + ) + } + ), + ( + 'mixins/python/3.4', + { + "eapi": ("5",), + "make.defaults": ( + "PYTHON_TARGETS=\"python3_4\"", + ) + } + ), + ) + + # USE_EXPAND variable settings in make.conf will cause + # profile settings for the same variable to be discarded + # (non-incremental behavior). PMS does not govern make.conf + # behavior. + user_config = { + "make.conf" : ( + "VIDEO_CARDS=\"intel\"", + ) + } + + ebuilds = { + "x11-base/xorg-drivers-1.15": { + "EAPI": "5", + "IUSE": ("input_devices_keyboard input_devices_mouse " + "videos_cards_dummy video_cards_fbdev " + "video_cards_v4l video_cards_intel") + }, + "sys-apps/portage-2.2.14": { + "EAPI": "5", + "IUSE": ("python_targets_python2_7 " + "python_targets_python3_3 python_targets_python3_4") + }, + } + + package_expected_use = ( + ("x11-base/xorg-drivers-1.15", ("input_devices_keyboard", + "input_devices_mouse", "video_cards_intel",)), + ("sys-apps/portage-2.2.14", ("python_targets_python2_7", + "python_targets_python3_4")) + ) + + playground = ResolverPlayground(debug=False, + ebuilds=ebuilds, user_config=user_config) + try: + repo_dir = (playground.settings.repositories. + get_location_for_name("test_repo")) + profile_root = os.path.join(repo_dir, "profiles") + + for p, data in profiles: + prof_path = os.path.join(profile_root, p) + ensure_dirs(prof_path) + for k, v in data.items(): + with io.open(os.path.join(prof_path, k), mode="w", + encoding=_encodings["repo.content"]) as f: + for line in v: + f.write("%s\n" % line) + + # The config must be reloaded in order to account + # for the above profile customizations. + playground.reload_config() + + depgraph = playground.run( + ["=x11-base/xorg-drivers-1.15"]).depgraph + settings = config(clone=playground.settings) + + for cpv, expected_use in package_expected_use: + pkg, existing_node = depgraph._select_package( + playground.eroot, Atom("=" + cpv)) + settings.setcpv(pkg) + expected = frozenset(expected_use) + got = frozenset(settings["PORTAGE_USE"].split()) + self.assertEqual(got, expected, + "%s != %s" % (got, expected)) + + finally: + playground.cleanup() |