[bitbake-devel] [PATCH 3/4] fetch2: Allow local git trees as pre-mirrors
Jason Wessel
jason.wessel at windriver.com
Thu Jun 14 03:09:40 UTC 2012
There is a strong desire to store the raw git trees in a pre-mirror
such that they can easily get updated externally as well as to contain
local branches.
This patch adds another type of pre-mirror rule that is "git" based.
The syntax looks like:
PREMIRRORS_append := "\
git://.*/.* git://${LAYERDIR}/downloads/git/ \n"
The syntax for typical tar.gz compressed git tree is:
PREMIRRORS_append := "\
git://.*/.* file://${LAYERDIR}/downloads/git/ \n"
The new pre-mirror type also requires the creation of the GITDIR at
the pre-mirror check time or the git clone and git checks will fail
with obscure errors.
Signed-off-by: Jason Wessel <jason.wessel at windriver.com>
---
lib/bb/fetch2/__init__.py | 8 +++++++-
lib/bb/fetch2/git.py | 4 ++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index 324eef2..68025a3 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -202,7 +202,13 @@ def uri_replace(ud, uri_find, uri_replace, d):
if uri_find_decoded.index(i) == 2:
basename = None
if ud.mirrortarball:
- basename = os.path.basename(ud.mirrortarball)
+ # Transpose a git uri to a file uri and check if there
+ # is a local mirror durring the premirror checks
+ if ud.mirror and uri_find_decoded[0] == "git":
+ result_decoded[0] = "file"
+ basename = os.path.basename(ud.mirror)
+ else:
+ basename = os.path.basename(ud.mirrortarball)
elif ud.localpath:
basename = os.path.basename(ud.localpath)
if basename and result_decoded[loc].endswith("/"):
diff --git a/lib/bb/fetch2/git.py b/lib/bb/fetch2/git.py
index ecc5e0d..1ad9213 100644
--- a/lib/bb/fetch2/git.py
+++ b/lib/bb/fetch2/git.py
@@ -138,9 +138,11 @@ class Git(FetchMethod):
if ud.rebaseable:
for name in ud.names:
gitsrcname = gitsrcname + '_' + ud.revisions[name]
+ ud.mirror = gitsrcname
ud.mirrortarball = 'git2_%s.tar.gz' % (gitsrcname)
ud.fullmirror = os.path.join(d.getVar("DL_DIR", True), ud.mirrortarball)
gitdir = d.getVar("GITDIR", True) or (d.getVar("DL_DIR", True) + "/git2/")
+ ud.gitdir = gitdir
ud.clonedir = os.path.join(gitdir, gitsrcname)
ud.localfile = ud.clonedir
@@ -166,6 +168,8 @@ class Git(FetchMethod):
return True
if os.path.exists(ud.clonedir):
return False
+ if not os.path.exists(ud.gitdir):
+ bb.utils.mkdirhier(ud.gitdir)
return True
def download(self, loc, ud, d):
--
1.7.10
More information about the bitbake-devel
mailing list