summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/fetch2/git.py28
1 files changed, 20 insertions, 8 deletions
diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py
index 811acbf6c6..82721c6cfa 100644
--- a/bitbake/lib/bb/fetch2/git.py
+++ b/bitbake/lib/bb/fetch2/git.py
@@ -57,6 +57,11 @@ class Git(FetchMethod):
57 if 'nocheckout' in ud.parm: 57 if 'nocheckout' in ud.parm:
58 ud.nocheckout = True 58 ud.nocheckout = True
59 59
60 # rebaseable means the upstream git repo may rebase in the future,
61 # and current revision may disappear from upstream repo
62 # rebaseable is false by default. set rebaseable=1 in SRC_URI if rebaseable.
63 ud.rebaseable = ud.parm.get("rebaseable","0") == "1"
64
60 branches = ud.parm.get("branch", "master").split(',') 65 branches = ud.parm.get("branch", "master").split(',')
61 if len(branches) != len(ud.names): 66 if len(branches) != len(ud.names):
62 raise bb.fetch2.ParameterError("The number of name and branch parameters is not balanced", ud.url) 67 raise bb.fetch2.ParameterError("The number of name and branch parameters is not balanced", ud.url)
@@ -65,16 +70,9 @@ class Git(FetchMethod):
65 branch = branches[ud.names.index(name)] 70 branch = branches[ud.names.index(name)]
66 ud.branches[name] = branch 71 ud.branches[name] = branch
67 72
68 gitsrcname = '%s%s' % (ud.host, ud.path.replace('/', '.'))
69 ud.mirrortarball = 'git2_%s.tar.gz' % (gitsrcname)
70 ud.fullmirror = os.path.join(data.getVar("DL_DIR", d, True), ud.mirrortarball)
71 ud.clonedir = os.path.join(data.expand('${GITDIR}', d), gitsrcname)
72
73 ud.basecmd = data.getVar("FETCHCMD_git", d, True) or "git" 73 ud.basecmd = data.getVar("FETCHCMD_git", d, True) or "git"
74 74
75 ud.write_tarballs = (data.getVar("BB_GENERATE_MIRROR_TARBALLS", d, True) or "0") != "0" 75 ud.write_tarballs = ((data.getVar("BB_GENERATE_MIRROR_TARBALLS", d, True) or "0") != "0") or ud.rebaseable
76
77 ud.localfile = ud.clonedir
78 76
79 ud.setup_revisons(d) 77 ud.setup_revisons(d)
80 78
@@ -84,6 +82,20 @@ class Git(FetchMethod):
84 ud.branches[name] = ud.revisions[name] 82 ud.branches[name] = ud.revisions[name]
85 ud.revisions[name] = self.latest_revision(ud.url, ud, d, name) 83 ud.revisions[name] = self.latest_revision(ud.url, ud, d, name)
86 84
85 gitsrcname = '%s%s' % (ud.host, ud.path.replace('/', '.'))
86 # for rebaseable git repo, it is necessary to keep mirror tar ball
87 # per revision, so that even the revision disappears from the
88 # upstream repo in the future, the mirror will remain intact and still
89 # contains the revision
90 if ud.rebaseable:
91 for name in ud.names:
92 gitsrcname = gitsrcname + '_' + ud.revisions[name]
93 ud.mirrortarball = 'git2_%s.tar.gz' % (gitsrcname)
94 ud.fullmirror = os.path.join(data.getVar("DL_DIR", d, True), ud.mirrortarball)
95 ud.clonedir = os.path.join(data.expand('${GITDIR}', d), gitsrcname)
96
97 ud.localfile = ud.clonedir
98
87 def localpath(self, url, ud, d): 99 def localpath(self, url, ud, d):
88 return ud.clonedir 100 return ud.clonedir
89 101