summaryrefslogtreecommitdiff
path: root/bitbake/lib/bb
diff options
context:
space:
mode:
authorRichard Purdie <richard@openedhand.com>2007-11-07 23:49:55 +0000
committerRichard Purdie <richard@openedhand.com>2007-11-07 23:49:55 +0000
commite9b7bc6914c0f1d9282f92748eaa3d308f5d03fd (patch)
tree69129b5ebf7e9f8d36062ff200636b9367971905 /bitbake/lib/bb
parente7198e490325a95f1f5c301f76005e4333a08dad (diff)
downloadopenembedded-core-e9b7bc6914c0f1d9282f92748eaa3d308f5d03fd.tar.gz
openembedded-core-e9b7bc6914c0f1d9282f92748eaa3d308f5d03fd.tar.bz2
openembedded-core-e9b7bc6914c0f1d9282f92748eaa3d308f5d03fd.tar.xz
openembedded-core-e9b7bc6914c0f1d9282f92748eaa3d308f5d03fd.zip
bitbake: fetcher updates - Add BB_GENERATE_MIRROR_TARBALLS option to allow disabling tarball creation to speedup git fetches, improve srcrev handling to remove some hacks and remove the need for external workarounds
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@3101 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r--bitbake/lib/bb/fetch/__init__.py19
-rw-r--r--bitbake/lib/bb/fetch/bzr.py12
-rw-r--r--bitbake/lib/bb/fetch/git.py17
-rw-r--r--bitbake/lib/bb/fetch/hg.py17
-rw-r--r--bitbake/lib/bb/fetch/svn.py16
5 files changed, 47 insertions, 34 deletions
diff --git a/bitbake/lib/bb/fetch/__init__.py b/bitbake/lib/bb/fetch/__init__.py
index eed709581..1d41033f5 100644
--- a/bitbake/lib/bb/fetch/__init__.py
+++ b/bitbake/lib/bb/fetch/__init__.py
@@ -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):
diff --git a/bitbake/lib/bb/fetch/bzr.py b/bitbake/lib/bb/fetch/bzr.py
index c66d17fdd..76dde3a0b 100644
--- a/bitbake/lib/bb/fetch/bzr.py
+++ b/bitbake/lib/bb/fetch/bzr.py
@@ -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)
diff --git a/bitbake/lib/bb/fetch/git.py b/bitbake/lib/bb/fetch/git.py
index 7d55ee913..c26ee3fff 100644
--- a/bitbake/lib/bb/fetch/git.py
+++ b/bitbake/lib/bb/fetch/git.py
@@ -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)
diff --git a/bitbake/lib/bb/fetch/hg.py b/bitbake/lib/bb/fetch/hg.py
index 8e8073e56..6b9382280 100644
--- a/bitbake/lib/bb/fetch/hg.py
+++ b/bitbake/lib/bb/fetch/hg.py
@@ -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)
diff --git a/bitbake/lib/bb/fetch/svn.py b/bitbake/lib/bb/fetch/svn.py
index 95b21fe20..c3cebc390 100644
--- a/bitbake/lib/bb/fetch/svn.py
+++ b/bitbake/lib/bb/fetch/svn.py
@@ -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: