From b0ce7f29397a4759d00b698f793f40e1a285fe14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20A=C5=9F=C4=B1c=C4=B1?= Date: Sat, 25 Sep 2010 21:31:19 +0000 Subject: [PATCH] build: Guess WorkDir from archive name If defined, use WorkDir in actions.py. If it is not defined or the directory does not exist, first try "srcname-version" then the basename of archive URL after splitting extensions. --- pisi/operations/build.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/pisi/operations/build.py b/pisi/operations/build.py index 2992b74f..dcf8f882 100644 --- a/pisi/operations/build.py +++ b/pisi/operations/build.py @@ -577,13 +577,23 @@ class Builder: def pkg_src_dir(self): """Returns the real path of WorkDir for an unpacked archive.""" - try: - workdir = self.actionGlobals['WorkDir'] - except KeyError: - workdir = self.spec.source.name + "-" + \ - self.spec.getSourceVersion() - return util.join_path(self.pkg_work_dir(), workdir) + dirname = self.spec.source.name + "-" + self.spec.getSourceVersion() + dirname = self.actionGlobals.get("WorkDir", dirname) + + src_dir = util.join_path(self.pkg_work_dir(), dirname) + + if not os.path.exists(src_dir): + basename = os.path.basename(self.spec.source.archive[0].uri) + dirname = os.path.splitext(basename)[0] + src_dir = util.join_path(self.pkg_work_dir(), dirname) + + while not os.path.exists(src_dir): + src_dir, ext = os.path.splitext(src_dir) + if not ext: + break + + return src_dir def log_sandbox_violation(self, operation, path, canonical_path): ctx.ui.error(_("Sandbox violation: %s (%s -> %s)") % (operation,