diff options
author | Richard Purdie <richard@openedhand.com> | 2007-11-07 23:49:55 +0000 |
---|---|---|
committer | Richard Purdie <richard@openedhand.com> | 2007-11-07 23:49:55 +0000 |
commit | e9b7bc6914c0f1d9282f92748eaa3d308f5d03fd (patch) | |
tree | 69129b5ebf7e9f8d36062ff200636b9367971905 /bitbake/lib | |
parent | e7198e490325a95f1f5c301f76005e4333a08dad (diff) | |
download | poky-e9b7bc6914c0f1d9282f92748eaa3d308f5d03fd.tar.gz |
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')
-rw-r--r-- | bitbake/lib/bb/fetch/__init__.py | 19 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/bzr.py | 12 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/git.py | 17 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/hg.py | 17 | ||||
-rw-r--r-- | bitbake/lib/bb/fetch/svn.py | 16 |
5 files changed, 47 insertions, 34 deletions
diff --git a/bitbake/lib/bb/fetch/__init__.py b/bitbake/lib/bb/fetch/__init__.py index eed7095819..1d41033f54 100644 --- a/bitbake/lib/bb/fetch/__init__.py +++ b/bitbake/lib/bb/fetch/__init__.py | |||
@@ -170,6 +170,8 @@ def localpaths(d): | |||
170 | 170 | ||
171 | return local | 171 | return local |
172 | 172 | ||
173 | srcrev_internal_call = False | ||
174 | |||
173 | def get_srcrev(d): | 175 | def get_srcrev(d): |
174 | """ | 176 | """ |
175 | Return the version string for the current package | 177 | Return the version string for the current package |
@@ -178,6 +180,19 @@ def get_srcrev(d): | |||
178 | In the multi SCM case, we build a value based on SRCREV_FORMAT which must | 180 | In the multi SCM case, we build a value based on SRCREV_FORMAT which must |
179 | have been set. | 181 | have been set. |
180 | """ | 182 | """ |
183 | |||
184 | # | ||
185 | # Ugly code alert. localpath in the fetchers will try to evaluate SRCREV which | ||
186 | # could translate into a call to here. If it does, we need to catch this | ||
187 | # and provide some way so it knows get_srcrev is active instead of being | ||
188 | # some number etc. hence the srcrev_internal_call tracking and the magic | ||
189 | # "SRCREVINACTION" return value. | ||
190 | # | ||
191 | # Neater solutions welcome! | ||
192 | # | ||
193 | if bb.fetch.srcrev_internal_call: | ||
194 | return "SRCREVINACTION" | ||
195 | |||
181 | scms = [] | 196 | scms = [] |
182 | # Only call setup_localpath on URIs which suppports_srcrev() | 197 | # Only call setup_localpath on URIs which suppports_srcrev() |
183 | urldata = init(bb.data.getVar('SRC_URI', d, 1).split(), d, False) | 198 | urldata = init(bb.data.getVar('SRC_URI', d, 1).split(), d, False) |
@@ -273,12 +288,14 @@ class FetchData(object): | |||
273 | def setup_localpath(self, d): | 288 | def setup_localpath(self, d): |
274 | self.setup = True | 289 | self.setup = True |
275 | if "localpath" in self.parm: | 290 | if "localpath" in self.parm: |
291 | # if user sets localpath for file, use it instead. | ||
276 | self.localpath = self.parm["localpath"] | 292 | self.localpath = self.parm["localpath"] |
277 | else: | 293 | else: |
294 | bb.fetch.srcrev_internal_call = True | ||
278 | self.localpath = self.method.localpath(self.url, self, d) | 295 | self.localpath = self.method.localpath(self.url, self, d) |
296 | bb.fetch.srcrev_internal_call = False | ||
279 | self.md5 = self.localpath + '.md5' | 297 | self.md5 = self.localpath + '.md5' |
280 | self.lockfile = self.localpath + '.lock' | 298 | self.lockfile = self.localpath + '.lock' |
281 | # if user sets localpath for file, use it instead. | ||
282 | 299 | ||
283 | 300 | ||
284 | class Fetch(object): | 301 | class Fetch(object): |
diff --git a/bitbake/lib/bb/fetch/bzr.py b/bitbake/lib/bb/fetch/bzr.py index c66d17fdd2..76dde3a0bd 100644 --- a/bitbake/lib/bb/fetch/bzr.py +++ b/bitbake/lib/bb/fetch/bzr.py | |||
@@ -48,16 +48,14 @@ class Bzr(Fetch): | |||
48 | if 'rev' in ud.parm: | 48 | if 'rev' in ud.parm: |
49 | ud.revision = ud.parm['rev'] | 49 | ud.revision = ud.parm['rev'] |
50 | else: | 50 | else: |
51 | # ***Nasty hack*** | 51 | rev = data.getVar("SRCREV", d, 1) |
52 | rev = data.getVar("SRCREV", d, 0) | 52 | if rev is "SRCREVINACTION": |
53 | if rev and "get_srcrev" in rev: | 53 | rev = self.latest_revision(url, ud, d) |
54 | ud.revision = self.latest_revision(url, ud, d) | 54 | if rev: |
55 | elif rev: | ||
56 | ud.revision = rev | 55 | ud.revision = rev |
57 | else: | 56 | else: |
58 | ud.revision = "" | 57 | ud.revision = "" |
59 | 58 | ||
60 | |||
61 | ud.localfile = data.expand('bzr_%s_%s_%s.tar.gz' % (ud.host, ud.path.replace('/', '.'), ud.revision), d) | 59 | ud.localfile = data.expand('bzr_%s_%s_%s.tar.gz' % (ud.host, ud.path.replace('/', '.'), ud.revision), d) |
62 | 60 | ||
63 | return os.path.join(data.getVar("DL_DIR", d, True), ud.localfile) | 61 | 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 7d55ee9138..c26ee3fff3 100644 --- a/bitbake/lib/bb/fetch/git.py +++ b/bitbake/lib/bb/fetch/git.py | |||
@@ -50,12 +50,15 @@ class Git(Fetch): | |||
50 | if 'protocol' in ud.parm: | 50 | if 'protocol' in ud.parm: |
51 | ud.proto = ud.parm['protocol'] | 51 | ud.proto = ud.parm['protocol'] |
52 | 52 | ||
53 | tag = data.getVar("SRCREV", d, 0) | 53 | tag = data.getVar("SRCREV", d, 1) |
54 | if 'tag' in ud.parm: | 54 | if 'tag' in ud.parm: |
55 | ud.tag = ud.parm['tag'] | 55 | ud.tag = ud.parm['tag'] |
56 | elif tag and "get_srcrev" not in tag and len(tag) == 40: | 56 | elif tag is "SRCREVINACTION": |
57 | ud.tag = tag | 57 | ud.tag = self.latest_revision(url, ud, d) |
58 | else: | 58 | else: |
59 | ud.tag = tag | ||
60 | |||
61 | if ud.tag == "master": | ||
59 | ud.tag = self.latest_revision(url, ud, d) | 62 | ud.tag = self.latest_revision(url, ud, d) |
60 | 63 | ||
61 | ud.localfile = data.expand('git_%s%s_%s.tar.gz' % (ud.host, ud.path.replace('/', '.'), ud.tag), d) | 64 | 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): | |||
93 | runfetchcmd("git pull --tags %s://%s%s" % (ud.proto, ud.host, ud.path), d) | 96 | runfetchcmd("git pull --tags %s://%s%s" % (ud.proto, ud.host, ud.path), d) |
94 | runfetchcmd("git prune-packed", d) | 97 | runfetchcmd("git prune-packed", d) |
95 | runfetchcmd("git pack-redundant --all | xargs -r rm", d) | 98 | runfetchcmd("git pack-redundant --all | xargs -r rm", d) |
96 | # old method of downloading tags | ||
97 | #runfetchcmd("rsync -a --verbose --stats --progress rsync://%s%s/ %s" % (ud.host, ud.path, os.path.join(repodir, ".git", "")), d) | ||
98 | 99 | ||
99 | os.chdir(repodir) | 100 | os.chdir(repodir) |
100 | bb.msg.note(1, bb.msg.domain.Fetcher, "Creating tarball of git repository") | 101 | mirror_tarballs = data.getVar("BB_GENERATE_MIRROR_TARBALLS", d, True) |
101 | runfetchcmd("tar -czf %s %s" % (repofile, os.path.join(".", ".git", "*") ), d) | 102 | if mirror_tarballs != "0": |
103 | bb.msg.note(1, bb.msg.domain.Fetcher, "Creating tarball of git repository") | ||
104 | runfetchcmd("tar -czf %s %s" % (repofile, os.path.join(".", ".git", "*") ), d) | ||
102 | 105 | ||
103 | if os.path.exists(codir): | 106 | if os.path.exists(codir): |
104 | prunedir(codir) | 107 | prunedir(codir) |
diff --git a/bitbake/lib/bb/fetch/hg.py b/bitbake/lib/bb/fetch/hg.py index 8e8073e56d..6b93822803 100644 --- a/bitbake/lib/bb/fetch/hg.py +++ b/bitbake/lib/bb/fetch/hg.py | |||
@@ -57,15 +57,14 @@ class Hg(Fetch): | |||
57 | 57 | ||
58 | if 'rev' in ud.parm: | 58 | if 'rev' in ud.parm: |
59 | ud.revision = ud.parm['rev'] | 59 | ud.revision = ud.parm['rev'] |
60 | else: | 60 | #else: |
61 | # | 61 | # rev = data.getVar("SRCREV", d, 1) |
62 | rev = data.getVar("SRCREV", d, 0) | 62 | # if rev is "SRCREVINACTION": |
63 | if rev and "get_srcrev" in rev: | 63 | # rev = self.latest_revision(url, ud, d) |
64 | ud.revision = self.latest_revision(url, ud, d) | 64 | # if rev: |
65 | elif rev: | 65 | # ud.revision = rev |
66 | ud.revision = rev | 66 | # else: |
67 | else: | 67 | # ud.revision = "" |
68 | ud.revision = "" | ||
69 | 68 | ||
70 | ud.localfile = data.expand('%s_%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.path.replace('/', '.'), ud.revision), d) | 69 | ud.localfile = data.expand('%s_%s_%s_%s.tar.gz' % (ud.module.replace('/', '.'), ud.host, ud.path.replace('/', '.'), ud.revision), d) |
71 | 70 | ||
diff --git a/bitbake/lib/bb/fetch/svn.py b/bitbake/lib/bb/fetch/svn.py index 95b21fe20c..c3cebc390d 100644 --- a/bitbake/lib/bb/fetch/svn.py +++ b/bitbake/lib/bb/fetch/svn.py | |||
@@ -62,22 +62,18 @@ class Svn(Fetch): | |||
62 | ud.revision = "" | 62 | ud.revision = "" |
63 | else: | 63 | else: |
64 | # | 64 | # |
65 | # ***Nasty hacks*** | 65 | # ***Nasty hack*** |
66 | # If DATE in unexpanded PV, use ud.date (which is set from SRCDATE) | 66 | # If DATE in unexpanded PV, use ud.date (which is set from SRCDATE) |
67 | # Will warn people to switch to SRCREV here | 67 | # Should warn people to switch to SRCREV here |
68 | # | ||
69 | # How can we tell when a user has overriden SRCDATE? | ||
70 | # check for "get_srcdate" in unexpanded SRCREV - ugly | ||
71 | # | 68 | # |
72 | pv = data.getVar("PV", d, 0) | 69 | pv = data.getVar("PV", d, 0) |
73 | if "DATE" in pv: | 70 | if "DATE" in pv: |
74 | ud.revision = "" | 71 | ud.revision = "" |
75 | else: | 72 | else: |
76 | rev = data.getVar("SRCREV", d, 0) | 73 | rev = data.getVar("SRCREV", d, 1) |
77 | if rev and "get_srcrev" in rev: | 74 | if rev is "SRCREVINACTION": |
78 | ud.revision = self.latest_revision(url, ud, d) | 75 | rev = self.latest_revision(url, ud, d) |
79 | ud.date = "" | 76 | if rev: |
80 | elif rev: | ||
81 | ud.revision = rev | 77 | ud.revision = rev |
82 | ud.date = "" | 78 | ud.date = "" |
83 | else: | 79 | else: |