summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndras Becsi <andras.becsi@digia.com>2013-08-21 19:16:29 +0200
committerAndras Becsi <andras.becsi@digia.com>2013-08-21 23:25:29 +0200
commitfd661fe6e07fc6771a9e3e936ca955a88004fd03 (patch)
treedd1a64b457208548549c661683352a31718efa73
parent6b94d9732f5950d43ed3e61e4bf5c6f12b46aead (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-xbuild/gyp_qtwebengine6
-rw-r--r--build/qmake/mkspecs/features/default_pre.prf9
-rw-r--r--build/qmake/mkspecs/features/functions.prf9
-rwxr-xr-xbuild/scripts/build_resources.py7
-rwxr-xr-xinit-repository.py76
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()