diff options
author | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-17 20:31:40 +0200 |
---|---|---|
committer | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-19 20:27:13 +0200 |
commit | fada4c705acff45be8418f20d28f1a091e6afe47 (patch) | |
tree | 1a724178b9f6b38026f15182a5c46cbfa82ca6bc | |
parent | b9a97b2c4dca50f0c13a1006130e095e85936a2a (diff) |
Update init-repository.py to allow using upstream chromium repository.
The regular workflow now is just to clone the qtwebengine repository
and then execute the following commands.
git submodule init && git submodule update --recursive && qmake && make
This will also clone a submodule called 3rdparty which contains the
chromium and ninja sources without pulling in further submodules
and without a complete history.
Developers that do want to have a complete chromium checkout instead
should not use the above command sequence.
Instead they should just clone qtwebengine, execute the
init-repository.py script, run qmake and make.
The init-repository.py script will then checkout the complete
chromium sources into a subdirectory called 3rdparty_upstream.
The location of these sources will be picked up by qmake automatically.
Change-Id: I0fa4f1d554bdca2e852b6a97aa2e5462d90d8664
Reviewed-by: Andras Becsi <andras.becsi@digia.com>
-rwxr-xr-x | init-repository.py | 74 | ||||
-rwxr-xr-x | patches/patch-chromium.sh | 2 | ||||
-rw-r--r-- | tools/git_submodule.py | 66 |
3 files changed, 98 insertions, 44 deletions
diff --git a/init-repository.py b/init-repository.py index 7abacccb8..5cd3dfb02 100755 --- a/init-repository.py +++ b/init-repository.py @@ -52,12 +52,17 @@ qtwebengine_src = os.path.abspath(os.path.join(os.path.dirname(__file__))) sys.path.append(os.path.join(qtwebengine_src, 'tools')) import git_submodule as GitSubmodule -chrome_src = os.environ.get('CHROMIUM_SRC_DIR') -if chrome_src: - chrome_src = os.path.abspath(chrome_src) -if not chrome_src or not os.path.isdir(chrome_src): - chrome_src = os.path.join(qtwebengine_src, 'chromium') - print 'CHROMIUM_SRC_DIR not set, falling back to ' + chrome_src +chromium_src = os.environ.get('CHROMIUM_SRC_DIR') +if chromium_src: + chromium_src = os.path.abspath(chromium_src) +if not chromium_src or not os.path.isdir(chromium_src): + chromium_src = os.path.join(qtwebengine_src, '3rdparty_upstream/chromium') + print 'CHROMIUM_SRC_DIR not set, falling back to ' + chromium_src + +# Write our chromium sources directory into git config. +relative_chromium_src = os.path.relpath(chromium_src, qtwebengine_src) +subprocess.call(['git', 'config', 'qtwebengine.chromiumsrcdir', relative_chromium_src]) + def which(tool_name): path = os.environ.get('PATH') @@ -69,7 +74,7 @@ def which(tool_name): def updateLastChange(): currentDir = os.getcwd() - os.chdir(chrome_src) + os.chdir(chromium_src) print 'updating LASTCHANGE files' subprocess.call(['python', 'build/util/lastchange.py', '-o', 'build/util/LASTCHANGE']) subprocess.call(['python', 'build/util/lastchange.py', '-s', 'third_party/WebKit', '-o', 'build/util/LASTCHANGE.blink']) @@ -81,7 +86,7 @@ def buildNinja(): print 'found ninja in: ' + ninja_tool + ' ...not building new ninja.' return currentDir = os.getcwd() - ninja_src = os.path.join(qtwebengine_src, 'build/ninja') + ninja_src = os.path.join(qtwebengine_src, '3rdparty_upstream/ninja') os.chdir(ninja_src) print 'building ninja...' subprocess.call(['python', 'bootstrap.py']) @@ -101,11 +106,58 @@ def applyPatches(): os.chdir(qtwebengine_src) subprocess.call(['sh', './patches/patch-chromium.sh']) +def initUpstreamSubmodules(): + ninja_url = 'https://github.com/martine/ninja.git' + chromium_url = 'https://chromium.googlesource.com/chromium/src.git' + ninja_shasum = '40b51a0b986b8675e15b0cd1b10c272bf51fdb84' + chromium_shasum = '29d2d710e0e7961dff032ad4ab73887cc33122bb' + os.chdir(qtwebengine_src) + + current_submodules = subprocess.check_output(['git', 'submodule']) + if not '3rdparty_upstream/ninja' in current_submodules: + subprocess.call(['git', 'submodule', 'add', ninja_url, '3rdparty_upstream/ninja']) + gitmodules_file = open('.gitmodules', 'a') + gitmodules_file.writelines([' ignore = all\n']) + gitmodules_file.close() + if not '3rdparty_upstream/chromium' in current_submodules: + subprocess.call(['git', 'submodule', 'add', chromium_url, '3rdparty_upstream/chromium']) + gitmodules_file = open('.gitmodules', 'a') + gitmodules_file.writelines([' ignore = all\n']) + gitmodules_file.close() + + gitignore_file = open('.gitignore') + gitignore_content = gitignore_file.readlines() + gitignore_file.close() + + gitmodules_is_ignored = False + for gitignore_line in gitignore_content: + if '.gitmodules' in gitignore_line: + gitmodules_is_ignored = True + if not gitmodules_is_ignored: + gitignore_file = open('.gitignore', 'a') + gitignore_file.writelines(['.gitmodules\n']) + gitignore_file.close() + + ninjaSubmodule = GitSubmodule.Submodule() + ninjaSubmodule.path = '3rdparty_upstream/ninja' + ninjaSubmodule.shasum = ninja_shasum + ninjaSubmodule.url = ninja_url + ninjaSubmodule.os = 'all' + ninjaSubmodule.initialize() + + chromiumSubmodule = GitSubmodule.Submodule() + chromiumSubmodule.path = '3rdparty_upstream/chromium' + chromiumSubmodule.shasum = chromium_shasum + chromiumSubmodule.url = chromium_url + chromiumSubmodule.os = 'all' + chromiumSubmodule.initialize() + + os.chdir(qtwebengine_src) addGerritRemote() installGitHooks() -GitSubmodule.initSubmodules() -applyPatches() +initUpstreamSubmodules() updateLastChange() -buildNinja() +applyPatches() +#buildNinja() diff --git a/patches/patch-chromium.sh b/patches/patch-chromium.sh index a1fa4261b..3a9e9278e 100755 --- a/patches/patch-chromium.sh +++ b/patches/patch-chromium.sh @@ -46,7 +46,7 @@ PATCH_DIR="$( cd "$( dirname "$0" )" && pwd )" QTWEBENGINE_SRC_DIR="$( cd $PATCH_DIR/../ && pwd )" if [ -z "$CHROMIUM_SRC_DIR" ]; then - CHROMIUM_SRC_DIR="$( cd $PATCH_DIR/../chromium && pwd )" + CHROMIUM_SRC_DIR="$( cd `git config qtwebengine.chromiumsrcdir` && pwd )" fi if [ ! -d "$CHROMIUM_SRC_DIR" ]; then diff --git a/tools/git_submodule.py b/tools/git_submodule.py index d158af635..5188ef390 100644 --- a/tools/git_submodule.py +++ b/tools/git_submodule.py @@ -65,6 +65,8 @@ class Submodule: return False def findSha(self): + if self.shasum != '': + return line = subprocess.check_output(['git', 'submodule', 'status', self.path]) line = line.lstrip(' -') self.shasum = line.split(' ')[0] @@ -106,7 +108,7 @@ class Submodule: val = subprocess.call(['git', 'checkout', self.shasum]) if val != 0: sys.exit("!!! initialization failed !!!") - initSubmodules() + self.initSubmodules() os.chdir(currentDir) else: print '-- skipping ' + self.path + ' for this operating system. --' @@ -123,36 +125,36 @@ class Submodule: return [] -def readSubmodules(): - currentDir = os.getcwd() - if not os.path.isfile('.gitmodules'): - return [] - gitmodules_file = open('.gitmodules') - gitmodules_lines = gitmodules_file.readlines() - gitmodules_file.close() + def readSubmodules(self): + currentDir = os.getcwd() + if not os.path.isfile('.gitmodules'): + return [] + gitmodules_file = open('.gitmodules') + gitmodules_lines = gitmodules_file.readlines() + gitmodules_file.close() - submodules = [] - currentSubmodule = None - for line in gitmodules_lines: - if line.find('[submodule') == 0: - if currentSubmodule: - submodules.append(currentSubmodule) - currentSubmodule = Submodule() - tokens = line.split('=') - if len(tokens) >= 2: - key = tokens[0].strip() - value = tokens[1].strip() - if key == 'path': - currentSubmodule.path = value - elif key == 'url': - currentSubmodule.url = value - elif key == 'os': - currentSubmodule.os = value.split(',') - if currentSubmodule: - submodules.append(currentSubmodule) - return submodules + submodules = [] + currentSubmodule = None + for line in gitmodules_lines: + if line.find('[submodule') == 0: + if currentSubmodule: + submodules.append(currentSubmodule) + currentSubmodule = Submodule() + tokens = line.split('=') + if len(tokens) >= 2: + key = tokens[0].strip() + value = tokens[1].strip() + if key == 'path': + currentSubmodule.path = value + elif key == 'url': + currentSubmodule.url = value + elif key == 'os': + currentSubmodule.os = value.split(',') + if currentSubmodule: + submodules.append(currentSubmodule) + return submodules -def initSubmodules(): - submodules = readSubmodules() - for submodule in submodules: - submodule.initialize() + def initSubmodules(self): + submodules = self.readSubmodules() + for submodule in submodules: + submodule.initialize() |