summaryrefslogtreecommitdiffstats
path: root/meta/lib/oe/package_manager.py
diff options
context:
space:
mode:
Diffstat (limited to 'meta/lib/oe/package_manager.py')
-rw-r--r--meta/lib/oe/package_manager.py31
1 files changed, 11 insertions, 20 deletions
diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index 5b87f45127..3f9e4e3b60 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -9,6 +9,7 @@ import bb
9import tempfile 9import tempfile
10import oe.utils 10import oe.utils
11import string 11import string
12from oe.gpg_sign import get_signer
12 13
13# this can be used by all PM backends to create the index files in parallel 14# this can be used by all PM backends to create the index files in parallel
14def create_index(arg): 15def create_index(arg):
@@ -109,16 +110,14 @@ class RpmIndexer(Indexer):
109 110
110 rpm_createrepo = bb.utils.which(os.getenv('PATH'), "createrepo") 111 rpm_createrepo = bb.utils.which(os.getenv('PATH'), "createrepo")
111 if self.d.getVar('PACKAGE_FEED_SIGN', True) == '1': 112 if self.d.getVar('PACKAGE_FEED_SIGN', True) == '1':
112 pkgfeed_gpg_name = self.d.getVar('PACKAGE_FEED_GPG_NAME', True) 113 signer = get_signer(self.d,
113 pkgfeed_gpg_pass = self.d.getVar('PACKAGE_FEED_GPG_PASSPHRASE_FILE', True) 114 self.d.getVar('PACKAGE_FEED_GPG_BACKEND', True),
115 self.d.getVar('PACKAGE_FEED_GPG_NAME', True),
116 self.d.getVar('PACKAGE_FEED_GPG_PASSPHRASE_FILE', True))
114 else: 117 else:
115 pkgfeed_gpg_name = None 118 signer = None
116 pkgfeed_gpg_pass = None
117 gpg_bin = self.d.getVar('GPG_BIN', True) or \
118 bb.utils.which(os.getenv('PATH'), "gpg")
119
120 index_cmds = [] 119 index_cmds = []
121 repo_sign_cmds = [] 120 repomd_files = []
122 rpm_dirs_found = False 121 rpm_dirs_found = False
123 for arch in archs: 122 for arch in archs:
124 dbpath = os.path.join(self.d.getVar('WORKDIR', True), 'rpmdb', arch) 123 dbpath = os.path.join(self.d.getVar('WORKDIR', True), 'rpmdb', arch)
@@ -130,15 +129,7 @@ class RpmIndexer(Indexer):
130 129
131 index_cmds.append("%s --dbpath %s --update -q %s" % \ 130 index_cmds.append("%s --dbpath %s --update -q %s" % \
132 (rpm_createrepo, dbpath, arch_dir)) 131 (rpm_createrepo, dbpath, arch_dir))
133 if pkgfeed_gpg_name: 132 repomd_files.append(os.path.join(arch_dir, 'repodata', 'repomd.xml'))
134 repomd_file = os.path.join(arch_dir, 'repodata', 'repomd.xml')
135 gpg_cmd = "%s --detach-sign --armor --batch --no-tty --yes " \
136 "--passphrase-file '%s' -u '%s' " % \
137 (gpg_bin, pkgfeed_gpg_pass, pkgfeed_gpg_name)
138 if self.d.getVar('GPG_PATH', True):
139 gpg_cmd += "--homedir %s " % self.d.getVar('GPG_PATH', True)
140 gpg_cmd += repomd_file
141 repo_sign_cmds.append(gpg_cmd)
142 133
143 rpm_dirs_found = True 134 rpm_dirs_found = True
144 135
@@ -151,9 +142,9 @@ class RpmIndexer(Indexer):
151 if result: 142 if result:
152 bb.fatal('%s' % ('\n'.join(result))) 143 bb.fatal('%s' % ('\n'.join(result)))
153 # Sign repomd 144 # Sign repomd
154 result = oe.utils.multiprocess_exec(repo_sign_cmds, create_index) 145 if signer:
155 if result: 146 for repomd in repomd_files:
156 bb.fatal('%s' % ('\n'.join(result))) 147 signer.detach_sign(repomd)
157 # Copy pubkey(s) to repo 148 # Copy pubkey(s) to repo
158 distro_version = self.d.getVar('DISTRO_VERSION', True) or "oe.0" 149 distro_version = self.d.getVar('DISTRO_VERSION', True) or "oe.0"
159 if self.d.getVar('RPM_SIGN_PACKAGES', True) == '1': 150 if self.d.getVar('RPM_SIGN_PACKAGES', True) == '1':