Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Side by Side Diff: tools/create_debian_packages.py

Issue 396123003: Allows building debian packages for ARM. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 3 # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
4 # for details. All rights reserved. Use of this source code is governed by a 4 # for details. All rights reserved. Use of this source code is governed by a
5 # BSD-style license that can be found in the LICENSE file. 5 # BSD-style license that can be found in the LICENSE file.
6 # 6 #
7 7
8 # Script to build a Debian packages from a Dart tarball. The script 8 # Script to build a Debian packages from a Dart tarball. The script
9 # will build a source package and a 32-bit (i386) and 64-bit (amd64) 9 # will build a source package and a 32-bit (i386) and 64-bit (amd64)
10 # binary packages. 10 # binary packages.
(...skipping 15 matching lines...) Expand all
26 def BuildOptions(): 26 def BuildOptions():
27 result = optparse.OptionParser() 27 result = optparse.OptionParser()
28 result.add_option("--tar_filename", 28 result.add_option("--tar_filename",
29 default=None, 29 default=None,
30 help="The tar file to build from.") 30 help="The tar file to build from.")
31 result.add_option("--out_dir", 31 result.add_option("--out_dir",
32 default=None, 32 default=None,
33 help="Where to put the packages.") 33 help="Where to put the packages.")
34 result.add_option("-a", "--arch", 34 result.add_option("-a", "--arch",
35 help='Target architectures (comma-separated).', 35 help='Target architectures (comma-separated).',
36 metavar='[all,ia32,x64]', 36 metavar='[all,ia32,x64,arm]',
37 default='x64') 37 default='x64')
38 result.add_option("-t", "--toolchain",
39 help='Cross-compilation toolchain prefix',
40 default=None)
38 41
39 return result 42 return result
40 43
41 def RunBuildPackage(opt, cwd): 44 def RunBuildPackage(opt, cwd, toolchain=None):
45 env = os.environ.copy()
46 if toolchain != None:
47 env["TOOLCHAIN"] = '--toolchain=' + toolchain
42 cmd = ['dpkg-buildpackage', '-j%d' % HOST_CPUS] 48 cmd = ['dpkg-buildpackage', '-j%d' % HOST_CPUS]
43 cmd.extend(opt) 49 cmd.extend(opt)
44 process = subprocess.Popen(cmd, 50 process = subprocess.Popen(cmd,
45 stdout=subprocess.PIPE, stderr=subprocess.PIPE, 51 stdout=subprocess.PIPE, stderr=subprocess.PIPE,
46 cwd=cwd) 52 cwd=cwd, env=env)
47 (stdout, stderr) = process.communicate() 53 (stdout, stderr) = process.communicate()
48 if process.returncode != 0: 54 if process.returncode != 0:
49 raise Exception('Command \'%s\' failed: %s\nSTDOUT: %s' % 55 raise Exception('Command \'%s\' failed: %s\nSTDOUT: %s' %
50 (' '.join(cmd), stderr, stdout)) 56 (' '.join(cmd), stderr, stdout))
51 57
52 def BuildDebianPackage(tarball, out_dir, arch): 58 def BuildDebianPackage(tarball, out_dir, arch, toolchain):
53 version = utils.GetVersion() 59 version = utils.GetVersion()
54 tarroot = 'dart-%s' % version 60 tarroot = 'dart-%s' % version
55 origtarname = 'dart_%s.orig.tar.gz' % version 61 origtarname = 'dart_%s.orig.tar.gz' % version
56 62
57 if not exists(tarball): 63 if not exists(tarball):
58 print 'Source tarball not found' 64 print 'Source tarball not found'
59 return -1 65 return -1
60 66
61 with utils.TempDir() as temp_dir: 67 with utils.TempDir() as temp_dir:
62 origtarball = join(temp_dir, origtarname) 68 origtarball = join(temp_dir, origtarname)
63 copyfile(tarball, origtarball) 69 copyfile(tarball, origtarball)
64 70
65 with tarfile.open(origtarball) as tar: 71 with tarfile.open(origtarball) as tar:
66 tar.extractall(path=temp_dir) 72 tar.extractall(path=temp_dir)
67 73
68 # Build source package. 74 # Build source package.
69 print "Building source package" 75 print "Building source package"
70 RunBuildPackage(['-S', '-us', '-uc'], join(temp_dir, tarroot)); 76 RunBuildPackage(['-S', '-us', '-uc'], join(temp_dir, tarroot));
71 77
72 # Build 32-bit binary package. 78 # Build 32-bit binary package.
73 if ('ia32' in arch): 79 if ('ia32' in arch):
74 print "Building i386 package" 80 print "Building i386 package"
75 RunBuildPackage(['-B', '-ai386', '-us', '-uc'], join(temp_dir, tarroot)); 81 RunBuildPackage(['-B', '-ai386', '-us', '-uc'], join(temp_dir, tarroot))
76 82
77 # Build 64-bit binary package. 83 # Build 64-bit binary package.
78 if ('x64' in arch): 84 if ('x64' in arch):
79 print "Building amd64 package" 85 print "Building amd64 package"
80 RunBuildPackage(['-B', '-aamd64', '-us', '-uc'], join(temp_dir, tarroot)); 86 RunBuildPackage(['-B', '-aamd64', '-us', '-uc'], join(temp_dir, tarroot))
87
88 # Build armv binary package.
Søren Gjesse 2014/08/05 15:20:29 armv -> arm?
zra 2014/08/14 20:42:52 Done.
89 if ('arm' in arch):
90 print "Building arm package"
91 RunBuildPackage(
92 ['-B', '-aarm', '-us', '-uc'], join(temp_dir, tarroot), toolchain)
Søren Gjesse 2014/08/05 15:20:29 Is arm the right architectue here? Shouldn't it be
zra 2014/08/14 20:42:52 We currently support both hard and soft fp, which
81 93
82 # Copy the Debian package files to the build directory. 94 # Copy the Debian package files to the build directory.
83 debbase = 'dart_%s' % version 95 debbase = 'dart_%s' % version
84 source_package = [ 96 source_package = [
85 '%s-1.dsc' % debbase, 97 '%s-1.dsc' % debbase,
86 '%s.orig.tar.gz' % debbase, 98 '%s.orig.tar.gz' % debbase,
87 '%s-1.debian.tar.gz' % debbase 99 '%s-1.debian.tar.gz' % debbase
88 ] 100 ]
89 i386_package = [ 101 i386_package = [
90 '%s-1_i386.deb' % debbase 102 '%s-1_i386.deb' % debbase
91 ] 103 ]
92 amd64_package = [ 104 amd64_package = [
93 '%s-1_amd64.deb' % debbase 105 '%s-1_amd64.deb' % debbase
94 ] 106 ]
107 arm_package = [
108 '%s-1_arm.deb' % debbase
Søren Gjesse 2014/08/05 15:20:29 armhf here as well?
zra 2014/08/14 20:42:52 Acknowledged.
109 ]
95 110
96 for name in source_package: 111 for name in source_package:
97 copyfile(join(temp_dir, name), join(out_dir, name)) 112 copyfile(join(temp_dir, name), join(out_dir, name))
98 if ('ia32' in arch): 113 if ('ia32' in arch):
99 for name in i386_package: 114 for name in i386_package:
100 copyfile(join(temp_dir, name), join(out_dir, name)) 115 copyfile(join(temp_dir, name), join(out_dir, name))
101 if ('x64' in arch): 116 if ('x64' in arch):
102 for name in amd64_package: 117 for name in amd64_package:
103 copyfile(join(temp_dir, name), join(out_dir, name)) 118 copyfile(join(temp_dir, name), join(out_dir, name))
119 if ('arm' in arch):
120 for name in arm_package:
121 copyfile(join(temp_dir, name), join(out_dir, name))
122
104 123
105 def Main(): 124 def Main():
106 if HOST_OS != 'linux': 125 if HOST_OS != 'linux':
107 print 'Debian build only supported on linux' 126 print 'Debian build only supported on linux'
108 return -1 127 return -1
109 128
110 options, args = BuildOptions().parse_args() 129 options, args = BuildOptions().parse_args()
111 out_dir = options.out_dir 130 out_dir = options.out_dir
112 tar_filename = options.tar_filename 131 tar_filename = options.tar_filename
113 if options.arch == 'all': 132 if options.arch == 'all':
114 options.arch = 'ia32,x64' 133 options.arch = 'ia32,x64,arm'
115 arch = options.arch.split(',') 134 arch = options.arch.split(',')
116 135
117 if not options.out_dir: 136 if not options.out_dir:
118 out_dir = join(DART_DIR, utils.GetBuildDir(HOST_OS, HOST_OS)) 137 out_dir = join(DART_DIR, utils.GetBuildDir(HOST_OS, HOST_OS))
119 138
120 if not tar_filename: 139 if not tar_filename:
121 tar_filename = join(DART_DIR, 140 tar_filename = join(DART_DIR,
122 utils.GetBuildDir(HOST_OS, HOST_OS), 141 utils.GetBuildDir(HOST_OS, HOST_OS),
123 'dart-%s.tar.gz' % utils.GetVersion()) 142 'dart-%s.tar.gz' % utils.GetVersion())
124 143
125 BuildDebianPackage(tar_filename, out_dir, arch) 144 BuildDebianPackage(tar_filename, out_dir, arch, options.toolchain)
126 145
127 if __name__ == '__main__': 146 if __name__ == '__main__':
128 sys.exit(Main()) 147 sys.exit(Main())
OLDNEW
« no previous file with comments | « no previous file | tools/linux_dist_support/debian/control » ('j') | tools/linux_dist_support/debian/rules » ('J')

Powered by Google App Engine
This is Rietveld 408576698