sourcearchive: Pass target dirs to unpack methods
This changes the internal API to make working with multiple work dirs possible.
This commit is contained in:
@@ -222,9 +222,7 @@ class Builder:
|
||||
|
||||
self.read_translations(self.specdir)
|
||||
|
||||
self.sourceArchives = pisi.sourcearchive.SourceArchives(
|
||||
self.spec,
|
||||
self.pkg_work_dir())
|
||||
self.sourceArchives = pisi.sourcearchive.SourceArchives(self.spec)
|
||||
|
||||
self.set_environment_vars()
|
||||
|
||||
@@ -470,7 +468,7 @@ class Builder:
|
||||
|
||||
def unpack_source_archives(self):
|
||||
ctx.ui.info(_("Unpacking archive(s)..."))
|
||||
self.sourceArchives.unpack()
|
||||
self.sourceArchives.unpack(self.pkg_work_dir())
|
||||
# apply the patches and prepare a source directory for build.
|
||||
if self.apply_patches():
|
||||
# Grab AdditionalFiles
|
||||
|
||||
+9
-10
@@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2005-2010, TUBITAK/UEKAE
|
||||
# Copyright (C) 2005-2011, TUBITAK/UEKAE
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it under
|
||||
# the terms of the GNU General Public License as published by the Free
|
||||
@@ -30,25 +30,24 @@ class Error(pisi.Error):
|
||||
|
||||
class SourceArchives:
|
||||
"""This is a wrapper for supporting multiple SourceArchive objects."""
|
||||
def __init__(self, spec, pkg_work_dir):
|
||||
self.sourceArchives = [SourceArchive(a, pkg_work_dir) for a in spec.source.archive]
|
||||
def __init__(self, spec):
|
||||
self.sourceArchives = [SourceArchive(a) for a in spec.source.archive]
|
||||
|
||||
def fetch(self, interactive=True):
|
||||
for archive in self.sourceArchives:
|
||||
archive.fetch(interactive)
|
||||
|
||||
def unpack(self, clean_dir=True):
|
||||
self.sourceArchives[0].unpack(clean_dir)
|
||||
def unpack(self, target_dir, clean_dir=True):
|
||||
self.sourceArchives[0].unpack(target_dir, clean_dir)
|
||||
for archive in self.sourceArchives[1:]:
|
||||
archive.unpack(clean_dir=False)
|
||||
archive.unpack(target_dir, clean_dir=False)
|
||||
|
||||
|
||||
class SourceArchive:
|
||||
"""source archive. this is a class responsible for fetching
|
||||
and unpacking a source archive"""
|
||||
def __init__(self, archive, pkg_work_dir):
|
||||
def __init__(self, archive):
|
||||
self.url = pisi.uri.URI(archive.uri)
|
||||
self.pkg_work_dir = pkg_work_dir
|
||||
self.archiveFile = os.path.join(ctx.config.archives_dir(), self.url.filename())
|
||||
self.archive = archive
|
||||
|
||||
@@ -113,7 +112,7 @@ class SourceArchive:
|
||||
|
||||
return False
|
||||
|
||||
def unpack(self, clean_dir=True):
|
||||
def unpack(self, target_dir, clean_dir=True):
|
||||
|
||||
# check archive file's integrity
|
||||
if not util.check_file_hash(self.archiveFile, self.archive.sha1sum):
|
||||
@@ -125,5 +124,5 @@ class SourceArchive:
|
||||
raise Error(_("Unknown archive type '%s' is given for '%s'.")
|
||||
% (self.archive.type, self.url.filename()))
|
||||
|
||||
target_dir = os.path.join(self.pkg_work_dir, self.archive.target or "")
|
||||
target_dir = os.path.join(target_dir, self.archive.target or "")
|
||||
archive.unpack(target_dir, clean_dir)
|
||||
|
||||
@@ -13,8 +13,8 @@ class ArchiveTestCase(unittest.TestCase):
|
||||
def testTarUnpack(self):
|
||||
spec = SpecFile('repos/pardus-2007/system/base/curl/pspec.xml')
|
||||
targetDir = '/tmp/tests'
|
||||
archives = sourcearchive.SourceArchives(spec, targetDir)
|
||||
archives.unpack()
|
||||
archives = sourcearchive.SourceArchives(spec)
|
||||
archives.unpack(targetDir)
|
||||
for archive in spec.source.archive:
|
||||
assert archive.type == 'targz'
|
||||
|
||||
@@ -22,7 +22,7 @@ class ArchiveTestCase(unittest.TestCase):
|
||||
def testUnpackTarCond(self):
|
||||
spec = SpecFile('repos/pardus-2007/system/base/curl/pspec.xml')
|
||||
targetDir = '/tmp'
|
||||
archives = sourcearchive.SourceArchives(spec, targetDir)
|
||||
archives = sourcearchive.SourceArchives(spec)
|
||||
for archive in spec.source.archive:
|
||||
url = uri.URI(archive.uri)
|
||||
filePath = join(pisi.context.config.archives_dir(), url.filename())
|
||||
@@ -34,17 +34,17 @@ class ArchiveTestCase(unittest.TestCase):
|
||||
def testZipUnpack(self):
|
||||
spec = SpecFile('repos/pardus-2007/system/base/openssl/pspec.xml')
|
||||
targetDir = '/tmp/tests'
|
||||
archives = sourcearchive.SourceArchives(spec, targetDir)
|
||||
archives = sourcearchive.SourceArchives(spec)
|
||||
archives.fetch()
|
||||
archives.unpack()
|
||||
archives.unpack(targetDir)
|
||||
assert not exists(targetDir + '/openssl')
|
||||
|
||||
def testMakeZip(self):
|
||||
spec = SpecFile('repos/pardus-2007/system/base/openssl/pspec.xml')
|
||||
targetDir = '/tmp/tests'
|
||||
archives = sourcearchive.SourceArchives(spec, targetDir)
|
||||
archives = sourcearchive.SourceArchives(spec)
|
||||
archives.fetch(interactive = False)
|
||||
archives.unpack(clean_dir = True)
|
||||
archives.unpack(targetDir, clean_dir=True)
|
||||
del archives
|
||||
|
||||
newDir = targetDir + '/newZip'
|
||||
|
||||
@@ -6,24 +6,22 @@ class SourceArchiveTestCase(unittest.TestCase):
|
||||
|
||||
def testFetch(self):
|
||||
spec = SpecFile('repos/pardus-2007/system/base/curl/pspec.xml')
|
||||
targetDir = '/tmp/tests'
|
||||
srcarch = pisi.sourcearchive.SourceArchive(spec.source.archive[0], targetDir)
|
||||
srcarch = pisi.sourcearchive.SourceArchive(spec.source.archive[0])
|
||||
self.assert_(not srcarch.fetch())
|
||||
|
||||
def testIscached(self):
|
||||
spec = SpecFile('repos/pardus-2007/system/base/curl/pspec.xml')
|
||||
targetDir = '/tmp/tests'
|
||||
srcarch = pisi.sourcearchive.SourceArchive(spec.source.archive[0], targetDir)
|
||||
srcarch = pisi.sourcearchive.SourceArchive(spec.source.archive[0])
|
||||
assert srcarch.is_cached()
|
||||
|
||||
def testIscached(self):
|
||||
spec = SpecFile('repos/pardus-2007/system/base/curl/pspec.xml')
|
||||
targetDir = '/tmp/tests'
|
||||
srcarch = pisi.sourcearchive.SourceArchive(spec.source.archive[0], targetDir)
|
||||
self.assert_(not srcarch.unpack())
|
||||
srcarch = pisi.sourcearchive.SourceArchive(spec.source.archive[0])
|
||||
self.assert_(not srcarch.unpack(targetDir))
|
||||
|
||||
def testUnpack(self):
|
||||
spec = SpecFile('repos/pardus-2007/system/base/curl/pspec.xml')
|
||||
targetDir = '/tmp/tests'
|
||||
srcarch = pisi.sourcearchive.SourceArchive(spec.source.archive[0], targetDir)
|
||||
srcarch.unpack()
|
||||
srcarch = pisi.sourcearchive.SourceArchive(spec.source.archive[0])
|
||||
srcarch.unpack(targetDir)
|
||||
|
||||
Reference in New Issue
Block a user