blob: 6e36b654ffcc72a6f75edb196ff2938e3b424fb3 [file] [log] [blame]
Philip P. Moltmannac3d58c2016-03-04 15:19:21 -08001#!/usr/bin/python
2
3import urllib2
4import os
5import sys
6from subprocess import call
7
8CHROMIUM_VERSION_TRACKING_URL = "https://omahaproxy.appspot.com/all"
9CHROMIUM_BUILD_TYPE = "stable"
10CHROMIUM_OS = "android"
11
12CHROMIUM_SOURCE_URL = "https://chromium.googlesource.com/chromium/src/+/refs/tags"
13CHROMIUM_DEPS_FILE = "DEPS"
14
15PDFIUM_GIT_REPO = "https://pdfium.googlesource.com/pdfium.git"
16
Colin Cross961fd5e2017-04-19 20:32:09 -070017MAKE_FILES = ["Android.bp",
18 "third_party/pdfiumopenjpeg.bp",
19 "third_party/pdfiumlcms.bp",
20 "third_party/pdfiumjpeg.bp",
21 "third_party/pdfiumagg23.bp",
22 "third_party/pdfiumzlib.bp",
23 "third_party/pdfiumbigint.bp",
24 "third_party/Android.bp",
25 "pdfiumfpdftext.bp",
26 "pdfiumfpdfdoc.bp",
27 "pdfiumfdrm.bp",
28 "pdfiumfxcodec.bp",
29 "pdfiumfpdfapi.bp",
30 "pdfiumfxcrt.bp",
31 "pdfiumfxge.bp",
32 "pdfiumjavascript.bp",
33 "pdfiumformfiller.bp",
34 "pdfiumfxedit.bp",
35 "pdfiumpdfwindow.bp",
36 "pdfium.bp"]
Philip P. Moltmannac3d58c2016-03-04 15:19:21 -080037
Chih-Hung Hsiehec72bb82017-02-23 15:32:15 -080038OWNERS_FILES = ["OWNERS", "docs/OWNERS", "third_party/base/numerics/OWNERS"]
39
Philip P. Moltmannac3d58c2016-03-04 15:19:21 -080040COPY_FILES = [os.path.basename(__file__), ".git", "MODULE_LICENSE_BSD", "NOTICE"] + MAKE_FILES
Chih-Hung Hsiehec72bb82017-02-23 15:32:15 -080041REMOVE_FILES = [os.path.basename(__file__), ".git", ".gitignore"] + OWNERS_FILES
Philip P. Moltmannac3d58c2016-03-04 15:19:21 -080042
43def getStableChromiumVersion():
44 """ :return the latest chromium version """
45
46 chromiumVersions = urllib2.urlopen(CHROMIUM_VERSION_TRACKING_URL)
47
48 for chromiumVersionStr in chromiumVersions.read().split("\n"):
49 chromiumVersion = chromiumVersionStr.split(",")
50
51 if chromiumVersion[0] == CHROMIUM_OS and chromiumVersion[1] == CHROMIUM_BUILD_TYPE:
52 return chromiumVersion[2]
53
54 raise Exception("Could not find latest %s chromium version for %s at %s"
55 % (CHROMIUM_BUILD_TYPE, CHROMIUM_OS, CHROMIUM_VERSION_TRACKING_URL))
56
57
58def getPdfiumRevision():
59 """ :return the pdfium version used by the latest chromium version """
60
61 try:
62 deps = urllib2.urlopen("%s/%s/%s" % (CHROMIUM_SOURCE_URL, getStableChromiumVersion(),
63 CHROMIUM_DEPS_FILE))
64
65 # I seem to not be able to get the raw file, hence grep the html file
66 return deps.read().split("pdfium_revision&")[1].split("'")[1]
67 except Exception as e:
68 raise Exception("Could not extract pdfium revision from %s/%s/%s: %s"
69 % (CHROMIUM_SOURCE_URL, getStableChromiumVersion(), CHROMIUM_DEPS_FILE, e))
70
71
72def downloadPdfium(newDir, rev):
73 """ Download the newest version of pdfium to the new directory
74
75 :param newDir: The new files
76 :param rev: The revision to change to
77 """
78
79 call(["git", "clone", PDFIUM_GIT_REPO, newDir])
80 os.chdir(newDir)
81 call(["git", "reset", "--hard", rev])
82
83
84def removeFiles(newDir):
85 """ Remove files that should not be checked in from the original download
86
87 :param newDir: The new files
88 """
89
90 for fileName in REMOVE_FILES:
91 call(["rm", "-rf", os.path.join(newDir, fileName)])
92
93
94def copyFiles(currentDir, newDir):
95 """ Copy files needed to make pdfium work with android
96
97 :param currentDir: The current files
98 :param newDir: The new files
99 """
100
101 for fileName in COPY_FILES:
102 call(["cp", "-r", os.path.join(currentDir, fileName), os.path.join(newDir, fileName)])
103
104
105def exchange(currentDir, newDir, oldDir):
106 """ Update current to new and save current in old.
107
108 :param currentDir: The current files
109 :param newDir: The new files
110 :param oldDir: The old files
111 """
112
113 call(["mv", currentDir, oldDir])
114 call(["mv", newDir, currentDir])
115
116
117if __name__ == "__main__":
118 rev = getPdfiumRevision()
119 targetDir = os.path.dirname(os.path.realpath(__file__))
120 newDir = targetDir + ".new"
121 oldDir = targetDir + ".old"
122
123 try:
124 downloadPdfium(newDir, rev)
125 removeFiles(newDir)
126 copyFiles(targetDir, newDir)
127 exchange(targetDir, newDir, oldDir)
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -0700128 print("Updated pdfium to " + rev + " (Chrome " + getStableChromiumVersion() + "). Old files "
129 "are in " + oldDir + ". Please verify if build files need to be updated.")
Philip P. Moltmannac3d58c2016-03-04 15:19:21 -0800130
131 sys.exit(0)
132 except:
133 call(["rm", "-rf", newDir])
134 sys.exit(1)
135