diff --git a/pisi/operations/build.py b/pisi/operations/build.py index b69776b9..9c030ff4 100644 --- a/pisi/operations/build.py +++ b/pisi/operations/build.py @@ -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 diff --git a/pisi/sourcearchive.py b/pisi/sourcearchive.py index 8c95ad7b..09ddac59 100644 --- a/pisi/sourcearchive.py +++ b/pisi/sourcearchive.py @@ -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) diff --git a/tests/archivetests.py b/tests/archivetests.py index 5e1e3379..84b6b914 100644 --- a/tests/archivetests.py +++ b/tests/archivetests.py @@ -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' diff --git a/tests/srcarchivetest.py b/tests/srcarchivetest.py index 31fe7c65..2e585437 100644 --- a/tests/srcarchivetest.py +++ b/tests/srcarchivetest.py @@ -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)