[SCM] ci-tooling packaging branch, master, updated. e276a9e433002e0b1c5a6e65ce6eb3023eb9b220
Rohan Garg
rohangarg-guest at moszumanska.debian.org
Wed Dec 3 17:04:59 UTC 2014
Gitweb-URL: http://git.debian.org/?p=pkg-kde/ci-tooling.git;a=commitdiff;h=e276a9e
The following commit has been merged in the master branch:
commit e276a9e433002e0b1c5a6e65ce6eb3023eb9b220
Author: Rohan Garg <rohan at kde.org>
Date: Wed Dec 3 18:04:48 2014 +0100
Add containerized builder
---
dci.rb | 12 +++++++++++
dci/build.rb | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 79 insertions(+)
diff --git a/dci.rb b/dci.rb
new file mode 100755
index 0000000..ad3d05e
--- /dev/null
+++ b/dci.rb
@@ -0,0 +1,12 @@
+#!/usr/bin/env ruby
+
+require 'date'
+require 'fileutils'
+require_relative 'lib/debian/changelog'
+
+if Process.uid == '0'
+ exit 1 unless system("apt-get update")
+ exit 1 unless system("apt-get install -y lsb-release")
+end
+
+require_relative "dci/#{ARGV[0]}"
\ No newline at end of file
diff --git a/dci/build.rb b/dci/build.rb
new file mode 100644
index 0000000..b945afa
--- /dev/null
+++ b/dci/build.rb
@@ -0,0 +1,67 @@
+require 'logger'
+require 'tmpdir'
+require 'fileutils'
+require_relative '../lib/debian/control'
+
+## Some notes :
+## * All builds happen in /tmp/<tmp dir>
+## * All resulting debs are put in /tmp/build/<package name>
+## * Copy resulting files using dcmd cp /tmp/build/*/*.changes
+
+
+logger = Logger.new(STDOUT)
+
+if not ARGV[1].end_with? '.changes'
+ logger.fatal("#{ARGV[1]} is not an actual changes file. Abort!")
+else
+ package_name = `grep Source #{ARGV[1]}`.strip.split(':')[-1]
+ package_version = `grep Version #{ARGV[1]}`.strip.split(':')[-1]
+
+ result_dir = "/tmp/build/#{package_name}"
+
+ logger.info("Cleaning up before build")
+
+ system("rm -rf #{result_dir}")
+
+ logger.info("Starting build for #{package_name}")
+ logger.info("Updating chroot")
+ system("apt-get update && apt-get -y dist-upgrade")
+
+ logger.info("Installing some extra tools")
+ system("apt-get -y install devscripts ubuntu-dev-tools")
+
+ logger.info("Extracting source")
+ Dir.mktmpdir { |dir|
+ Dir.chdir(dir) {
+ system("dcmd cp -v #{ARGV[1]} #{dir}")
+ system("dpkg-source -x *.dsc")
+
+ package_folder = Dir.glob("#{package_name}*").select { |fn| File.directory? fn }
+ Dir.chdir(package_folder[0]) {
+ logger.info("Figuring out build deps")
+ c = DebianControl.new
+ c.parse!
+ build_depends = []
+ c.source['build-depends'].each do |dep|
+ build_depends << dep.name
+ end
+
+ logger.info("Installing build deps : #{build_depends}")
+ system("apt-get -y install #{build_depends.join(' ')}")
+ logger.info("Finished installing build deps")
+
+ logger.info("Start building the package")
+ system("dpkg-buildpackage -j`nproc` -us -uc")
+ }
+ FileUtils.mkdir_p(result_dir)
+ changes_files = Dir.glob("*changes").select { |changes| !changes.include? 'source' }
+ changes_files.each do |changes_file|
+ logger.info("Copying #{changes_file} ...")
+ system("dcmd cp #{changes_file} #{result_dir}")
+ end
+ logger.info("Build finished!")
+ }
+ }
+end
+
+logger.close
--
ci-tooling packaging
More information about the pkg-kde-commits
mailing list