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):
|
||||
raise NotImplementedError("This command is not yet implemented in centpkg")
|
||||
|
||||
def sources(self, *args, **kwargs):
|
||||
raise NotImplementedError("This command is not yet implemented in centpkg")
|
||||
def sources(self, outdir=None):
|
||||
"""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):
|
||||
raise NotImplementedError("This command is not yet implemented in centpkg")
|
||||
|
|
Loading…
Add table
Reference in a new issue