mirror of
https://github.com/clearlinux/autospec.git
synced 2026-08-23 16:05:50 +00:00
Write %setup calls for each tarball
This introduces a lot of similar, but not quite duplicate, code. Definitely a candidate for future refactoring. Passes the flags to %setup to: 1) *not* re-unpack the default (SOURCE0) archive 2) create the directory if the archive doesn't have a top-level prefix 3) unpack the indexed source 4) Use the provided directory name (either the detected prefix, or if none, the basename of the archive file This should handle extra versions in the order they're defined in the versions file.
This commit is contained in:
committed by
William Douglas
parent
a39355e989
commit
90ca404f7a
+20
-4
@@ -64,6 +64,7 @@ class Specfile(object):
|
||||
self.extra_make_install = ""
|
||||
self.extra_make32_install = ""
|
||||
self.tarball_prefix = ""
|
||||
self.prefixes = dict()
|
||||
self.gcov_file = ""
|
||||
self.rawname = ""
|
||||
self.golibpath = ""
|
||||
@@ -410,13 +411,13 @@ class Specfile(object):
|
||||
elif self.default_pattern == "mvnbin":
|
||||
self._write_strip("%setup -q -n " + self.tarball_prefix)
|
||||
else:
|
||||
if self.tarball_prefix:
|
||||
prefix = self.tarball_prefix
|
||||
self._write_strip("%setup -q -n " + self.tarball_prefix)
|
||||
if self.prefixes[self.url]:
|
||||
prefix = self.prefixes[self.url]
|
||||
self._write_strip("%setup -q -n " + prefix)
|
||||
else:
|
||||
# Have to make up a path and create it
|
||||
prefix = os.path.splitext(os.path.basename(self.url))[0]
|
||||
self._write_strip("%setup -q -c " + prefix)
|
||||
self._write_strip("%setup -q -c -n " + prefix)
|
||||
for archive in self.sources["archive"]:
|
||||
# Skip POM files - they don't need to be extracted
|
||||
if archive.endswith('.pom'):
|
||||
@@ -425,6 +426,21 @@ class Specfile(object):
|
||||
self._write_strip("%setup -q -T -D -n {0} -b {1}"
|
||||
.format(prefix,
|
||||
self.source_index[archive]))
|
||||
# Now handle extra versions, indexed by SOURCE
|
||||
for url in self.sources["version"]:
|
||||
if self.prefixes[url]:
|
||||
prefix = self.prefixes[url]
|
||||
self._write_strip("cd ..")
|
||||
self._write_strip("%setup -q -T -n {0} -b {1}"
|
||||
.format(prefix,
|
||||
self.source_index[url]))
|
||||
else:
|
||||
# Have to make up a path and create it
|
||||
prefix = os.path.splitext(os.path.basename(url))[0]
|
||||
self._write_strip("cd ..")
|
||||
self._write_strip("%setup -q -T -c -n {0} -b {1}"
|
||||
.format(prefix,
|
||||
self.source_index[url]))
|
||||
|
||||
for archive, destination in zip(self.sources["archive"], self.sources["destination"]):
|
||||
if destination.startswith(':'):
|
||||
|
||||
+10
-1
@@ -45,6 +45,7 @@ gcov_file = ""
|
||||
archives = []
|
||||
giturl = ""
|
||||
domain = ""
|
||||
prefixes = dict()
|
||||
|
||||
|
||||
def get_go_artifacts(url, target, ver):
|
||||
@@ -146,6 +147,7 @@ def build_unzip(zip_path):
|
||||
and this function gets the 'prefix-dir' portion from the start of the unzip -l output.
|
||||
"""
|
||||
prefix = None
|
||||
zipfile = os.path.basename(zip_path)
|
||||
contents = subprocess.check_output(["unzip", "-q", "-l", zip_path], universal_newlines=True)
|
||||
lines = contents.splitlines() if contents else []
|
||||
# looking for directory prefix in unzip output as it may differ from default
|
||||
@@ -187,7 +189,6 @@ def build_unzip(zip_path):
|
||||
|
||||
# If we didn't find a common prefix, make a dir, based on the zip filename
|
||||
if not prefix:
|
||||
zipfile = os.path.basename(zip_path)
|
||||
subdir = os.path.splitext(zipfile)[0]
|
||||
extract_cmd = "unzip -qq -d {0} {1}".format(
|
||||
os.path.join(build.base_path, subdir), zip_path)
|
||||
@@ -691,6 +692,7 @@ def process(url_arg, name_arg, ver_arg, target, archives_arg, filemanager):
|
||||
global path
|
||||
global tarball_prefix
|
||||
global archives
|
||||
global prefixes
|
||||
url = url_arg
|
||||
name = name_arg
|
||||
version = ver_arg
|
||||
@@ -710,6 +712,8 @@ def process(url_arg, name_arg, ver_arg, target, archives_arg, filemanager):
|
||||
tar_path = check_or_get_file(url, tarfile)
|
||||
# determine extract command and tarball prefix for the tarfile
|
||||
extract_cmd, tarball_prefix = find_extract(tar_path, tarfile)
|
||||
# Store the detected prefix associated with this file
|
||||
prefixes[url] = tarball_prefix
|
||||
# set global path with tarball_prefix
|
||||
path = os.path.join(build.base_path, tarball_prefix)
|
||||
# Now that the metadata has been collected print the header
|
||||
@@ -729,6 +733,9 @@ def process(url_arg, name_arg, ver_arg, target, archives_arg, filemanager):
|
||||
if not extraurl:
|
||||
# Nothing to do here
|
||||
continue
|
||||
if extraurl == url:
|
||||
# This is the same as the SOURCE0 package, which we already handled
|
||||
continue
|
||||
buildpattern.sources["version"].append(extraurl)
|
||||
name, rawname, extraver = name_and_version(name_arg, extraver, filemanager)
|
||||
# Make sure we don't stick to a single version
|
||||
@@ -736,11 +743,13 @@ def process(url_arg, name_arg, ver_arg, target, archives_arg, filemanager):
|
||||
tarfile = os.path.basename(extraurl)
|
||||
tar_path = check_or_get_file(extraurl, tarfile, mode="a")
|
||||
extract_cmd, tarball_prefix = find_extract(tar_path, tarfile)
|
||||
prefixes[extraurl] = tarball_prefix
|
||||
prepare_and_extract(extract_cmd)
|
||||
|
||||
|
||||
def load_specfile(specfile):
|
||||
"""Load the specfile object with the tarball_prefix, gcov_file, and rawname."""
|
||||
specfile.tarball_prefix = tarball_prefix
|
||||
specfile.prefixes = prefixes
|
||||
specfile.gcov_file = gcov_file
|
||||
specfile.rawname = rawname
|
||||
|
||||
Reference in New Issue
Block a user