diff options
author | Javier Jardón <jjardon@gnome.org> | 2018-02-23 17:00:38 +0000 |
---|---|---|
committer | Javier Jardón <jjardon@gnome.org> | 2018-02-23 17:00:38 +0000 |
commit | 688e7ae8f0c9283f594f9c9ea9497508914b2e79 (patch) | |
tree | ad4b4d1f1117b3eea85fe5c67b76019d2a5bd1f1 | |
parent | 5b4fd1a0afb4e60e2af65fe8ce75d5312825fa42 (diff) | |
parent | 1210d90a077d44f80497699fc976de526ad8313a (diff) | |
download | ybd-688e7ae8f0c9283f594f9c9ea9497508914b2e79.tar.gz |
Merge branch 'benbrown/rpm-baserock-dir' into 'master'
Allow the baserock directory to be used for rpm related files
See merge request baserock/ybd!407
-rw-r--r-- | ybd/rpm.py | 23 |
1 files changed, 19 insertions, 4 deletions
@@ -255,13 +255,23 @@ def extract_defines(dn): return ''.join(strings) +def sanitise_rpm_filepath(rpm_filepath): + return re.sub(r'^/?baserock/', '', rpm_filepath) + + def extract_metafiles(system, dn, instdir, metadir): packages = dn['rpm-metadata'].get('packages', []) for package in packages: metafile = package.get('metafile', '').lstrip(os.sep) metafile = expand_macro(system, dn, metafile) if metafile: - shutil.move(os.path.join(instdir, metafile), metadir) + try: + shutil.move(os.path.join(instdir, metafile), metadir) + except IOError: + filepath = sanitise_rpm_filepath(metafile) + if not os.path.exists(os.path.join(metadir, filepath)): + log(dn, 'ERROR: Failed to extract metafile:', metafile) + sys.exit(1) def extract_manifests(system, dn, instdir, metadir): @@ -275,7 +285,8 @@ def extract_manifests(system, dn, instdir, metadir): try: shutil.move(os.path.join(instdir, manifest), metadir) except IOError: - if not os.path.exists(os.path.join(metadir, manifest)): + filepath = sanitise_rpm_filepath(manifest) + if not os.path.exists(os.path.join(metadir, filepath)): log(dn, 'WARNING: Failed to extract manifest:', manifest) @@ -356,11 +367,15 @@ def stage_prebuilts(dn, system): for package in dn['rpm-metadata']['packages']: if 'path' not in package: continue + path = package['path'].lstrip(os.sep) basedir = os.path.join(system['sandbox'], '%s.inst' % dn['name']) cache_path = os.path.join( system['sandbox'], 'RPMS', '%s.rpm' % package['name']) - rpm_glob = sorted(glob( - os.path.join(basedir, package['path'].lstrip('/')))) + rpm_glob = sorted(glob(os.path.join(basedir, path))) + if not rpm_glob: + metadir = os.path.join(system['sandbox'], '%s.meta' % dn['name']) + rpm_glob = sorted(glob(os.path.join( + metadir, sanitise_rpm_filepath(path)))) if not rpm_glob: log(dn, 'Failed to find prebuilt rpm matching', package['path']) sys.exit(1) |