bitbake: fetch2/perforce: Fix localfile name if labels are used
authorChad Nelson <cnelson711@gmail.com>
Fri, 12 Sep 2014 20:42:21 +0000 (15:42 -0500)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 23 Sep 2014 19:21:11 +0000 (20:21 +0100)
I could apply the label "release_1.0" to a super project that contains
many sub projects.  If my recipes have SRC_URI's that use that label but
grab different sub-folders, than there's a bug where the cached localfile
(tar.gz) will not be unique and reused at the wrong times.

SRC_URI = "p4://perforce::1234@//depot/SuperProject/MiniProjectAAA/...;label=release_1.0 \
                     p4://perforce::1234@//depot/SuperProject/MiniProjectBBB/...;label=release_1.0"

(Bitbake rev: 3b5b1703b77490116dda895b29737cea51a3d6a0)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
bitbake/lib/bb/fetch2/perforce.py

index 9836bd7..47a4a5d 100644 (file)
@@ -103,22 +103,19 @@ class Perforce(FetchMethod):
     def urldata_init(self, ud, d):
         (host, path, user, pswd, parm) = Perforce.doparse(ud.url, d)
 
-        # If a label is specified, we use that as our filename
-
-        if "label" in parm:
-            ud.localfile = "%s.tar.gz" % (parm["label"])
-            return
-
         base = path
         which = path.find('/...')
         if which != -1:
-            base = path[:which-1]
+            base = path[:which]
 
         base = self._strip_leading_slashes(base)
+        
+        if "label" in parm:
+            version = parm["label"]
+        else:
+            version = Perforce.getcset(d, path, host, user, pswd, parm)
 
-        cset = Perforce.getcset(d, path, host, user, pswd, parm)
-
-        ud.localfile = data.expand('%s+%s+%s.tar.gz' % (host, base.replace('/', '.'), cset), d)
+        ud.localfile = data.expand('%s+%s+%s.tar.gz' % (host, base.replace('/', '.'), version), d)
 
     def download(self, ud, d):
         """