[bitbake-devel] [PATCH] fetch2: Remove unecessary code for git submodules
eu at felipetonello.com
eu at felipetonello.com
Mon Jul 6 15:13:58 UTC 2015
From: "Felipe F. Tonello" <eu at felipetonello.com>
Only do git submodule update after upack, otherwise the branch and commit id
will be ignored, causing to run git submodules on a wrong ref.
Since .gitmodules file is used to check if there is any submodule, we don't
need to worry about copying .git/modules directory into the unpacked source
tree.
Signed-off-by: Felipe F. Tonello <eu at felipetonello.com>
---
lib/bb/fetch2/gitsm.py | 73 --------------------------------------------------
1 file changed, 73 deletions(-)
diff --git a/lib/bb/fetch2/gitsm.py b/lib/bb/fetch2/gitsm.py
index c125cff..405cd87 100644
--- a/lib/bb/fetch2/gitsm.py
+++ b/lib/bb/fetch2/gitsm.py
@@ -31,10 +31,8 @@ NOTE: Switching a SRC_URI from "git://" to "gitsm://" requires a clean of your r
import os
import bb
-from bb import data
from bb.fetch2.git import Git
from bb.fetch2 import runfetchcmd
-from bb.fetch2 import logger
class GitSM(Git):
def supports(self, ud, d):
@@ -52,85 +50,14 @@ class GitSM(Git):
pass
return False
- def _set_relative_paths(self, repopath):
- """
- Fix submodule paths to be relative instead of absolute,
- so that when we move the repo it doesn't break
- (In Git 1.7.10+ this is done automatically)
- """
- submodules = []
- with open(os.path.join(repopath, '.gitmodules'), 'r') as f:
- for line in f.readlines():
- if line.startswith('[submodule'):
- submodules.append(line.split('"')[1])
-
- for module in submodules:
- repo_conf = os.path.join(repopath, module, '.git')
- if os.path.exists(repo_conf):
- with open(repo_conf, 'r') as f:
- lines = f.readlines()
- newpath = ''
- for i, line in enumerate(lines):
- if line.startswith('gitdir:'):
- oldpath = line.split(': ')[-1].rstrip()
- if oldpath.startswith('/'):
- newpath = '../' * (module.count('/') + 1) + '.git/modules/' + module
- lines[i] = 'gitdir: %s\n' % newpath
- break
- if newpath:
- with open(repo_conf, 'w') as f:
- for line in lines:
- f.write(line)
-
- repo_conf2 = os.path.join(repopath, '.git', 'modules', module, 'config')
- if os.path.exists(repo_conf2):
- with open(repo_conf2, 'r') as f:
- lines = f.readlines()
- newpath = ''
- for i, line in enumerate(lines):
- if line.lstrip().startswith('worktree = '):
- oldpath = line.split(' = ')[-1].rstrip()
- if oldpath.startswith('/'):
- newpath = '../' * (module.count('/') + 3) + module
- lines[i] = '\tworktree = %s\n' % newpath
- break
- if newpath:
- with open(repo_conf2, 'w') as f:
- for line in lines:
- f.write(line)
-
- def update_submodules(self, ud, d):
- # We have to convert bare -> full repo, do the submodule bit, then convert back
- tmpclonedir = ud.clonedir + ".tmp"
- gitdir = tmpclonedir + os.sep + ".git"
- bb.utils.remove(tmpclonedir, True)
- os.mkdir(tmpclonedir)
- os.rename(ud.clonedir, gitdir)
- runfetchcmd("sed " + gitdir + "/config -i -e 's/bare.*=.*true/bare = false/'", d)
- os.chdir(tmpclonedir)
- runfetchcmd(ud.basecmd + " reset --hard", d)
- runfetchcmd(ud.basecmd + " submodule init", d)
- runfetchcmd(ud.basecmd + " submodule update", d)
- self._set_relative_paths(tmpclonedir)
- runfetchcmd("sed " + gitdir + "/config -i -e 's/bare.*=.*false/bare = true/'", d)
- os.rename(gitdir, ud.clonedir,)
- bb.utils.remove(tmpclonedir, True)
-
def download(self, ud, d):
Git.download(self, ud, d)
- os.chdir(ud.clonedir)
- submodules = self.uses_submodules(ud, d)
- if submodules:
- self.update_submodules(ud, d)
-
def unpack(self, ud, destdir, d):
Git.unpack(self, ud, destdir, d)
-
os.chdir(ud.destdir)
submodules = self.uses_submodules(ud, d)
if submodules:
- runfetchcmd("cp -r " + ud.clonedir + "/modules " + ud.destdir + "/.git/", d)
runfetchcmd(ud.basecmd + " submodule init", d)
runfetchcmd(ud.basecmd + " submodule update", d)
--
2.1.0
More information about the bitbake-devel
mailing list