[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