Index: tools/create_debian_packages.py |
=================================================================== |
--- tools/create_debian_packages.py (revision 39257) |
+++ tools/create_debian_packages.py (working copy) |
@@ -10,6 +10,7 @@ |
# binary packages. |
import optparse |
+import os |
import sys |
import tarfile |
import subprocess |
@@ -31,23 +32,29 @@ |
help="Where to put the packages.") |
result.add_option("-a", "--arch", |
help='Target architectures (comma-separated).', |
- metavar='[all,ia32,x64]', |
+ metavar='[all,ia32,x64,armel,armhf]', |
default='x64') |
+ result.add_option("-t", "--toolchain", |
+ help='Cross-compilation toolchain prefix', |
+ default=None) |
return result |
-def RunBuildPackage(opt, cwd): |
+def RunBuildPackage(opt, cwd, toolchain=None): |
+ env = os.environ.copy() |
+ if toolchain != None: |
+ env["TOOLCHAIN"] = '--toolchain=' + toolchain |
cmd = ['dpkg-buildpackage', '-j%d' % HOST_CPUS] |
cmd.extend(opt) |
process = subprocess.Popen(cmd, |
stdout=subprocess.PIPE, stderr=subprocess.PIPE, |
- cwd=cwd) |
+ cwd=cwd, env=env) |
(stdout, stderr) = process.communicate() |
if process.returncode != 0: |
raise Exception('Command \'%s\' failed: %s\nSTDOUT: %s' % |
(' '.join(cmd), stderr, stdout)) |
-def BuildDebianPackage(tarball, out_dir, arch): |
+def BuildDebianPackage(tarball, out_dir, arch, toolchain): |
version = utils.GetVersion() |
tarroot = 'dart-%s' % version |
origtarname = 'dart_%s.orig.tar.gz' % version |
@@ -77,6 +84,18 @@ |
print "Building amd64 package" |
RunBuildPackage(['-B', '-aamd64', '-us', '-uc'], join(temp_dir, tarroot)) |
+ # Build armhf binary package. |
+ if 'armhf' in arch: |
+ print "Building armhf package" |
+ RunBuildPackage( |
+ ['-B', '-aarmhf', '-us', '-uc'], join(temp_dir, tarroot), toolchain) |
+ |
+ # Build armel binary package. |
+ if 'armel' in arch: |
+ print "Building armel package" |
+ RunBuildPackage( |
+ ['-B', '-aarmel', '-us', '-uc'], join(temp_dir, tarroot), toolchain) |
+ |
# Copy the Debian package files to the build directory. |
debbase = 'dart_%s' % version |
source_package = [ |
@@ -90,6 +109,12 @@ |
amd64_package = [ |
'%s-1_amd64.deb' % debbase |
] |
+ armhf_package = [ |
+ '%s-1_armhf.deb' % debbase |
+ ] |
+ armel_package = [ |
+ '%s-1_armel.deb' % debbase |
+ ] |
for name in source_package: |
copyfile(join(temp_dir, name), join(out_dir, name)) |
@@ -99,7 +124,14 @@ |
if 'x64' in arch: |
for name in amd64_package: |
copyfile(join(temp_dir, name), join(out_dir, name)) |
+ if ('armhf' in arch): |
+ for name in armhf_package: |
+ copyfile(join(temp_dir, name), join(out_dir, name)) |
+ if ('armel' in arch): |
+ for name in armel_package: |
+ copyfile(join(temp_dir, name), join(out_dir, name)) |
+ |
def Main(): |
if HOST_OS != 'linux': |
print 'Debian build only supported on linux' |
@@ -109,7 +141,7 @@ |
out_dir = options.out_dir |
tar_filename = options.tar_filename |
if options.arch == 'all': |
- options.arch = 'ia32,x64' |
+ options.arch = 'ia32,x64,armhf' |
arch = options.arch.split(',') |
if not options.out_dir: |
@@ -120,7 +152,7 @@ |
utils.GetBuildDir(HOST_OS), |
'dart-%s.tar.gz' % utils.GetVersion()) |
- BuildDebianPackage(tar_filename, out_dir, arch) |
+ BuildDebianPackage(tar_filename, out_dir, arch, options.toolchain) |
if __name__ == '__main__': |
sys.exit(Main()) |