All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/8] Support signed RPM package feeds
@ 2017-08-15 11:34 Markus Lehtonen
  2017-08-15 11:34 ` [PATCH v4 1/8] lib/oe/package_manager: re-implement rpm feed signing Markus Lehtonen
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Markus Lehtonen @ 2017-08-15 11:34 UTC (permalink / raw)
  To: openembedded-core

Fourth iteration of the patchset enabling signed RPM package feeds.
Changes since v3:
- new patch for the 'signing-keys' recipe, fixing a likely failure in the dnf
  package feed selftest
- one comment line added in "dnf: expand dnf selftest to test signed package feeds"
  patch

The following changes since commit 5a25ed1071f0d9b7d95edcc2b5b4545f960d5f95:

  image-prelink: Disable for musl images (2017-08-11 08:14:19 +0100)

are available in the git repository at:

  git://git.openembedded.org/openembedded-core-contrib marquiz/fixes-11209
  http://cgit.openembedded.org/openembedded-core-contrib/log/?h=marquiz/fixes-11209

Markus Lehtonen (8):
  lib/oe/package_manager: re-implement rpm feed signing
  dnf: rrecommend gnupg
  signing-keys: delete unused tasks
  sign_package_feed.bbclass: install signing key into rootfs
  package_manager.py: enable dnf's repo_gpgcheck if feed signing is
    enabled
  oeqa: fix dnf tests
  oeqa: fix temp file handling in dnf package feed test
  dnf: expand dnf selftest to test signed package feeds

 meta-selftest/files/signing/key.passphrase         |  1 +
 .../cases/{dnf-runtime.py => dnf_runtime.py}       | 13 ++++++++----
 meta/classes/sign_package_feed.bbclass             |  3 +++
 meta/lib/oe/package_manager.py                     | 24 +++++++++++++++++++---
 meta/lib/oeqa/selftest/cases/runtime_test.py       | 14 +++++++++++--
 meta/recipes-core/meta/signing-keys.bb             |  8 ++++++++
 meta/recipes-devtools/dnf/dnf_2.6.3.bb             |  2 ++
 7 files changed, 56 insertions(+), 9 deletions(-)
 create mode 100644 meta-selftest/files/signing/key.passphrase
 rename meta-selftest/lib/oeqa/runtime/cases/{dnf-runtime.py => dnf_runtime.py} (77%)

-- 
2.12.3



^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v4 1/8] lib/oe/package_manager: re-implement rpm feed signing
  2017-08-15 11:34 [PATCH v4 0/8] Support signed RPM package feeds Markus Lehtonen
@ 2017-08-15 11:34 ` Markus Lehtonen
  2017-08-15 11:34 ` [PATCH v4 2/8] dnf: rrecommend gnupg Markus Lehtonen
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2017-08-15 11:34 UTC (permalink / raw)
  To: openembedded-core

[YOCTO #11209]

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
 meta/lib/oe/package_manager.py | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index 518cf8dbe3..942f2dd903 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -104,13 +104,25 @@ class Indexer(object, metaclass=ABCMeta):
 class RpmIndexer(Indexer):
     def write_index(self):
         if self.d.getVar('PACKAGE_FEED_SIGN') == '1':
-            raise NotImplementedError('Package feed signing not yet implementd for rpm')
+            signer = get_signer(self.d, self.d.getVar('PACKAGE_FEED_GPG_BACKEND'))
+        else:
+            signer = None
 
         createrepo_c = bb.utils.which(os.environ['PATH'], "createrepo_c")
         result = create_index("%s --update -q %s" % (createrepo_c, self.deploy_dir))
         if result:
             bb.fatal(result)
 
+        # Sign repomd
+        if signer:
+            sig_type = self.d.getVar('PACKAGE_FEED_GPG_SIGNATURE_TYPE')
+            is_ascii_sig = (sig_type.upper() != "BIN")
+            signer.detach_sign(os.path.join(self.deploy_dir, 'repodata', 'repomd.xml'),
+                               self.d.getVar('PACKAGE_FEED_GPG_NAME'),
+                               self.d.getVar('PACKAGE_FEED_GPG_PASSPHRASE_FILE'),
+                               armor=is_ascii_sig)
+
+
 class OpkgIndexer(Indexer):
     def write_index(self):
         arch_vars = ["ALL_MULTILIB_PACKAGE_ARCHS",
-- 
2.12.3



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v4 2/8] dnf: rrecommend gnupg
  2017-08-15 11:34 [PATCH v4 0/8] Support signed RPM package feeds Markus Lehtonen
  2017-08-15 11:34 ` [PATCH v4 1/8] lib/oe/package_manager: re-implement rpm feed signing Markus Lehtonen
@ 2017-08-15 11:34 ` Markus Lehtonen
  2017-08-15 11:34 ` [PATCH v4 3/8] signing-keys: delete unused tasks Markus Lehtonen
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2017-08-15 11:34 UTC (permalink / raw)
  To: openembedded-core

This makes it possible to enable 'repo_gpgcheck' in dnf.conf. That is, do
GPG signature check on repository metadata. Without gnupg dnf fails with
"error: Invalid crypto engine."

[YOCTO #11209]

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
 meta/recipes-devtools/dnf/dnf_2.6.3.bb | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/meta/recipes-devtools/dnf/dnf_2.6.3.bb b/meta/recipes-devtools/dnf/dnf_2.6.3.bb
index ade55ea0a8..51072901e4 100644
--- a/meta/recipes-devtools/dnf/dnf_2.6.3.bb
+++ b/meta/recipes-devtools/dnf/dnf_2.6.3.bb
@@ -26,6 +26,8 @@ EXTRA_OECMAKE = " -DWITH_MAN=0 -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -
 
 BBCLASSEXTEND = "native nativesdk"
 RDEPENDS_${PN}_class-target += "python3-core python3-codecs python3-netclient python3-email python3-threading python3-distutils librepo python3-shell python3-subprocess libcomps libdnf python3-sqlite3 python3-compression python3-rpm python3-iniparse python3-json python3-importlib python3-curses python3-argparse python3-misc python3-gpg"
+# Recommend gnupg so that GPG signature check on repository metadata is possible
+RRECOMMENDS_${PN}_class-target += "gnupg"
 
 # Create a symlink called 'dnf' as 'make install' does not do it, but
 # .spec file in dnf source tree does (and then Fedora and dnf documentation
-- 
2.12.3



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v4 3/8] signing-keys: delete unused tasks
  2017-08-15 11:34 [PATCH v4 0/8] Support signed RPM package feeds Markus Lehtonen
  2017-08-15 11:34 ` [PATCH v4 1/8] lib/oe/package_manager: re-implement rpm feed signing Markus Lehtonen
  2017-08-15 11:34 ` [PATCH v4 2/8] dnf: rrecommend gnupg Markus Lehtonen
@ 2017-08-15 11:34 ` Markus Lehtonen
  2017-08-15 11:34 ` [PATCH v4 4/8] sign_package_feed.bbclass: install signing key into rootfs Markus Lehtonen
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2017-08-15 11:34 UTC (permalink / raw)
  To: openembedded-core

In particular, do_unpack needs to be deleted as it was causing missing
subpackages. Do_unpack cleans the builddir and if it was run after
do_get_public_keys it cleaned up all keys causing no packages to be
built.

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
 meta/recipes-core/meta/signing-keys.bb | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/meta/recipes-core/meta/signing-keys.bb b/meta/recipes-core/meta/signing-keys.bb
index aaa01d0c34..ebfb08c433 100644
--- a/meta/recipes-core/meta/signing-keys.bb
+++ b/meta/recipes-core/meta/signing-keys.bb
@@ -71,3 +71,11 @@ do_deploy[cleandirs] = "${DEPLOYDIR}"
 # clear stamp-extra-info since MACHINE is normally put there by deploy.bbclass
 do_deploy[stamp-extra-info] = ""
 addtask deploy after do_get_public_keys
+
+# Delete unnecessary tasks. In particular, "do_unpack" _must_ be deleted because
+# it cleans ${B} and will wipe any keys exported by do_get_public_keys.
+deltask do_fetch
+deltask do_unpack
+deltask do_patch
+deltask do_configure
+deltask do_compile
-- 
2.12.3



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v4 4/8] sign_package_feed.bbclass: install signing key into rootfs
  2017-08-15 11:34 [PATCH v4 0/8] Support signed RPM package feeds Markus Lehtonen
                   ` (2 preceding siblings ...)
  2017-08-15 11:34 ` [PATCH v4 3/8] signing-keys: delete unused tasks Markus Lehtonen
@ 2017-08-15 11:34 ` Markus Lehtonen
  2017-08-15 11:34 ` [PATCH v4 5/8] package_manager.py: enable dnf's repo_gpgcheck if feed signing is enabled Markus Lehtonen
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2017-08-15 11:34 UTC (permalink / raw)
  To: openembedded-core

If package-management is enabled.

[YOCTO #11209]

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
 meta/classes/sign_package_feed.bbclass | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/meta/classes/sign_package_feed.bbclass b/meta/classes/sign_package_feed.bbclass
index 71df03bab3..f03c4802d0 100644
--- a/meta/classes/sign_package_feed.bbclass
+++ b/meta/classes/sign_package_feed.bbclass
@@ -28,6 +28,9 @@ PACKAGE_FEED_SIGN = '1'
 PACKAGE_FEED_GPG_BACKEND ?= 'local'
 PACKAGE_FEED_GPG_SIGNATURE_TYPE ?= 'ASC'
 
+# Make feed signing key to be present in rootfs
+FEATURE_PACKAGES_package-management_append = " signing-keys-packagefeed"
+
 python () {
     # Check sanity of configuration
     for var in ('PACKAGE_FEED_GPG_NAME', 'PACKAGE_FEED_GPG_PASSPHRASE_FILE'):
-- 
2.12.3



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v4 5/8] package_manager.py: enable dnf's repo_gpgcheck if feed signing is enabled
  2017-08-15 11:34 [PATCH v4 0/8] Support signed RPM package feeds Markus Lehtonen
                   ` (3 preceding siblings ...)
  2017-08-15 11:34 ` [PATCH v4 4/8] sign_package_feed.bbclass: install signing key into rootfs Markus Lehtonen
@ 2017-08-15 11:34 ` Markus Lehtonen
  2017-08-15 11:34 ` [PATCH v4 6/8] oeqa: fix dnf tests Markus Lehtonen
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2017-08-15 11:34 UTC (permalink / raw)
  To: openembedded-core

If package feed signing is enabled enable repo gpg signature check for
rpm repositories added via PACKAGE_FEED_URIS. This has the implication
that all repositories added via this mechanism must be signed with the
same key.

[YOCTO #11209]

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
 meta/lib/oe/package_manager.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index 942f2dd903..d43d729203 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -559,6 +559,12 @@ class RpmPM(PackageManager):
         if feed_uris == "":
             return
 
+        if self.d.getVar('PACKAGE_FEED_SIGN') == '1':
+            gpg_opts = 'repo_gpgcheck=1\n'
+            gpg_opts += 'gpgkey=file://%s/pki/packagefeed-gpg/PACKAGEFEED-GPG-KEY-%s\n' % (self.d.getVar('sysconfdir'), self.d.getVar('DISTRO_VERSION'))
+        else:
+            gpg_opts = ''
+
         bb.utils.mkdirhier(oe.path.join(self.target_rootfs, "etc", "yum.repos.d"))
         remote_uris = self.construct_uris(feed_uris.split(), feed_base_paths.split())
         for uri in remote_uris:
@@ -569,12 +575,12 @@ class RpmPM(PackageManager):
                     repo_id   = "oe-remote-repo"  + "-".join(urlparse(repo_uri).path.split("/"))
                     repo_name = "OE Remote Repo:" + " ".join(urlparse(repo_uri).path.split("/"))
                     open(oe.path.join(self.target_rootfs, "etc", "yum.repos.d", repo_base + ".repo"), 'a').write(
-                             "[%s]\nname=%s\nbaseurl=%s\n\n" % (repo_id, repo_name, repo_uri))
+                             "[%s]\nname=%s\nbaseurl=%s\n%s\n" % (repo_id, repo_name, repo_uri, gpg_opts))
             else:
                 repo_name = "OE Remote Repo:" + " ".join(urlparse(uri).path.split("/"))
                 repo_uri = uri
                 open(oe.path.join(self.target_rootfs, "etc", "yum.repos.d", repo_base + ".repo"), 'w').write(
-                             "[%s]\nname=%s\nbaseurl=%s\n" % (repo_base, repo_name, repo_uri))
+                             "[%s]\nname=%s\nbaseurl=%s\n%s" % (repo_base, repo_name, repo_uri, gpg_opts))
 
     def _prepare_pkg_transaction(self):
         os.environ['D'] = self.target_rootfs
-- 
2.12.3



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v4 6/8] oeqa: fix dnf tests
  2017-08-15 11:34 [PATCH v4 0/8] Support signed RPM package feeds Markus Lehtonen
                   ` (4 preceding siblings ...)
  2017-08-15 11:34 ` [PATCH v4 5/8] package_manager.py: enable dnf's repo_gpgcheck if feed signing is enabled Markus Lehtonen
@ 2017-08-15 11:34 ` Markus Lehtonen
  2017-08-15 11:34 ` [PATCH v4 7/8] oeqa: fix temp file handling in dnf package feed test Markus Lehtonen
  2017-08-15 11:34 ` [PATCH v4 8/8] dnf: expand dnf selftest to test signed package feeds Markus Lehtonen
  7 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2017-08-15 11:34 UTC (permalink / raw)
  To: openembedded-core

Rename one dnf runtime test that it will recognized as a python module
and thus also found by the oe test loader. Also, fix value of
TEST_SUITES in dnf selftest so that all test dependencies are satisfied
and the runtime test may be successfully run from there.

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
 meta-selftest/lib/oeqa/runtime/cases/{dnf-runtime.py => dnf_runtime.py} | 0
 meta/lib/oeqa/selftest/cases/runtime_test.py                            | 2 +-
 2 files changed, 1 insertion(+), 1 deletion(-)
 rename meta-selftest/lib/oeqa/runtime/cases/{dnf-runtime.py => dnf_runtime.py} (100%)

diff --git a/meta-selftest/lib/oeqa/runtime/cases/dnf-runtime.py b/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py
similarity index 100%
rename from meta-selftest/lib/oeqa/runtime/cases/dnf-runtime.py
rename to meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py
diff --git a/meta/lib/oeqa/selftest/cases/runtime_test.py b/meta/lib/oeqa/selftest/cases/runtime_test.py
index 72f906deea..27cf584ea5 100644
--- a/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -138,7 +138,7 @@ class TestImage(OESelftestTestCase):
             self.skipTest('core-image-full-cmdline not buildable for poky-tiny')
 
         features = 'INHERIT += "testimage"\n'
-        features += 'TEST_SUITES = "ping ssh dnf-runtime"\n'
+        features += 'TEST_SUITES = "ping ssh dnf_runtime dnf.DnfBasicTest.test_dnf_help"\n'
         # We don't yet know what the server ip and port will be - they will be patched
         # in at the start of the on-image test
         features += 'PACKAGE_FEED_URIS = "http://bogus_ip:bogus_port"\n'
-- 
2.12.3



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v4 7/8] oeqa: fix temp file handling in dnf package feed test
  2017-08-15 11:34 [PATCH v4 0/8] Support signed RPM package feeds Markus Lehtonen
                   ` (5 preceding siblings ...)
  2017-08-15 11:34 ` [PATCH v4 6/8] oeqa: fix dnf tests Markus Lehtonen
@ 2017-08-15 11:34 ` Markus Lehtonen
  2017-08-15 11:34 ` [PATCH v4 8/8] dnf: expand dnf selftest to test signed package feeds Markus Lehtonen
  7 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2017-08-15 11:34 UTC (permalink / raw)
  To: openembedded-core

Prevent stale temp files and a possible (if unlikely) race in tempfile
usage.

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
 meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py b/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py
index 123e7259f1..68e56f2c5e 100644
--- a/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py
+++ b/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py
@@ -6,6 +6,8 @@ class DnfSelftest(DnfTest):
 
     @classmethod
     def setUpClass(cls):
+        import tempfile
+        cls.temp_dir = tempfile.TemporaryDirectory(prefix="oeqa-remotefeeds-")
         cls.repo_server = HTTPService(os.path.join(cls.tc.td['WORKDIR'], 'oe-rootfs-repo'),
                                       cls.tc.target.server_ip)
         cls.repo_server.start()
@@ -13,6 +15,7 @@ class DnfSelftest(DnfTest):
     @classmethod
     def tearDownClass(cls):
         cls.repo_server.stop()
+        cls.temp_dir.cleanup()
 
     @OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
     def test_verify_package_feeds(self):
@@ -25,11 +28,11 @@ class DnfSelftest(DnfTest):
         """
         # When we created an image, we had to supply fake ip and port
         # for the feeds. Now we can patch the real ones into the config file.
-        import tempfile
-        temp_file = tempfile.TemporaryDirectory(prefix="oeqa-remotefeeds-").name
+        temp_file = os.path.join(self.temp_dir.name, 'tmp.repo')
         self.tc.target.copyFrom("/etc/yum.repos.d/oe-remote-repo.repo", temp_file)
         fixed_config = open(temp_file, "r").read().replace("bogus_ip", self.tc.target.server_ip).replace("bogus_port", str(self.repo_server.port))
-        open(temp_file, "w").write(fixed_config)
+        with open(temp_file, "w") as f:
+            f.write(fixed_config)
         self.tc.target.copyTo(temp_file, "/etc/yum.repos.d/oe-remote-repo.repo")
 
         import re
-- 
2.12.3



^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v4 8/8] dnf: expand dnf selftest to test signed package feeds
  2017-08-15 11:34 [PATCH v4 0/8] Support signed RPM package feeds Markus Lehtonen
                   ` (6 preceding siblings ...)
  2017-08-15 11:34 ` [PATCH v4 7/8] oeqa: fix temp file handling in dnf package feed test Markus Lehtonen
@ 2017-08-15 11:34 ` Markus Lehtonen
  7 siblings, 0 replies; 9+ messages in thread
From: Markus Lehtonen @ 2017-08-15 11:34 UTC (permalink / raw)
  To: openembedded-core

[YOCTO #11209]

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
---
 meta-selftest/files/signing/key.passphrase          |  1 +
 meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py |  4 +++-
 meta/lib/oeqa/selftest/cases/runtime_test.py        | 12 +++++++++++-
 3 files changed, 15 insertions(+), 2 deletions(-)
 create mode 100644 meta-selftest/files/signing/key.passphrase

diff --git a/meta-selftest/files/signing/key.passphrase b/meta-selftest/files/signing/key.passphrase
new file mode 100644
index 0000000000..5271a52680
--- /dev/null
+++ b/meta-selftest/files/signing/key.passphrase
@@ -0,0 +1 @@
+test123
diff --git a/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py b/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py
index 68e56f2c5e..6742e8c080 100644
--- a/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py
+++ b/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py
@@ -36,7 +36,9 @@ class DnfSelftest(DnfTest):
         self.tc.target.copyTo(temp_file, "/etc/yum.repos.d/oe-remote-repo.repo")
 
         import re
-        output_makecache = self.dnf('makecache')
+        # Use '-y' for non-interactive mode: automatically import the feed signing key
+        output_makecache = self.dnf('-y makecache')
+        self.assertTrue(re.match(r".*Failed to synchronize cache", output_makecache, re.DOTALL) is None, msg = "dnf makecache failed to synchronize repo: %s" %(output_makecache))
         self.assertTrue(re.match(r".*Metadata cache created", output_makecache, re.DOTALL) is not None, msg = "dnf makecache failed: %s" %(output_makecache))
 
         output_repoinfo = self.dnf('repoinfo')
diff --git a/meta/lib/oeqa/selftest/cases/runtime_test.py b/meta/lib/oeqa/selftest/cases/runtime_test.py
index 27cf584ea5..673b1998ac 100644
--- a/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -3,6 +3,7 @@ from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars, runqem
 from oeqa.core.decorator.oeid import OETestID
 import os
 import re
+import tempfile
 
 class TestExport(OESelftestTestCase):
 
@@ -143,7 +144,16 @@ class TestImage(OESelftestTestCase):
         # in at the start of the on-image test
         features += 'PACKAGE_FEED_URIS = "http://bogus_ip:bogus_port"\n'
         features += 'EXTRA_IMAGE_FEATURES += "package-management"\n'
-        features += 'PACKAGE_CLASSES = "package_rpm"'
+        features += 'PACKAGE_CLASSES = "package_rpm"\n'
+
+        # Enable package feed signing
+        self.gpg_home = tempfile.TemporaryDirectory(prefix="oeqa-feed-sign-")
+        signing_key_dir = os.path.join(self.testlayer_path, 'files', 'signing')
+        runCmd('gpg --batch --homedir %s --import %s' % (self.gpg_home.name, os.path.join(signing_key_dir, 'key.secret')))
+        features += 'INHERIT += "sign_package_feed"\n'
+        features += 'PACKAGE_FEED_GPG_NAME = "testuser"\n'
+        features += 'PACKAGE_FEED_GPG_PASSPHRASE_FILE = "%s"\n' % os.path.join(signing_key_dir, 'key.passphrase')
+        features += 'GPG_PATH = "%s"\n' % self.gpg_home.name
         self.write_config(features)
 
         # Build core-image-sato and testimage
-- 
2.12.3



^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2017-08-15 11:35 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-08-15 11:34 [PATCH v4 0/8] Support signed RPM package feeds Markus Lehtonen
2017-08-15 11:34 ` [PATCH v4 1/8] lib/oe/package_manager: re-implement rpm feed signing Markus Lehtonen
2017-08-15 11:34 ` [PATCH v4 2/8] dnf: rrecommend gnupg Markus Lehtonen
2017-08-15 11:34 ` [PATCH v4 3/8] signing-keys: delete unused tasks Markus Lehtonen
2017-08-15 11:34 ` [PATCH v4 4/8] sign_package_feed.bbclass: install signing key into rootfs Markus Lehtonen
2017-08-15 11:34 ` [PATCH v4 5/8] package_manager.py: enable dnf's repo_gpgcheck if feed signing is enabled Markus Lehtonen
2017-08-15 11:34 ` [PATCH v4 6/8] oeqa: fix dnf tests Markus Lehtonen
2017-08-15 11:34 ` [PATCH v4 7/8] oeqa: fix temp file handling in dnf package feed test Markus Lehtonen
2017-08-15 11:34 ` [PATCH v4 8/8] dnf: expand dnf selftest to test signed package feeds Markus Lehtonen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.