summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZeno Albisser <zeno.albisser@digia.com>2013-08-17 20:31:40 +0200
committerZeno Albisser <zeno.albisser@digia.com>2013-08-19 20:27:13 +0200
commitfada4c705acff45be8418f20d28f1a091e6afe47 (patch)
tree1a724178b9f6b38026f15182a5c46cbfa82ca6bc
parentb9a97b2c4dca50f0c13a1006130e095e85936a2a (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-xinit-repository.py74
-rwxr-xr-xpatches/patch-chromium.sh2
-rw-r--r--tools/git_submodule.py66
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()