Updating trunk VERSION from 2139.0 to 2140.0
[chromium-blink-merge.git] / build / linux / install-chromeos-fonts.py
blob98c3a570d139f2a21c21bf0e08c9f9c4278898fd
1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
6 # Script to install the Chrome OS fonts on Linux.
7 # This script can be run manually (as root), but is also run as part
8 # install-build-deps.sh.
10 import os
11 import shutil
12 import subprocess
13 import sys
15 URL_PREFIX = 'https://commondatastorage.googleapis.com'
16 URL_DIR = 'chromeos-localmirror/distfiles'
17 URL_FILE = 'notofonts-20121206.tar.gz'
18 FONTS_DIR = '/usr/local/share/fonts'
20 # The URL matches the URL in the ebuild script in chromiumos. See:
21 # /path/to/chromiumos/src/
22 # third_party/chromiumos-overlay/media-fonts/notofonts/
23 # notofonts-20121206.ebuild
25 def main(args):
26 if not sys.platform.startswith('linux'):
27 print "Error: %s must be run on Linux." % __file__
28 return 1
30 if os.getuid() != 0:
31 print "Error: %s must be run as root." % __file__
32 return 1
34 if not os.path.isdir(FONTS_DIR):
35 print "Error: Destination directory does not exist: %s" % FONTS_DIR
36 return 1
38 dest_dir = os.path.join(FONTS_DIR, 'chromeos')
40 url = "%s/%s/%s" % (URL_PREFIX, URL_DIR, URL_FILE)
42 stamp = os.path.join(dest_dir, ".stamp02")
43 if os.path.exists(stamp):
44 with open(stamp) as s:
45 if s.read() == url:
46 print "Chrome OS fonts already up-to-date in %s." % dest_dir
47 return 0
49 if os.path.isdir(dest_dir):
50 shutil.rmtree(dest_dir)
51 os.mkdir(dest_dir)
52 os.chmod(dest_dir, 0755)
54 print "Installing Chrome OS fonts to %s." % dest_dir
55 tarball = os.path.join(dest_dir, URL_FILE)
56 subprocess.check_call(['curl', '-L', url, '-o', tarball])
57 subprocess.check_call(['tar', '--no-same-owner', '--no-same-permissions',
58 '-xf', tarball, '-C', dest_dir])
59 os.remove(tarball)
61 readme = os.path.join(dest_dir, "README")
62 with open(readme, 'w') as s:
63 s.write("This directory and its contents are auto-generated.\n")
64 s.write("It may be deleted and recreated. Do not modify.\n")
65 s.write("Script: %s\n" % __file__)
67 with open(stamp, 'w') as s:
68 s.write(url)
70 for base, dirs, files in os.walk(dest_dir):
71 for dir in dirs:
72 os.chmod(os.path.join(base, dir), 0755)
73 for file in files:
74 os.chmod(os.path.join(base, file), 0644)
76 return 0
78 if __name__ == '__main__':
79 sys.exit(main(sys.argv[1:]))