diff options
author | Jesse Keating <jkeating@redhat.com> | 2011-01-21 15:36:02 -0800 |
---|---|---|
committer | Jesse Keating <jkeating@redhat.com> | 2011-01-21 15:36:02 -0800 |
commit | d4bab75fe9d4ef0316fbb6a14c024685bdc504d3 (patch) | |
tree | 9d680ba4b684e058b5291dab22ceed21ff66099a /src/pyfedpkg/__init__.py | |
parent | a1e7754c630b0d7cea8eeaec87f956f6555517e4 (diff) | |
download | fedora-packager-d4bab75fe9d4ef0316fbb6a14c024685bdc504d3.tar.gz fedora-packager-d4bab75fe9d4ef0316fbb6a14c024685bdc504d3.tar.xz fedora-packager-d4bab75fe9d4ef0316fbb6a14c024685bdc504d3.zip |
Get package name from the specfile. (Ticket 75)
We can't trust the name of the specfile to match, so get the name as
defined within the specfile.
Diffstat (limited to 'src/pyfedpkg/__init__.py')
-rw-r--r-- | src/pyfedpkg/__init__.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/pyfedpkg/__init__.py b/src/pyfedpkg/__init__.py index 16dc291..54dcb74 100644 --- a/src/pyfedpkg/__init__.py +++ b/src/pyfedpkg/__init__.py @@ -95,6 +95,21 @@ def _hash_file(file, hashtype): input.close() return sum.hexdigest() +def _name_from_spec(spec): + """Return the base package name from the spec.""" + + # get the name + cmd = ['rpm', '-q', '--qf', '%{NAME} ', '--specfile', spec] + # Run the command + log.debug('Running: %s' % ' '.join(cmd)) + try: + proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + output, error = proc.communicate() + except OSError, e: + raise FedpkgError(e) + return output.split()[0] + def _run_command(cmd, shell=False, env=None, pipe=[], cwd=None): """Run the given command. @@ -741,7 +756,7 @@ def sources(path, outdir=None): break if not spec: raise FedpkgError('%s is not a valid repo' % path) - module = spec.split('.spec')[0] + module = _name_from_spec(os.path.join(path, spec)) try: archives = open(os.path.join(path, 'sources'), 'r').readlines() @@ -1042,7 +1057,7 @@ class PackageModule: self.lookaside = LOOKASIDE self.lookasidehash = LOOKASIDEHASH self.spec = self.gimmespec() - self.module = self.spec.split('.spec')[0] + self.module = _name_from_spec(os.path.join(self.path, self.spec)) self.localarch = self._getlocalarch() # Set the default mock config to None, not all branches have a config self.mockconfig = None |