]> code.ossystems Code Review - openembedded-core.git/commitdiff
bitbake: fetcher updates - Add BB_GENERATE_MIRROR_TARBALLS option to allow disabling...
authorRichard Purdie <richard@openedhand.com>
Wed, 7 Nov 2007 23:49:55 +0000 (23:49 +0000)
committerRichard Purdie <richard@openedhand.com>
Wed, 7 Nov 2007 23:49:55 +0000 (23:49 +0000)
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@3101 311d38ba-8fff-0310-9ca6-ca027cbcb966

bitbake/lib/bb/fetch/__init__.py
bitbake/lib/bb/fetch/bzr.py
bitbake/lib/bb/fetch/git.py
bitbake/lib/bb/fetch/hg.py
bitbake/lib/bb/fetch/svn.py

index eed7095819e11860f04e26abf4c421b2c44cd6eb..1d41033f544b5dc9222019074132fdfc22749f36 100644 (file)
@@ -170,6 +170,8 @@ def localpaths(d):
 
     return local
 
+srcrev_internal_call = False
+
 def get_srcrev(d):
     """
     Return the version string for the current package
@@ -178,6 +180,19 @@ def get_srcrev(d):
     In the multi SCM case, we build a value based on SRCREV_FORMAT which must 
     have been set.
     """
+
+    #
+    # Ugly code alert. localpath in the fetchers will try to evaluate SRCREV which 
+    # could translate into a call to here. If it does, we need to catch this
+    # and provide some way so it knows get_srcrev is active instead of being
+    # some number etc. hence the srcrev_internal_call tracking and the magic  
+    # "SRCREVINACTION" return value.
+    #
+    # Neater solutions welcome!
+    #
+    if bb.fetch.srcrev_internal_call:
+        return "SRCREVINACTION"
+
     scms = []
     # Only call setup_localpath on URIs which suppports_srcrev() 
     urldata = init(bb.data.getVar('SRC_URI', d, 1).split(), d, False)
@@ -273,12 +288,14 @@ class FetchData(object):
     def setup_localpath(self, d):
         self.setup = True
         if "localpath" in self.parm:
+            # if user sets localpath for file, use it instead.
             self.localpath = self.parm["localpath"]
         else:
+            bb.fetch.srcrev_internal_call = True
             self.localpath = self.method.localpath(self.url, self, d)
+            bb.fetch.srcrev_internal_call = False
         self.md5 = self.localpath + '.md5'
         self.lockfile = self.localpath + '.lock'
-        # if user sets localpath for file, use it instead.
 
 
 class Fetch(object):
index c66d17fdd2c5eed250dc4c89fdcbad959e134eec..76dde3a0bd3a39f4cf5eac7924df6adb0022e5dd 100644 (file)
@@ -48,16 +48,14 @@ class Bzr(Fetch):
         if 'rev' in ud.parm:
             ud.revision = ud.parm['rev']
         else:
-            # ***Nasty hack***
-            rev = data.getVar("SRCREV", d, 0)
-            if rev and "get_srcrev" in rev:
-                ud.revision = self.latest_revision(url, ud, d)
-            elif rev:
+            rev = data.getVar("SRCREV", d, 1)
+            if rev is "SRCREVINACTION":
+                rev = self.latest_revision(url, ud, d)
+            if rev:
                 ud.revision = rev
             else:
-                ud.revision = ""
+                ud.revision = ""       
 
-        
         ud.localfile = data.expand('bzr_%s_%s_%s.tar.gz' % (ud.host, ud.path.replace('/', '.'), ud.revision), d)
         
         return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile)
index 7d55ee9138006183b075f7ee42a0f74f01061b78..c26ee3fff3732816ac7bbcd3ee0d1d51131bae7d 100644 (file)
@@ -50,12 +50,15 @@ class Git(Fetch):
         if 'protocol' in ud.parm:
             ud.proto = ud.parm['protocol']
 
-        tag = data.getVar("SRCREV", d, 0)
+        tag = data.getVar("SRCREV", d, 1)
         if 'tag' in ud.parm:
             ud.tag = ud.parm['tag']
-        elif tag and "get_srcrev" not in tag and len(tag) == 40:
-            ud.tag = tag
+        elif tag is "SRCREVINACTION":
+            ud.tag = self.latest_revision(url, ud, d)
         else:
+            ud.tag = tag            
+
+        if ud.tag == "master":
             ud.tag = self.latest_revision(url, ud, d)
 
         ud.localfile = data.expand('git_%s%s_%s.tar.gz' % (ud.host, ud.path.replace('/', '.'), ud.tag), d)
@@ -93,12 +96,12 @@ class Git(Fetch):
         runfetchcmd("git pull --tags %s://%s%s" % (ud.proto, ud.host, ud.path), d)
         runfetchcmd("git prune-packed", d)
         runfetchcmd("git pack-redundant --all | xargs -r rm", d)
-        # old method of downloading tags
-        #runfetchcmd("rsync -a --verbose --stats --progress rsync://%s%s/ %s" % (ud.host, ud.path, os.path.join(repodir, ".git", "")), d)
 
         os.chdir(repodir)
-        bb.msg.note(1, bb.msg.domain.Fetcher, "Creating tarball of git repository")
-        runfetchcmd("tar -czf %s %s" % (repofile, os.path.join(".", ".git", "*") ), d)
+        mirror_tarballs = data.getVar("BB_GENERATE_MIRROR_TARBALLS", d, True)
+        if mirror_tarballs != "0": 
+            bb.msg.note(1, bb.msg.domain.Fetcher, "Creating tarball of git repository")
+            runfetchcmd("tar -czf %s %s" % (repofile, os.path.join(".", ".git", "*") ), d)
 
         if os.path.exists(codir):
             prunedir(codir)
index 8e8073e56d7ea3af301a44b438f8fdebaa8fba69..6b9382280352442ce037aed493f61bfc62c329ae 100644 (file)
@@ -57,15 +57,14 @@ class Hg(Fetch):
 
         if 'rev' in ud.parm:
             ud.revision = ud.parm['rev']
-        else:
-            #
-            rev = data.getVar("SRCREV", d, 0)
-            if rev and "get_srcrev" in rev:
-                ud.revision = self.latest_revision(url, ud, d)
-            elif rev:
-                ud.revision = rev
-            else:
-                ud.revision = ""
+        #else:
+        #    rev = data.getVar("SRCREV", d, 1)
+        #    if rev is "SRCREVINACTION":
+        #        rev = self.latest_revision(url, ud, d)
+        #    if rev:
+        #        ud.revision = rev
+        #    else:
+        #        ud.revision = ""
 
         ud.localfile = data.expand('%s_%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.path.replace('/', '.'), ud.revision), d)
 
index 95b21fe20cc2a910e37f5d3a60b6a857cbd87877..c3cebc390d336db01e9c8dba2da02054f1190ddb 100644 (file)
@@ -62,22 +62,18 @@ class Svn(Fetch):
             ud.revision = ""
         else:
             #
-            # ***Nasty hacks***
+            # ***Nasty hack***
             # If DATE in unexpanded PV, use ud.date (which is set from SRCDATE)
-            # Will warn people to switch to SRCREV here
-            #
-            # How can we tell when a user has overriden SRCDATE? 
-            # check for "get_srcdate" in unexpanded SRCREV - ugly
+            # Should warn people to switch to SRCREV here
             #
             pv = data.getVar("PV", d, 0)
             if "DATE" in pv:
                 ud.revision = ""
             else:
-                rev = data.getVar("SRCREV", d, 0)
-                if rev and "get_srcrev" in rev:
-                    ud.revision = self.latest_revision(url, ud, d)
-                    ud.date = ""
-                elif rev:
+                rev = data.getVar("SRCREV", d, 1)
+                if rev is "SRCREVINACTION":
+                    rev = self.latest_revision(url, ud, d)
+                if rev:
                     ud.revision = rev
                     ud.date = ""
                 else: