Index: tools/create_debian_packages.py |
diff --git a/tools/create_debian_packages.py b/tools/create_debian_packages.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..b76c2e349d503d8076297775660061f5c4b917aa |
--- /dev/null |
+++ b/tools/create_debian_packages.py |
@@ -0,0 +1,93 @@ |
+#!/usr/bin/env python |
+# |
+# Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
+# for details. All rights reserved. Use of this source code is governed by a |
+# BSD-style license that can be found in the LICENSE file. |
+# |
+ |
+# Script to build a Debian packages from a Dart tarball. The script |
+# will build a source package and a 32-bit (i386) and 64-bit (amd64) |
+# binary packages. |
+ |
+import sys |
+import tarfile |
+import subprocess |
+import utils |
+ |
+from os.path import join, exists, abspath |
+from shutil import copyfile |
+ |
+HOST_OS = utils.GuessOS() |
+HOST_CPUS = utils.GuessCpus() |
+DART_DIR = abspath(join(__file__, '..', '..')) |
+ |
+def RunBuildPackage(opt, cwd): |
+ cmd = ['dpkg-buildpackage', '-j%d' % HOST_CPUS] |
+ cmd.extend(opt) |
+ process = subprocess.Popen(cmd, |
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE, |
+ cwd=cwd) |
+ (stdout, stderr) = process.communicate() |
+ if process.returncode != 0: |
+ raise Exception('Command \'%s\' failed: %s\nSTDOUT: %s' % |
+ (' '.join(cmd), stderr, stdout)) |
+ |
+def BuildDebianPackage(): |
+ version = utils.GetVersion() |
+ builddir = join(DART_DIR, utils.GetBuildDir(HOST_OS, HOST_OS)) |
+ tarroot = 'dart-%s' % version |
+ tarname = 'dart-%s.tar.gz' % version |
+ origtarname = 'dart_%s.orig.tar.gz' % version |
+ tarball = join(builddir, tarname) |
+ if not exists(join(builddir, tarball)): |
+ print 'Source tarball not found' |
+ return -1 |
+ |
+ with utils.TempDir() as temp_dir: |
+ origtarball = join(temp_dir, origtarname) |
+ copyfile(tarball, origtarball) |
+ |
+ with tarfile.open(origtarball) as tar: |
+ tar.extractall(path=temp_dir) |
+ |
+ # Build source package. |
+ print "Building source package" |
+ RunBuildPackage(['-S', '-us', '-uc'], join(temp_dir, tarroot)); |
+ |
+ # Build 32-bit binary package. |
+ print "Building i386 package" |
+ RunBuildPackage(['-B', '-ai386', '-us', '-uc'], join(temp_dir, tarroot)); |
+ |
+ # Build 64-bit binary package. |
+ print "Building amd64 package" |
+ RunBuildPackage(['-B', '-aamd64', '-us', '-uc'], join(temp_dir, tarroot)); |
+ |
+ # Copy the Debian package files to the build directory. |
+ debbase = 'dart_%s' % version |
+ source_package = [ |
+ '%s-1.dsc' % debbase, |
+ '%s.orig.tar.gz' % debbase, |
+ '%s-1.debian.tar.gz' % debbase |
+ ] |
+ i386_package = [ |
+ '%s-1_i386.deb' % debbase |
+ ] |
+ amd64_package = [ |
+ '%s-1_amd64.deb' % debbase |
+ ] |
+ for name in source_package: |
+ copyfile(join(temp_dir, name), join(builddir, name)) |
+ for name in i386_package: |
+ copyfile(join(temp_dir, name), join(builddir, name)) |
+ for name in amd64_package: |
+ copyfile(join(temp_dir, name), join(builddir, name)) |
+ |
+def Main(): |
+ if HOST_OS != 'linux': |
+ print 'Debian build only supported on linux' |
+ return -1 |
+ |
+ BuildDebianPackage() |
+ |
+if __name__ == '__main__': |
+ sys.exit(Main()) |