From 4511d92e1b5cba1f41a2a2de9d4b74bc320ebde2 Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Feb 17 2020 20:34:19 +0000 Subject: [PATCH 1/9] rpmbuild: use dnf.conf/yum.conf automatically Let `mock` decide which configuration option we need to append to. Per discussion in https://lists.fedoraproject.org/archives/list/ devel@lists.fedoraproject.org/thread/IRMM6UYHRWOI3YM6IE4DTTV4YWF3J7G2/ The way this is implemented is only compatible with mock 2.0, therefore the 'Requires: mock >= 2.0'. --- diff --git a/rpmbuild/copr-rpmbuild.spec b/rpmbuild/copr-rpmbuild.spec index 8a4e895..dc6c11d 100644 --- a/rpmbuild/copr-rpmbuild.spec +++ b/rpmbuild/copr-rpmbuild.spec @@ -56,7 +56,7 @@ Requires: %{python_pfx}-munch Requires: %{python}-requests Requires: %{python_pfx}-simplejson -Requires: mock +Requires: mock >= 2.0 Requires: git Requires: git-svn # for the /bin/unbuffer binary diff --git a/rpmbuild/copr_rpmbuild/builders/mock.py b/rpmbuild/copr_rpmbuild/builders/mock.py index a53076d..263f1d8 100644 --- a/rpmbuild/copr_rpmbuild/builders/mock.py +++ b/rpmbuild/copr_rpmbuild/builders/mock.py @@ -19,7 +19,6 @@ class MockBuilder(object): self.enable_net = task.get("enable_net") self.repos = task.get("repos") self.use_bootstrap_container = task.get("use_bootstrap_container") - self.pkg_manager_conf = "dnf" if "custom-1" in task.get("chroot") else "yum" self.timeout = task.get("timeout", 3600) self.with_opts = task.get("with_opts", []) self.without_opts = task.get("without_opts", []) @@ -69,7 +68,7 @@ class MockBuilder(object): template = jinja_env.get_template("mock.cfg.j2") return template.render(chroot=self.chroot, task_id=self.task_id, buildroot_pkgs=self.buildroot_pkgs, enable_net=self.enable_net, use_bootstrap_container=self.use_bootstrap_container, - repos=self.repos, pkg_manager_conf=self.pkg_manager_conf, + repos=self.repos, copr_username=self.copr_username, copr_projectname=self.copr_projectname, modules=self.enable_modules) diff --git a/rpmbuild/mock.cfg.j2 b/rpmbuild/mock.cfg.j2 index 2ad4a24..f726830 100644 --- a/rpmbuild/mock.cfg.j2 +++ b/rpmbuild/mock.cfg.j2 @@ -27,7 +27,7 @@ config_opts['bootstrap_module_install'] = [] config_opts["module_enable"] += ["{{ module }}"] {%- endfor %} {% if repos %} -config_opts['{{ pkg_manager_conf }}.conf'] += """ +config_opts[f"{config_opts.package_manager}.conf"] += """ {% for repo in repos %} [{{ repo["id"] }}] name='{{ repo["name"] }}' diff --git a/rpmbuild/tests/test_mock.py b/rpmbuild/tests/test_mock.py index 46303eb..109ef35 100644 --- a/rpmbuild/tests/test_mock.py +++ b/rpmbuild/tests/test_mock.py @@ -194,12 +194,6 @@ config_opts['use_bootstrap_container'] = False success = os.path.join(self.resultdir, "success") mock_open.assert_called_with(success, "w") - def test_custom1_chroot_settings(self): - b1 = MockBuilder(self.task, self.sourcedir, self.resultdir, self.config) - b2 = MockBuilder(dict(self.task, **{"chroot": "custom-1-x86_64"}), self.sourcedir, self.resultdir, self.config) - assert b1.pkg_manager_conf == "yum" - assert b2.pkg_manager_conf == "dnf" - @pytest.mark.parametrize('modules', [ ['postgresql:9.6'], ['moduleA:S1', 'moduleA:S2'], From 934c4db9e1898a40acdc37949b989a1be389ba0c Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Feb 17 2020 20:35:02 +0000 Subject: [PATCH 2/9] cli: fix `copr mock-config` to use `dnf.conf/yum.conf` automatically Similar to previous commit. --- diff --git a/cli/copr_cli/build_config.py b/cli/copr_cli/build_config.py index 7191f9d..50b308d 100644 --- a/cli/copr_cli/build_config.py +++ b/cli/copr_cli/build_config.py @@ -22,7 +22,7 @@ config_opts['chroot_additional_packages'] = ' {%- endif %} {%- if repos %} -config_opts['yum.conf'] += \"\"\" +config_opts[config_opts['package_manager'] + '.conf'] += \"\"\" {%- for repo in repos %} [{{ repo.id }}] diff --git a/cli/tests/test_mock_config.py b/cli/tests/test_mock_config.py index c96b4fd..87cd279 100644 --- a/cli/tests/test_mock_config.py +++ b/cli/tests/test_mock_config.py @@ -44,7 +44,7 @@ class TestMockConfig(): additional="" return """ -config_opts['yum.conf'] += \"\"\" +config_opts[config_opts['package_manager'] + '.conf'] += \"\"\" [copr_base] name="Copr repository" From 302a78f46af3810ac80573281bf25e4746e134b8 Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Feb 17 2020 20:35:16 +0000 Subject: [PATCH 3/9] rpmbuild: generate self-standing chroot.cfg No matter if absolute or relative include is used in the child.cfg file (and transitively included files), we pre-generate self standing config file and use it. Having self-standing config file, we can avoid using the --configdir mock option. --- diff --git a/rpmbuild/copr_rpmbuild/builders/mock.py b/rpmbuild/copr_rpmbuild/builders/mock.py index 263f1d8..20da32c 100644 --- a/rpmbuild/copr_rpmbuild/builders/mock.py +++ b/rpmbuild/copr_rpmbuild/builders/mock.py @@ -32,36 +32,35 @@ class MockBuilder(object): def run(self): open(self.logfile, 'w').close() # truncate logfile - configdir = os.path.join(self.resultdir, "configs") - self.prepare_configs(configdir) + self.prepare_configs() spec = locate_spec(self.sourcedir) shutil.copy(spec, self.resultdir) try: - self.produce_srpm(spec, self.sourcedir, configdir, self.resultdir) + self.produce_srpm(spec, self.sourcedir, self.resultdir) srpm = locate_srpm(self.resultdir) - self.produce_rpm(srpm, configdir, self.resultdir) + self.produce_rpm(srpm, self.resultdir) finally: - self.clean_cache(configdir) - - def prepare_configs(self, configdir): - site_config_path = os.path.join(configdir, "site-defaults.cfg") - mock_config_path = os.path.join(configdir, "{0}.cfg".format(self.chroot)) - child_config_path = os.path.join(configdir, "child.cfg") + self.clean_cache() + def prepare_configs(self): try: - os.makedirs(configdir) + os.makedirs(self.configdir) except OSError: pass - shutil.copy2("/etc/mock/site-defaults.cfg", site_config_path) - shutil.copy2("/etc/mock/{0}.cfg".format(self.chroot), mock_config_path) + # The child_cfg file is just used as template for mock to generate + # the self-standing mock_config_file. + child_cfg = os.path.join(self.configdir, 'child.cfg') cfg = self.render_config_template() - with open(child_config_path, "w") as child: + with open(child_cfg, "w") as child: child.write(cfg) - return [child_config_path, mock_config_path, site_config_path] + # Generate self-standing mock config file. + with open(self.mock_config_file, "w") as chroot_config: + subprocess.call(['mock', '-r', child_cfg, '--debug-config'], + stdout=chroot_config) def render_config_template(self): jinja_env = Environment(loader=FileSystemLoader(CONF_DIRS)) @@ -72,15 +71,14 @@ class MockBuilder(object): copr_username=self.copr_username, copr_projectname=self.copr_projectname, modules=self.enable_modules) - def produce_srpm(self, spec, sources, configdir, resultdir): + def produce_srpm(self, spec, sources, resultdir): cmd = MOCK_CALL + [ "--buildsrpm", "--spec", spec, "--sources", sources, - "--configdir", configdir, "--resultdir", resultdir, "--uniqueext", get_mock_uniqueext(), - "-r", "child"] + "-r", self.mock_config_file] for with_opt in self.with_opts: cmd += ["--with", with_opt] @@ -101,17 +99,23 @@ class MockBuilder(object): if process.returncode != 0: raise RuntimeError("Build failed") - @classmethod - def clean_cache(cls, configdir): + def clean_cache(self): """ Do best effort /var/mock/cache cleanup. """ cmd = MOCK_CALL + [ - "--configdir", configdir, - "-r", "child", + "-r", self.mock_config_file, "--scrub", "cache", ] subprocess.call(cmd) # ignore failure here, if any @property + def configdir(self): + return os.path.join(self.resultdir, "configs") + + @property + def mock_config_file(self): + return os.path.join(self.configdir, self.chroot + ".cfg") + + @property def enable_modules(self): """ Return the list() of modules to be enabled """ enable = [] @@ -133,13 +137,12 @@ class MockBuilder(object): return enable - def produce_rpm(self, srpm, configdir, resultdir): + def produce_rpm(self, srpm, resultdir): cmd = MOCK_CALL + [ "--rebuild", srpm, - "--configdir", configdir, "--resultdir", resultdir, "--uniqueext", get_mock_uniqueext(), - "-r", "child"] + "-r", self.mock_config_file] for with_opt in self.with_opts: cmd += ["--with", with_opt] diff --git a/rpmbuild/tests/test_mock.py b/rpmbuild/tests/test_mock.py index 109ef35..7371279 100644 --- a/rpmbuild/tests/test_mock.py +++ b/rpmbuild/tests/test_mock.py @@ -79,16 +79,17 @@ class TestMockBuilder(object): self.configdir = os.path.join(self.resultdir, 'configs') self.child_config = os.path.join(self.configdir, 'child.cfg') + config = os.path.join(self.resultdir, 'configs', + 'fedora-24-x86_64.cfg') self.mock_rpm_call = [ - 'unbuffer', 'mock', '--rebuild', 'srpm', '--configdir', - self.configdir, '--resultdir', self.resultdir, - '--uniqueext', '0', '-r', 'child'] + 'unbuffer', 'mock', '--rebuild', 'srpm', + '--resultdir', self.resultdir, '--uniqueext', '0', '-r', config, + ] self.mock_srpm_call = [ 'unbuffer', 'mock', '--buildsrpm', '--spec', 'spec', '--sources', - self.sourcedir, '--configdir', self.configdir, - '--resultdir', self.resultdir, '--uniqueext', '0', '-r', - 'child'] + self.sourcedir, '--resultdir', self.resultdir, '--uniqueext', '0', + '-r', config] self.config = configparser.RawConfigParser() self.config.add_section('main') @@ -129,7 +130,8 @@ class TestMockBuilder(object): assert config_opts["macros"]["%copr_projectname"] == "copr-dev" assert config_opts["yum.conf"] == [] - def test_mock_config(self, f_mock_calls): + @mock.patch("copr_rpmbuild.builders.mock.subprocess.call") + def test_mock_config(self, call, f_mock_calls): """ test that no module_enable statements are in config """ MockBuilder(self.task, self.sourcedir, self.resultdir, self.config).run() @@ -158,7 +160,8 @@ config_opts['use_bootstrap_container'] = False """ # TODO: make the output nicer - def test_mock_options(self, f_mock_calls): + @mock.patch("copr_rpmbuild.builders.mock.MockBuilder.prepare_configs") + def test_mock_options(self, prep_configs, f_mock_calls): """ test that mock options are correctly constructed """ MockBuilder(self.task, self.sourcedir, self.resultdir, self.config).run() @@ -170,20 +173,20 @@ config_opts['use_bootstrap_container'] = False call = f_mock_calls[1] assert call[0][0] == self.mock_rpm_call + @mock.patch("copr_rpmbuild.builders.mock.MockBuilder.prepare_configs") @mock.patch("copr_rpmbuild.builders.mock.get_mock_uniqueext") @mock.patch("copr_rpmbuild.builders.mock.GentlyTimeoutedPopen") - def test_produce_rpm(self, popen_mock, get_mock_uniqueext_mock): + def test_produce_rpm(self, popen_mock, get_mock_uniqueext_mock, prep_configs): builder = MockBuilder(self.task, self.sourcedir, self.resultdir, self.config) get_mock_uniqueext_mock.return_value = '2' process = mock.MagicMock(returncode=0) popen_mock.return_value = process - builder.produce_rpm("/path/to/pkg.src.rpm", "/path/to/configs", "/path/to/results") + builder.produce_rpm("/path/to/pkg.src.rpm", "/path/to/results") assert_cmd = ['unbuffer', 'mock', '--rebuild', '/path/to/pkg.src.rpm', - '--configdir', '/path/to/configs', '--resultdir', '/path/to/results', '--uniqueext', '2', - '-r', 'child'] + '-r', builder.mock_config_file] popen_mock.assert_called_with(assert_cmd, stdin=subprocess.PIPE, timeout=21600) @@ -205,8 +208,10 @@ config_opts['use_bootstrap_container'] = False self.task['modules'] = { 'toggle': [{'enable': x} for x in modules], } - MockBuilder(self.task, self.sourcedir, self.resultdir, - self.config).run() + + with mock.patch("copr_rpmbuild.builders.mock.subprocess.call"): + MockBuilder(self.task, self.sourcedir, self.resultdir, + self.config).run() assert len(f_mock_calls) == 2 # srpm + rpm From bc96f474364c6644edef250f266307956863e64a Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Feb 17 2020 20:35:21 +0000 Subject: [PATCH 4/9] rpmbuild: copy all mock config, and use child.cfg again The --debug-config output configuration doesn't work well for copr build purposes, so step back for now to use 'child.cfg' ... and copy all the mock config files recursively. --- diff --git a/rpmbuild/copr_rpmbuild/builders/mock.py b/rpmbuild/copr_rpmbuild/builders/mock.py index 20da32c..25ff78d 100644 --- a/rpmbuild/copr_rpmbuild/builders/mock.py +++ b/rpmbuild/copr_rpmbuild/builders/mock.py @@ -50,17 +50,13 @@ class MockBuilder(object): except OSError: pass - # The child_cfg file is just used as template for mock to generate - # the self-standing mock_config_file. - child_cfg = os.path.join(self.configdir, 'child.cfg') - cfg = self.render_config_template() - with open(child_cfg, "w") as child: - child.write(cfg) - - # Generate self-standing mock config file. - with open(self.mock_config_file, "w") as chroot_config: - subprocess.call(['mock', '-r', child_cfg, '--debug-config'], - stdout=chroot_config) + # Copy all the host's configuration files for the reproducibility + # purposes (documentation), those files are not used for builds. + subprocess.call(['rsync', '-rl', '/etc/mock/', self.configdir]) + + # Generate the target mock config file. + with open(self.mock_config_file, "w") as child: + child.write(self.render_config_template()) def render_config_template(self): jinja_env = Environment(loader=FileSystemLoader(CONF_DIRS)) @@ -113,7 +109,7 @@ class MockBuilder(object): @property def mock_config_file(self): - return os.path.join(self.configdir, self.chroot + ".cfg") + return os.path.join(self.configdir, "child.cfg") @property def enable_modules(self): diff --git a/rpmbuild/tests/test_mock.py b/rpmbuild/tests/test_mock.py index 7371279..a60997c 100644 --- a/rpmbuild/tests/test_mock.py +++ b/rpmbuild/tests/test_mock.py @@ -79,17 +79,16 @@ class TestMockBuilder(object): self.configdir = os.path.join(self.resultdir, 'configs') self.child_config = os.path.join(self.configdir, 'child.cfg') - config = os.path.join(self.resultdir, 'configs', - 'fedora-24-x86_64.cfg') self.mock_rpm_call = [ 'unbuffer', 'mock', '--rebuild', 'srpm', - '--resultdir', self.resultdir, '--uniqueext', '0', '-r', config, + '--resultdir', self.resultdir, '--uniqueext', '0', + '-r', self.child_config, ] self.mock_srpm_call = [ 'unbuffer', 'mock', '--buildsrpm', '--spec', 'spec', '--sources', self.sourcedir, '--resultdir', self.resultdir, '--uniqueext', '0', - '-r', config] + '-r', self.child_config] self.config = configparser.RawConfigParser() self.config.add_section('main') @@ -246,6 +245,7 @@ config_opts['use_bootstrap_container'] = False def test_module_mock_assertions(self, f_mock_calls, modules): 'test that assertions work' self.task['modules'] = modules - with pytest.raises(AssertionError): - MockBuilder(self.task, self.sourcedir, self.resultdir, - self.config).run() + with mock.patch("copr_rpmbuild.builders.mock.subprocess.call"): + with pytest.raises(AssertionError): + MockBuilder(self.task, self.sourcedir, self.resultdir, + self.config).run() From 68171c980e1ce8ff854c7e8131cd1bd932465643 Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Feb 17 2020 20:35:21 +0000 Subject: [PATCH 5/9] rpmbuild: archive the set of mock configs --- diff --git a/rpmbuild/copr_rpmbuild/builders/mock.py b/rpmbuild/copr_rpmbuild/builders/mock.py index 25ff78d..97d1f5e 100644 --- a/rpmbuild/copr_rpmbuild/builders/mock.py +++ b/rpmbuild/copr_rpmbuild/builders/mock.py @@ -43,6 +43,7 @@ class MockBuilder(object): self.produce_rpm(srpm, self.resultdir) finally: self.clean_cache() + self.archive_configs() def prepare_configs(self): try: @@ -103,6 +104,12 @@ class MockBuilder(object): ] subprocess.call(cmd) # ignore failure here, if any + def archive_configs(self): + subprocess.call(['tar', '-cz', '--remove-files', + '-C', os.path.dirname(self.configdir), + '-f', os.path.join(self.resultdir, 'configs.tar.gz'), + os.path.basename(self.configdir)]) + @property def configdir(self): return os.path.join(self.resultdir, "configs") diff --git a/rpmbuild/tests/test_mock.py b/rpmbuild/tests/test_mock.py index a60997c..48b28fe 100644 --- a/rpmbuild/tests/test_mock.py +++ b/rpmbuild/tests/test_mock.py @@ -160,7 +160,8 @@ config_opts['use_bootstrap_container'] = False """ # TODO: make the output nicer @mock.patch("copr_rpmbuild.builders.mock.MockBuilder.prepare_configs") - def test_mock_options(self, prep_configs, f_mock_calls): + @mock.patch("copr_rpmbuild.builders.mock.MockBuilder.archive_configs") + def test_mock_options(self, archive_configs, prep_configs, f_mock_calls): """ test that mock options are correctly constructed """ MockBuilder(self.task, self.sourcedir, self.resultdir, self.config).run() From 17275d7623312741197e7aa378c033f283fe173e Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Feb 18 2020 15:33:22 +0000 Subject: [PATCH 6/9] beaker-tests: use our standard "cleanup" pattern in scm.sh --- diff --git a/beaker-tests/Sanity/copr-cli-basic-operations/scm.sh b/beaker-tests/Sanity/copr-cli-basic-operations/scm.sh index 171c54d..67af227 100755 --- a/beaker-tests/Sanity/copr-cli-basic-operations/scm.sh +++ b/beaker-tests/Sanity/copr-cli-basic-operations/scm.sh @@ -51,12 +51,11 @@ rlJournalStart rlRun "copr add-package-scm --name example --clone-url $COPR_HELLO_GIT --method tito ${NAME_PREFIX}PackageScm" 0 rlRun "copr edit-package-scm --name example --clone-url $COPR_HELLO_GIT --method rpkg ${NAME_PREFIX}PackageScm" 0 rlRun "copr build-package --name example ${NAME_PREFIX}PackageScm" 0 - - rlRun "copr-cli delete ${NAME_PREFIX}BuildScm" - rlRun "copr-cli delete ${NAME_PREFIX}PackageScm" rlPhaseEnd rlPhaseStartCleanup + cleanProject "${NAME_PREFIX}BuildScm" + cleanProject "${NAME_PREFIX}PackageScm" rlPhaseEnd rlJournalPrintText rlJournalEnd From 7f2b85f2c972f762cab75bb7612d340f04e85d5c Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Feb 19 2020 04:40:50 +0000 Subject: [PATCH 7/9] beaker-tests: expect configs.tar.gz, not child.cfg in resultsdir --- diff --git a/beaker-tests/Sanity/copr-cli-basic-operations/runtest.sh b/beaker-tests/Sanity/copr-cli-basic-operations/runtest.sh index a38c7b9..439f319 100755 --- a/beaker-tests/Sanity/copr-cli-basic-operations/runtest.sh +++ b/beaker-tests/Sanity/copr-cli-basic-operations/runtest.sh @@ -472,7 +472,8 @@ rlJournalStart rlRun "copr-cli build ${NAME_PREFIX}DownloadMockCfgs $HELLO" MYTMPDIR=`mktemp -d -p .` && cd $MYTMPDIR wget -r -np $BACKEND_URL/results/${NAME_PREFIX}DownloadMockCfgs/$CHROOT/ - rlRun "find . -type f | grep 'configs/$CHROOT.cfg'" 0 + rlAssertEquals "check that configs.tar.gz exists" "$(find . -name configs.tar.gz | wc -l)" 1 + rlRun "tar tf $(find . -name configs.tar.gz) | grep 'configs/$CHROOT.cfg'" 0 rlRun "find . -type f | grep 'backend.log'" 0 rlRun "find . -type f | grep 'root.log'" 0 cd - && rm -r $MYTMPDIR @@ -496,7 +497,8 @@ rlJournalStart copr-cli build ${NAME_PREFIX}TestBug1444804 $EVIL_HELLO MYTMPDIR=`mktemp -d -p .` && cd $MYTMPDIR wget -r -np $BACKEND_URL/results/${NAME_PREFIX}TestBug1444804/$CHROOT/ - rlRun "find . -type f | grep 'configs/$CHROOT.cfg'" 0 + rlAssertEquals "check that configs.tar.gz exists" "$(find . -name configs.tar.gz | wc -l)" 1 + rlRun "tar tf $(find . -name configs.tar.gz) | grep 'configs/$CHROOT.cfg'" 0 rlRun "find . -type f | grep 'backend.log'" 0 rlRun "find . -type f | grep 'root.log'" 0 rlRun "find . -type f | grep 'build.log'" 0 @@ -508,7 +510,7 @@ rlJournalStart rlRun -s "copr-cli build ${NAME_PREFIX}BootstrapProject $HELLO --nowait" rlRun "parse_build_id" rlRun "copr watch-build $BUILD_ID" - rlRun "curl $BACKEND_URL/results/${NAME_PREFIX}BootstrapProject/$CHROOT/`printf %08d $BUILD_ID`-hello/configs/child.cfg |grep \"config_opts\['use_bootstrap_container'\] = True\"" + rlRun "curl $BACKEND_URL/results/${NAME_PREFIX}BootstrapProject/$CHROOT/`printf %08d $BUILD_ID`-hello/configs.tar.gz | tar xz -O '*configs/child.cfg' | grep \"config_opts\['use_bootstrap_container'\] = True\"" rlRun "copr-cli modify ${NAME_PREFIX}BootstrapProject --use-bootstrap off" rlAssertEquals "" `curl --silent ${FRONTEND_URL}/api/coprs/${NAME_PREFIX}BootstrapProject/detail/ |jq '.detail.use_bootstrap_container'` false From 241ec0b4a5b19b7b8ab416a3e1408c1d2ae64407 Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Feb 19 2020 04:40:52 +0000 Subject: [PATCH 8/9] rpmbuild: disable bootstrap chroot for make_srpm method There are two misconceptions that might cause that make_srpm can not work with bootstrap chroot easily: - the option --plugin-option=bind_mount:dirs=... is used - nspawn_args is overwritten, with dropped privileges (so installing of normal chroot isn't possible from bootstrap chroot) This is not first time we are bitten by the fact that we don't use the same mechanism for all source mehtods. Relates: #534 --- diff --git a/rpmbuild/make_srpm_mock.cfg b/rpmbuild/make_srpm_mock.cfg index f01ec1a..c319242 100644 --- a/rpmbuild/make_srpm_mock.cfg +++ b/rpmbuild/make_srpm_mock.cfg @@ -3,4 +3,5 @@ config_opts['rpmbuild_networking'] = True config_opts['use_host_resolv'] = True config_opts['chroot_additional_packages'] = 'make dnf' config_opts['plugin_conf']['bind_mount_enable'] = True +config_opts['use_bootstrap'] = False config_opts['nspawn_args'] = ['--drop-capability=CAP_SYS_ADMIN,CAP_IPC_OWNER,CAP_KILL,CAP_LEASE,CAP_LINUX_IMMUTABLE,CAP_NET_BIND_SERVICE,CAP_NET_BROADCAST,CAP_NET_RAW,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT,CAP_SYS_NICE,CAP_SYS_PTRACE,CAP_SYS_TTY_CONFIG,CAP_SYS_RESOURCE,CAP_SYS_BOOT,CAP_AUDIT_WRITE,CAP_AUDIT_CONTROL'] From 0900de628a3a7fa1039bd534831350e73f746501 Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Feb 19 2020 04:40:52 +0000 Subject: [PATCH 9/9] rpmbuild: mock config s/use_bootstrap_container/use_bootstrap/ This is to avoid the warning: WARNING: config_opts['use_bootstrap_container'] is deprecated, please use config_opts['use_bootstrap'] instead --- diff --git a/rpmbuild/mock.cfg.j2 b/rpmbuild/mock.cfg.j2 index f726830..1300e59 100644 --- a/rpmbuild/mock.cfg.j2 +++ b/rpmbuild/mock.cfg.j2 @@ -16,7 +16,7 @@ config_opts['use_host_resolv'] = False config_opts['macros']['%copr_username'] = '{{ copr_username }}' config_opts['macros']['%copr_projectname'] = '{{ copr_projectname }}' -config_opts['use_bootstrap_container'] = {{ 'True' if use_bootstrap_container else 'False' }} +config_opts['use_bootstrap'] = {{ 'True' if use_bootstrap_container else 'False' }} {% if use_bootstrap_container %} config_opts['bootstrap_chroot_additional_packages'] = [] diff --git a/rpmbuild/tests/test_mock.py b/rpmbuild/tests/test_mock.py index 48b28fe..67cf677 100644 --- a/rpmbuild/tests/test_mock.py +++ b/rpmbuild/tests/test_mock.py @@ -124,7 +124,7 @@ class TestMockBuilder(object): assert config_opts["root"] == "10-fedora-24-x86_64" assert config_opts["chroot_additional_packages"] == "pkg1 pkg2 pkg3" assert config_opts["rpmbuild_networking"] - assert not config_opts["use_bootstrap_container"] + assert not config_opts["use_bootstrap"] assert config_opts["macros"]["%copr_username"] == "@copr" assert config_opts["macros"]["%copr_projectname"] == "copr-dev" assert config_opts["yum.conf"] == [] @@ -153,7 +153,7 @@ config_opts['use_host_resolv'] = True config_opts['macros']['%copr_username'] = '@copr' config_opts['macros']['%copr_projectname'] = 'copr-dev' -config_opts['use_bootstrap_container'] = False +config_opts['use_bootstrap'] = False @@ -223,7 +223,7 @@ config_opts['use_bootstrap_container'] = False assert call[0][0] == self.mock_rpm_call part_of_expected_output = ( - "config_opts['use_bootstrap_container'] = False\n" + "config_opts['use_bootstrap'] = False\n" "\n" "\n" "\n"