mirror of
https://git.centos.org/centos/centpkg.git
synced 2025-02-23 16:22:55 +00:00
implement sources to download from the CentOS lookaside cache
This commit is contained in:
parent
6f323dcd6f
commit
9bd7b3b47a
1 changed files with 63 additions and 2 deletions
|
@ -105,8 +105,69 @@ class Commands(pyrpkg.Commands):
|
||||||
def push(self, *args, **kwargs):
|
def push(self, *args, **kwargs):
|
||||||
raise NotImplementedError("This command is not yet implemented in centpkg")
|
raise NotImplementedError("This command is not yet implemented in centpkg")
|
||||||
|
|
||||||
def sources(self, *args, **kwargs):
|
def sources(self, outdir=None):
|
||||||
raise NotImplementedError("This command is not yet implemented in centpkg")
|
"""Download source files"""
|
||||||
|
|
||||||
|
# We are not using sources() in super because the metadata file is
|
||||||
|
# hard-coded into the first open() call. Otherwise this is copied from
|
||||||
|
# upstream pyrpkg
|
||||||
|
|
||||||
|
try:
|
||||||
|
archives = open(os.path.join(self.path,
|
||||||
|
'.{0}.metadata'.format(self.module_name)),
|
||||||
|
'r').readlines()
|
||||||
|
except IOError, e:
|
||||||
|
raise pyrpkg.rpkgError('%s is not a valid repo: %s' % (self.path, e))
|
||||||
|
# Default to putting the files where the module is
|
||||||
|
if not outdir:
|
||||||
|
outdir = self.path
|
||||||
|
for archive in archives:
|
||||||
|
try:
|
||||||
|
# This strip / split is kind a ugly, but checksums shouldn't have
|
||||||
|
# two spaces in them. sources file might need more structure in the
|
||||||
|
# future
|
||||||
|
csum, file = archive.strip().split(' ', 1)
|
||||||
|
except ValueError:
|
||||||
|
raise pyrpkg.rpkgError('Malformed sources file.')
|
||||||
|
# See if we already have a valid copy downloaded
|
||||||
|
outfile = os.path.join(outdir, file)
|
||||||
|
if os.path.exists(outfile):
|
||||||
|
if self._verify_file(outfile, csum, self.lookasidehash):
|
||||||
|
continue
|
||||||
|
self.log.info("Downloading %s" % (file))
|
||||||
|
url = '%s/%s/%s/%s' % (self.lookaside, self.module_name,
|
||||||
|
self.branch_merge,
|
||||||
|
csum,
|
||||||
|
)
|
||||||
|
# There is some code here for using pycurl, but for now,
|
||||||
|
# just use subprocess
|
||||||
|
#output = open(file, 'wb')
|
||||||
|
#curl = pycurl.Curl()
|
||||||
|
#curl.setopt(pycurl.URL, url)
|
||||||
|
#curl.setopt(pycurl.FOLLOWLOCATION, 1)
|
||||||
|
#curl.setopt(pycurl.MAXREDIRS, 5)
|
||||||
|
#curl.setopt(pycurl.CONNECTTIMEOUT, 30)
|
||||||
|
#curl.setopt(pycurl.TIMEOUT, 300)
|
||||||
|
#curl.setopt(pycurl.WRITEDATA, output)
|
||||||
|
#try:
|
||||||
|
# curl.perform()
|
||||||
|
#except:
|
||||||
|
# print "Problems downloading %s" % url
|
||||||
|
# curl.close()
|
||||||
|
# output.close()
|
||||||
|
# return 1
|
||||||
|
#curl.close()
|
||||||
|
#output.close()
|
||||||
|
# These options came from Makefile.common.
|
||||||
|
# Probably need to support wget as well
|
||||||
|
command = ['curl', '-H', 'Pragma:', '-o', outfile, '-R', '-S', '--fail']
|
||||||
|
if self.quiet:
|
||||||
|
command.append('-s')
|
||||||
|
command.append(url)
|
||||||
|
self._run_command(command)
|
||||||
|
if not self._verify_file(outfile, csum, self.lookasidehash):
|
||||||
|
raise pyrpkg.rpkgError('%s failed checksum' % file)
|
||||||
|
return
|
||||||
|
|
||||||
def switch_branch(self, *args, **kwargs):
|
def switch_branch(self, *args, **kwargs):
|
||||||
raise NotImplementedError("This command is not yet implemented in centpkg")
|
raise NotImplementedError("This command is not yet implemented in centpkg")
|
||||||
|
|
Loading…
Add table
Reference in a new issue