diff --git a/pisi/build.py b/pisi/build.py index d3401cab..e72eb839 100644 --- a/pisi/build.py +++ b/pisi/build.py @@ -53,11 +53,7 @@ class PisiBuild: #finished its work in the work_dir curDir = os.getcwd() - # FIXME: It's wrong to assume that unpacked archive - # will create a name-version top-level directory. - # Archive module should give the exact location. - # (from the assumption is evil dept.) - os.chdir(self.ctx.pkg_work_dir() + "/" + self.spec.source.name + "-" + self.spec.source.version) + os.chdir(self.ctx.pkg_src_dir()) locals = globals = {} try: diff --git a/pisi/context.py b/pisi/context.py index 81948a60..836d6198 100644 --- a/pisi/context.py +++ b/pisi/context.py @@ -76,7 +76,13 @@ class Context(object): return self.destdir + self.const.tmp_dir_suffix \ + '/' + packageDir - + + def pkg_src_dir(self): + if self.spec.source.workdir is None: + return self.pkg_work_dir() + '/' + self.spec.source.name + '-' + self.spec.source.version + else: + return self.pkg_work_dir() + '/' + self.spec.source.workdir + def pkg_work_dir(self): return self.pkg_dir() + self.const.work_dir_suffix diff --git a/pisi/specfile.py b/pisi/specfile.py index 31c09beb..14a01c9f 100644 --- a/pisi/specfile.py +++ b/pisi/specfile.py @@ -60,6 +60,7 @@ class SpecFile(XmlFile): self.source = SourceInfo() self.source.name = self.getChildText("Source/Name") + self.source.workdir = self.getChildText("Source/WorkDir") archiveNode = self.getNode("Source/Archive") self.source.archiveUri = getNodeText(archiveNode).strip() self.source.archiveName = basename(self.source.archiveUri)