| |
@@ -665,10 +665,24 @@
|
| |
def load_nameverrel(self):
|
| |
"""Set the release of a package."""
|
| |
|
| |
+ # If the repo is a container, we check for 'verrel' information in the Dockerfile.
|
| |
+ if self.ns in ("container", "containers"):
|
| |
+ if os.path.isfile(os.path.join(self.layout.root_dir, "Dockerfile")):
|
| |
+ docker_name, docker_version, docker_release = self.load_nameverrel_dockerfile()
|
| |
+
|
| |
+ self._package_name_spec = docker_name
|
| |
+ self._epoch = "0"
|
| |
+ self._ver = docker_version
|
| |
+ self._rel = docker_release
|
| |
+ return
|
| |
+ else:
|
| |
+ raise rpkgError("Dockerfile for {0} not found.".format(self.repo_name))
|
| |
+
|
| |
+ # Otherwise, we get 'verrel' information from the '.spec' file.
|
| |
cmd = ['rpm']
|
| |
cmd.extend(self.rpmdefines)
|
| |
|
| |
- specfile_path = os.path.join(self.path, self.spec)
|
| |
+ specfile_path = os.path.join(self.layout.specdir, self.spec)
|
| |
|
| |
if specfile_uses_rpmautospec:
|
| |
self._uses_autorelease = specfile_uses_rpmautospec(
|
| |
@@ -706,7 +720,7 @@
|
| |
self.log.error(err)
|
| |
if proc.returncode > 0:
|
| |
raise rpkgError('Could not get n-v-r-e from %s'
|
| |
- % os.path.join(self.path, self.spec))
|
| |
+ % os.path.join(self.layout.specdir, self.spec))
|
| |
|
| |
# Get just the output, then split it by ??, grab the first and split
|
| |
# again to get ver and rel
|
| |
@@ -4090,3 +4104,34 @@
|
| |
if ret == 0:
|
| |
self.log.info("Remote '{}' for '{}' was added.".format(remote_name, anongiturl))
|
| |
self._run_command(['git', 'fetch', remote_name])
|
| |
+
|
| |
+ def load_nameverrel_dockerfile(self):
|
| |
+
|
| |
+ named_version_pattern = re.compile(r"{0}_VERSION\s?=\s?([0-9.]+)".format(self.repo_name),
|
| |
+ re.IGNORECASE)
|
| |
+ version_pattern = re.compile(r"\bVERSION\b\s?=\s?([0-9.]+)", re.IGNORECASE)
|
| |
+ release_pattern = re.compile(r"\bRELEASE\b\s?=\s?([0-9.]+)", re.IGNORECASE)
|
| |
+
|
| |
+ with open(os.path.join(self.layout.root_dir, "Dockerfile"), "r") as f:
|
| |
+ text = str(f.read())
|
| |
+
|
| |
+ named_version_match = re.search(named_version_pattern, text)
|
| |
+ version_match = re.search(version_pattern, text)
|
| |
+ release_match = re.search(release_pattern, text)
|
| |
+
|
| |
+ if named_version_match:
|
| |
+ version = named_version_match.group(1)
|
| |
+ else:
|
| |
+ if version_match:
|
| |
+ version = version_match.group(1)
|
| |
+ else:
|
| |
+ raise rpkgError('Could not query n-v-r of %s: no version in Dockerfile.'
|
| |
+ % (self.repo_name))
|
| |
+
|
| |
+ if release_match:
|
| |
+ release = release_match.group(1)
|
| |
+ else:
|
| |
+ raise rpkgError('Could not query n-v-r of %s: no release value in Dockerfile.'
|
| |
+ % (self.repo_name))
|
| |
+
|
| |
+ return self._repo_name, version, release
|
| |
Added 'x-pkg verrel' for containers
Fixes: #547
Signed-off-by: jkunstle jkunstle@redhat.com