Toggle multilib per variant

There is now a single option `multilib`, that maps variants and arches
to multilib methods. This replaces old `multilib_methods` option.

Multilib arches are implicitly deduced instead of using the
`multilib_arches` option.

The test compose is updated to only enable multilib on Server and its
addons.

Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
Lubomír Sedlář 2016-01-20 12:53:08 +01:00
parent 6e0f6ee73e
commit 8b4ad1ea02
12 changed files with 61 additions and 42 deletions

View File

@ -38,7 +38,6 @@ Minimal Config Example
gather_source = "comps"
gather_method = "deps"
greedy_method = "build"
multilib_methods = []
check_deps = False
# BUILDINSTALL
@ -377,11 +376,25 @@ Options
**greedy_method**
(*str*) -- see :doc:`gather`, recommended value: "build"
**multilib_methods** = []
([*str*]) -- see :doc:`gather`, recommended value: ["devel", "runtime"]
**multilib_methods** [deprecated]
([*str*]) -- use ``multilib`` instead to configure this per-variant
**multilib_arches**
([*str*] or None) -- list of compose architectures entitled for multilib; set to None to apply multilib on all compose arches
**multilib_arches** [deprecated]
([*str*] or None) -- use ``multilib`` to implicitly configure this: if a
variant on any arch has non-empty multilib methods, it is automatically
eligible
**multilib**
(*list*) -- mapping of variant regexes and arches to list of multilib
methods
Available methods are:
* ``none``
* ``all``
* ``runtime``
* ``file``
* ``kernel``
* ``yaboot``
**additional_packages**
(*list*) -- additional packages to be included in a variant and architecture; format: [(variant_uid_regex, {arch|*: [package_globs]})]
@ -414,8 +427,6 @@ Example
gather_source = "comps"
gather_method = "deps"
greedy_method = "build"
multilib_methods = ["devel", "runtime"]
multilib_arches = ["ppc64", "s390x", "x86_64"]
check_deps = False
hashed_directories = True
@ -438,6 +449,12 @@ Example
}),
]
multilib = [
('^Server$', {
'x86_64': ['devel', 'runtime']
})
]
multilib_blacklist = {
"*": [
"gcc",

View File

@ -52,20 +52,11 @@ class GatherPhase(PhaseBase):
name = "gather"
config_options = (
{
"name": "multilib_arches",
"expected_types": [list],
"optional": True,
},
{
"name": "gather_lookaside_repos",
"expected_types": [list],
"optional": True,
},
{
"name": "multilib_methods",
"expected_types": [list],
},
{
"name": "greedy_method",
"expected_values": ["none", "all", "build"],
@ -91,7 +82,22 @@ class GatherPhase(PhaseBase):
"expected_types": [bool],
"optional": True,
},
{
"name": "multilib",
"expected_types": [list],
"optional": True,
},
# DEPRECATED OPTIONS
{
"name": "multilib_arches",
"deprecated": True,
"comment": "Use multilib instead",
},
{
"name": "multilib_methods",
"deprecated": True,
"comment": "Use multilib instead",
},
{
"name": "additional_packages_multiarch",
"deprecated": True,

View File

@ -15,7 +15,6 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
import os
import kobo.rpmlib

View File

@ -20,13 +20,12 @@ import tempfile
from kobo.shortcuts import run
from pungi.util import rmtree
from pungi.util import rmtree, get_arch_variant_data
from pungi.wrappers.pungi import PungiWrapper
from pungi.arch import tree_arch_to_yum_arch
import pungi.phases.gather
import pungi.phases.gather.method
@ -116,11 +115,7 @@ def resolve_deps(compose, arch, variant):
compose.log_info("[BEGIN] %s" % msg)
pungi_conf = compose.paths.work.pungi_conf(arch, variant)
multilib_methods = compose.conf.get("multilib_methods", None)
multilib_methods = compose.conf.get("multilib_methods", None)
is_multilib = arch in compose.conf["multilib_arches"]
if not is_multilib:
multilib_methods = None
multilib_methods = get_arch_variant_data(compose.conf, 'multilib', arch, variant)
greedy_method = compose.conf.get("greedy_method", "none")

View File

@ -109,11 +109,6 @@ class InitPhase(PhaseBase):
"expected_types": [list],
"optional": True,
},
{
"name": "multilib_arches",
"expected_types": [list],
"optional": True,
},
# CREATEREPO SETTINGS
{

View File

@ -22,6 +22,7 @@ from kobo.shortcuts import force_list
import pungi.phases.pkgset.pkgsets
from pungi.arch import get_valid_arches
from pungi.phases.base import PhaseBase
from pungi.util import is_arch_multilib
class PkgsetPhase(PhaseBase):
@ -33,10 +34,6 @@ class PkgsetPhase(PhaseBase):
"name": "pkgset_source",
"expected_types": [str],
},
{
"name": "multilib_arches",
"expected_types": [list],
},
)
def run(self):
@ -54,7 +51,7 @@ def populate_arch_pkgsets(compose, path_prefix, global_pkgset):
result = {}
for arch in compose.get_arches():
compose.log_info("Populating package set for arch: %s" % arch)
is_multilib = arch in compose.conf["multilib_arches"]
is_multilib = is_arch_multilib(compose.conf, arch)
arches = get_valid_arches(arch, is_multilib, add_src=True)
pkgset = pungi.phases.pkgset.pkgsets.PackageSetBase(compose.conf["sigkeys"], logger=compose._logger, arches=arches)
pkgset.merge(global_pkgset, arch, arches)

View File

@ -22,6 +22,7 @@ from kobo.shortcuts import run, force_list, relative_path
import pungi.phases.pkgset.pkgsets
from pungi.arch import get_valid_arches
from pungi.wrappers.createrepo import CreaterepoWrapper
from pungi.util import is_arch_multilib
# TODO: per arch?
@ -29,7 +30,7 @@ def populate_arch_pkgsets(compose, path_prefix, global_pkgset):
result = {}
for arch in compose.get_arches():
compose.log_info("Populating package set for arch: %s" % arch)
is_multilib = arch in compose.conf["multilib_arches"]
is_multilib = is_arch_multilib(compose.conf, arch)
arches = get_valid_arches(arch, is_multilib, add_src=True)
pkgset = pungi.phases.pkgset.pkgsets.PackageSetBase(compose.conf["sigkeys"], logger=compose._logger, arches=arches)
pkgset.merge(global_pkgset, arch, arches)

View File

@ -24,6 +24,7 @@ import koji
import pungi.wrappers.kojiwrapper
import pungi.phases.pkgset.pkgsets
from pungi.arch import get_valid_arches
from pungi.util import is_arch_multilib
from pungi.phases.pkgset.common import create_arch_repos, create_global_repo, populate_arch_pkgsets
@ -85,7 +86,7 @@ def populate_global_pkgset(compose, koji_wrapper, path_prefix, compose_tag, even
koji_proxy = koji_wrapper.koji_proxy
ALL_ARCHES = set(["src"])
for arch in compose.get_arches():
is_multilib = arch in compose.conf["multilib_arches"]
is_multilib = is_arch_multilib(compose.conf, arch)
arches = get_valid_arches(arch, is_multilib)
ALL_ARCHES.update(arches)

View File

@ -22,7 +22,7 @@ from kobo.shortcuts import run
import pungi.phases.pkgset.pkgsets
from pungi.arch import get_valid_arches
from pungi.util import makedirs
from pungi.util import makedirs, is_arch_multilib
from pungi.wrappers.pungi import PungiWrapper
from pungi.phases.pkgset.common import create_global_repo, create_arch_repos, populate_arch_pkgsets
@ -125,7 +125,7 @@ def get_pkgset_from_repos(compose):
def populate_global_pkgset(compose, file_list, path_prefix):
ALL_ARCHES = set(["src"])
for arch in compose.get_arches():
is_multilib = arch in compose.conf["multilib_arches"]
is_multilib = is_arch_multilib(compose.conf, arch)
arches = get_valid_arches(arch, is_multilib)
ALL_ARCHES.update(arches)

View File

@ -23,7 +23,7 @@ from pungi.wrappers.repoclosure import RepoclosureWrapper
from pungi.arch import get_valid_arches
from pungi.phases.base import PhaseBase
from pungi.phases.gather import get_lookaside_repos
from pungi.util import rmtree
from pungi.util import rmtree, is_arch_multilib
class TestPhase(PhaseBase):
@ -45,7 +45,7 @@ def run_repoclosure(compose):
all_repos = {} # to be used as lookaside for the self-hosting check
all_arches = set()
for arch in compose.get_arches():
is_multilib = arch in compose.conf["multilib_arches"]
is_multilib = is_arch_multilib(compose.conf, arch)
arches = get_valid_arches(arch, is_multilib)
all_arches.update(arches)
for variant in compose.get_variants(arch=arch):

View File

@ -215,6 +215,11 @@ def get_arch_variant_data(conf, var_name, arch, variant):
return result
def is_arch_multilib(conf, arch):
"""Check if at least one variant has multilib enabled on this variant."""
return bool(get_arch_variant_data(conf, 'multilib', arch, None))
def resolve_git_url(url):
"""Given a url to a Git repo specifying HEAD as a ref, replace that
specifier with actual SHA1 of the commit.

View File

@ -42,8 +42,11 @@ greedy_method = "build"
check_deps = False
hashed_directories = True
multilib_arches = ["ppc64", "x86_64", "s390x"]
multilib_methods = ["devel", "runtime"]
multilib = [
('^Server.*$', {
'*': ['devel', 'runtime']
}),
]
additional_packages = [
('^Server$', {