diff options
author | Andras Becsi <andras.becsi@digia.com> | 2013-08-21 19:16:29 +0200 |
---|---|---|
committer | Andras Becsi <andras.becsi@digia.com> | 2013-08-21 23:25:29 +0200 |
commit | fd661fe6e07fc6771a9e3e936ca955a88004fd03 (patch) | |
tree | dd1a64b457208548549c661683352a31718efa73 | |
parent | 6b94d9732f5950d43ed3e61e4bf5c6f12b46aead (diff) |
Add command line flags to init-repository.py
This patch adds --upstream (-u) and --snapshot (-s) flags to the
init-repository script which make it possible to choose the
Chromium sources to use when building QtWebEngine. The default
is to use the upstream submodules.
This option is persisted with git config and used throughout the
build system.
This patch also keeps support for the CHROMIUM_SRC_DIR env
variable which can be used to specify external Chromium
sources which are assumed to be set up for the build and
thus left untouched by the script.
Change-Id: Ic83984199770076f90867f1b22a63b220bfe7359
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
-rwxr-xr-x | build/gyp_qtwebengine | 6 | ||||
-rw-r--r-- | build/qmake/mkspecs/features/default_pre.prf | 9 | ||||
-rw-r--r-- | build/qmake/mkspecs/features/functions.prf | 9 | ||||
-rwxr-xr-x | build/scripts/build_resources.py | 7 | ||||
-rwxr-xr-x | init-repository.py | 76 |
5 files changed, 62 insertions, 45 deletions
diff --git a/build/gyp_qtwebengine b/build/gyp_qtwebengine index 31c7a8085..51392753d 100755 --- a/build/gyp_qtwebengine +++ b/build/gyp_qtwebengine @@ -6,13 +6,11 @@ import subprocess import sys qtwebengine_src = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) -chrome_src = os.environ.get('CHROMIUM_SRC_DIR') +chrome_src = subprocess.check_output("git config qtwebengine.chromiumsrcdir || true", shell=True).strip() if chrome_src: - chrome_src = os.path.abspath(chrome_src) + chrome_src = os.path.join(qtwebengine_src, chrome_src) if not chrome_src or not os.path.isdir(chrome_src): chrome_src = os.path.join(qtwebengine_src, '3rdparty/chromium') - if not os.path.isdir(chrome_src): - chrome_src = os.path.join(qtwebengine_src, '3rdparty_upstream/chromium') print 'CHROMIUM_SRC_DIR not set, falling back to ' + chrome_src script_dir = os.path.abspath(os.path.join(chrome_src, 'build')) diff --git a/build/qmake/mkspecs/features/default_pre.prf b/build/qmake/mkspecs/features/default_pre.prf index 75427b605..2240296e7 100644 --- a/build/qmake/mkspecs/features/default_pre.prf +++ b/build/qmake/mkspecs/features/default_pre.prf @@ -3,9 +3,12 @@ QTWEBENGINE_ROOT = $$replace(PWD, /build/qmake/mkspecs/features$,) QTWEBENGINEPROCESS_NAME = QtWebEngineProcess -# Fetched from environment for now -CHROMIUM_SRC_DIR = $$(CHROMIUM_SRC_DIR) -isEmpty(CHROMIUM_SRC_DIR): CHROMIUM_SRC_DIR=$$QTWEBENGINE_ROOT/3rdparty/chromium +git_chromium_src_dir = $$system("git config qtwebengine.chromiumsrcdir") + +# Fall back to the snapshot path if git does not know about chromium sources (i.e. init-repository.py has not been used) +isEmpty(git_chromium_src_dir): git_chromium_src_dir = "3rdparty/chromium" + +CHROMIUM_SRC_DIR = $$absolute_path("$$QTWEBENGINE_ROOT/$$git_chromium_src_dir") INCLUDEPATH += $$CHROMIUM_SRC_DIR diff --git a/build/qmake/mkspecs/features/functions.prf b/build/qmake/mkspecs/features/functions.prf index a2fdeacee..17e54cfe1 100644 --- a/build/qmake/mkspecs/features/functions.prf +++ b/build/qmake/mkspecs/features/functions.prf @@ -76,13 +76,14 @@ defineReplace(findNinja) { out = $$which(ninja) # Try to be smart about it if we know where the chromium sources are located !exists($$out) { - ninjadir = $$absolute_path("$$QTWEBENGINE_ROOT/3rdparty/ninja") - # We might deal with an upstream chromium build - !exists($$ninjadir): ninjadir = $$absolute_path("$$QTWEBENGINE_ROOT/3rdparty_upstream/ninja") - out = "$$ninjadir/ninja" + git_chromium_src_dir = $$system("git config qtwebengine.chromiumsrcdir") + # Fall back to the snapshot path if git does not know about chromium sources (i.e. init-repository.py has not been used) + isEmpty(git_chromium_src_dir): git_chromium_src_dir = "3rdparty/chromium" + out = $$absolute_path("$$QTWEBENGINE_ROOT/$$git_chromium_src_dir/../ninja/ninja") # If we still did not find ninja, then we bootstrap it. !exists($$out) { message("bootstrapping ninja...") + ninjadir = $$dirname(out) system("python $$ninjadir/bootstrap.py") } } diff --git a/build/scripts/build_resources.py b/build/scripts/build_resources.py index 1b924750f..7b20aa9ad 100755 --- a/build/scripts/build_resources.py +++ b/build/scripts/build_resources.py @@ -50,13 +50,12 @@ import time qtwebengine_src = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) -chrome_src = os.environ.get('CHROMIUM_SRC_DIR') + +chrome_src = subprocess.check_output("git config qtwebengine.chromiumsrcdir || true", shell=True).strip() if chrome_src: - chrome_src = os.path.abspath(chrome_src) + chrome_src = os.path.join(qtwebengine_src, chrome_src) if not chrome_src or not os.path.isdir(chrome_src): chrome_src = os.path.join(qtwebengine_src, '3rdparty/chromium') - if not os.path.isdir(chrome_src): - chrome_src = os.path.join(qtwebengine_src, '3rdparty_upstream/chromium') print 'CHROMIUM_SRC_DIR not set, falling back to ' + chrome_src grit_tool = os.path.join(chrome_src, 'tools/grit/grit.py') diff --git a/init-repository.py b/init-repository.py index cc853a80d..795a2f4b0 100755 --- a/init-repository.py +++ b/init-repository.py @@ -46,6 +46,7 @@ import os import subprocess import sys import string +import argparse qtwebengine_src = os.path.abspath(os.path.join(os.path.dirname(__file__))) @@ -53,11 +54,26 @@ sys.path.append(os.path.join(qtwebengine_src, 'tools')) import git_submodule as GitSubmodule chromium_src = os.environ.get('CHROMIUM_SRC_DIR') +ninja_src = os.path.join(qtwebengine_src, '3rdparty_upstream/ninja') +use_external_chromium = False + +parser = argparse.ArgumentParser(description='Initialize QtWebEngine repository.') +group = parser.add_mutually_exclusive_group() +group.add_argument('-u', '--upstream', action='store_true', help='initialize using upstream Chromium submodule (default)') +group.add_argument('-s', '--snapshot', action='store_true', help='initialize using flat Chromium snapshot submodule') +args = parser.parse_args() + if chromium_src: - chromium_src = os.path.abspath(chromium_src) + chromium_src = os.path.abspath(chromium_src) + use_external_chromium = True 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 + if args.snapshot: + chromium_src = os.path.join(qtwebengine_src, '3rdparty/chromium') + ninja_src = os.path.join(qtwebengine_src, '3rdparty/ninja') + if args.upstream or not chromium_src: + chromium_src = os.path.join(qtwebengine_src, '3rdparty_upstream/chromium') + args.upstream = True + print 'CHROMIUM_SRC_DIR not set, using Chromium in' + chromium_src # Write our chromium sources directory into git config. relative_chromium_src = os.path.relpath(chromium_src, qtwebengine_src) @@ -73,6 +89,8 @@ def which(tool_name): return '' def updateLastChange(): + if use_external_chromium: + return currentDir = os.getcwd() os.chdir(chromium_src) print 'updating LASTCHANGE files' @@ -80,18 +98,6 @@ def updateLastChange(): subprocess.call(['python', 'build/util/lastchange.py', '-s', 'third_party/WebKit', '-o', 'build/util/LASTCHANGE.blink']) os.chdir(currentDir) -def buildNinja(): - ninja_tool = which('ninja') - if ninja_tool: - print 'found ninja in: ' + ninja_tool + ' ...not building new ninja.' - return - currentDir = os.getcwd() - ninja_src = os.path.join(qtwebengine_src, '3rdparty_upstream/ninja') - os.chdir(ninja_src) - print 'building ninja...' - subprocess.call(['python', 'bootstrap.py']) - os.chdir(currentDir) - def addGerritRemote(): os.chdir(qtwebengine_src) remotes = subprocess.check_output(['git', 'remote']) @@ -103,6 +109,8 @@ def installGitHooks(): subprocess.call(['scp', '-p', 'codereview.qt-project.org:hooks/commit-msg', '.git/hooks']) def applyPatches(): + if use_external_chromium: + return os.chdir(qtwebengine_src) subprocess.call(['sh', './patches/patch-chromium.sh']) @@ -113,14 +121,10 @@ def initUpstreamSubmodules(): chromium_shasum = '29d2d710e0e7961dff032ad4ab73887cc33122bb' os.chdir(qtwebengine_src) - print 'Configuring git to ignore all submodules. Submodule changes will not show up in "git diff"!' - subprocess.call(['git', 'config', 'diff.ignoreSubmodules', 'all']) - subprocess.call(['git', 'update-index', '--assume-unchanged', '.gitmodules']) - 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']) - if not '3rdparty_upstream/chromium' in current_submodules: + if not use_external_chromium and not '3rdparty_upstream/chromium' in current_submodules: subprocess.call(['git', 'submodule', 'add', chromium_url, '3rdparty_upstream/chromium']) ninjaSubmodule = GitSubmodule.Submodule() @@ -130,19 +134,31 @@ def initUpstreamSubmodules(): 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() + if not use_external_chromium: + chromiumSubmodule = GitSubmodule.Submodule() + chromiumSubmodule.path = '3rdparty_upstream/chromium' + chromiumSubmodule.shasum = chromium_shasum + chromiumSubmodule.url = chromium_url + chromiumSubmodule.os = 'all' + chromiumSubmodule.initialize() +def initSnapshot(): + snapshot = GitSubmodule.Submodule() + snapshot.path = '3rdparty' + snapshot.os = 'all' + snapshot.initialize() os.chdir(qtwebengine_src) addGerritRemote() installGitHooks() -initUpstreamSubmodules() -updateLastChange() -applyPatches() -#buildNinja() +print 'Configuring git to ignore all submodules. Submodule changes will not show up in "git diff"!' +subprocess.call(['git', 'config', 'diff.ignoreSubmodules', 'all']) +subprocess.call(['git', 'update-index', '--assume-unchanged', '.gitmodules']) + +if args.upstream: + initUpstreamSubmodules() + updateLastChange() + applyPatches() +if args.snapshot: + initSnapshot() |