[SCM] ci-tooling packaging branch, master, updated. f49367220c7b301750f74d379f8e18f42ae985a7

Rohan Garg rohangarg-guest at moszumanska.debian.org
Wed Jan 7 18:01:04 UTC 2015


Gitweb-URL: http://git.debian.org/?p=pkg-kde/ci-tooling.git;a=commitdiff;h=f493672

The following commit has been merged in the master branch:
commit f49367220c7b301750f74d379f8e18f42ae985a7
Author: Rohan Garg <rohan at kde.org>
Date:   Wed Jan 7 18:59:44 2015 +0100

    Add CI tooling for Mozilla packages
---
 dci/mozilla.rb | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dci/source.rb  |   2 +-
 2 files changed, 132 insertions(+), 1 deletion(-)

diff --git a/dci/mozilla.rb b/dci/mozilla.rb
new file mode 100644
index 0000000..4a4a108
--- /dev/null
+++ b/dci/mozilla.rb
@@ -0,0 +1,131 @@
+require_relative '../lib/logger'
+require_relative '../lib/debian/changelog'
+require_relative '../lib/debian/control'
+
+
+require 'open-uri'
+require 'nokogiri'
+require 'thwait'
+
+fail 'Need a mozilla product to build for!' unless ARGV[1]
+fail 'Need a release to build for!' unless ARGV[2]
+
+$logger = new_logger
+
+PACKAGE = ARGV[1]
+RELEASE = ARGV[2]
+
+def firefox_releases
+    threads = []
+    ubuntu_versions = []
+    upstream_versions = []
+    threads << Thread.new do
+        # Find the latest release from the Mozilla releases page
+        begin
+            doc = Nokogiri::HTML(open("https://www.mozilla.org/en-US/firefox/releases"))
+        rescue
+            sleep 30
+            retry
+        end
+
+        doc.css('li').each do |node|
+            text = node.text
+            match_data = text.match('(\d+[.]\d+)')
+            upstream_versions << match_data.string.to_f unless match_data.nil?
+        end
+
+        upstream_versions.uniq!
+        upstream_versions.sort!
+        puts "Upstream #{upstream_versions}"
+    end
+
+    threads << Thread.new do
+        `rmadison -u ubuntu -a amd64 firefox`.to_str.each_line { |line|
+            match_data = line.match('(\d+[.]\d+)')
+            ubuntu_versions <<  match_data[0].to_f unless match_data.nil?
+        }
+        ubuntu_versions.uniq!
+        ubuntu_versions.sort!
+        puts "Ubuntu #{ubuntu_versions}"
+    end
+
+    ThreadsWait.all_waits(threads)
+    return { ubuntu: ubuntu_versions[-1], upstream: upstream_versions[-1] }
+end
+
+def run_cmd(cmd)
+    retry_count = 0
+    begin
+        if retry_count <= 5
+            fail unless system(cmd)
+        else
+            $logger.fatal("#{cmd} keeps failing! :(")
+            exit 1
+        end
+    rescue RuntimeError
+        $logger.warn("Trying to run #{cmd} again!")
+        retry_count += 1
+        sleep(retry_count * 20)
+        retry
+    end
+end
+
+def build_firefox
+    release_info = firefox_releases
+    if release_info[:ubuntu] < release_info[:firefox_releases]
+        logger.error("Can't build new firefox, Ubuntu hasn't updated the package!")
+        exit 0
+    end
+
+    Dir.mkdir('build')
+    Dir.chdir('build') {
+        system('pull-lp-source firefox')
+        firefox_dir = Dir["firefox-*"][0]
+
+        system("hg clone http://www.rosenauer.org/hg/mozilla/#firefox#{release_info[:ubuntu]} suse")
+        Dir.chdir(firefox_dir) {
+            changelog = Changelog.new
+            version = "#{changelog.version(Changelog::BASE)}"
+            if RELEASE == 'sid' || RELEASE == 'unstable'
+                version += '-1'
+                File.open('debian/config/mozconfig.in', 'a') { |f|
+                    f.puts("ac_add_options --enable-gstreamer=1.0
")
+                }
+            else
+                version += changelog.version(Changelog::REVISION).next
+            end
+            version += "~#{DateTime.now.strftime('%Y%m%d.%H%M')}"
+            logger.info("New version is going to be #{version}")
+            `dch -v "#{version}" ""`
+
+            `cp ../suse/firefox-kde.patch ../suse/mozilla-kde.patch debian/patches/`
+            `cp ../suse/MozillaFirefox/kde.js debian/`
+
+            logger.info("Adding Firefox KDE patches")
+            File.open('debian/patches/series', 'a') { |f|
+                f.puts('firefox-kde.patch
mozilla-kde.patch
')
+            }
+
+            logger.info("Modifying debian/rules")
+            `sed -i '/^pre-build::/ s/$/ 
	mkdir -p $(MOZ_DISTDIR)\/bin\/defaults\/pref\/
	cp $(CURDIR)\/debian\/kde.js $(MOZ_DISTDIR)\/bin\/defaults\/pref\/kde.js /' debian/rules`
+
+            logger.info("Building the source package")
+            control = DebianControl.new
+            control.parse!
+            control.source['build-depends'].each do |dep|
+                build_depends << dep.name
+            end
+            fail "Failed to install build deps!" unless system("apt-get -y install #{build_depends.join(' ')}")
+            `dch --release --distribution #{RELEASE} ""`
+            system('debuild -S -sa')
+        }
+        system('dcmd cp firefox*.changes /build/')
+    }
+end
+
+def build_thunderbird
+    $logger.info("Needs implementing")
+end
+
+run_cmd('apt-get update')
+run_cmd('apt-get -y install ubuntu-dev-tools mercurial')
diff --git a/dci/source.rb b/dci/source.rb
index be66249..f2b9c74 100644
--- a/dci/source.rb
+++ b/dci/source.rb
@@ -35,7 +35,7 @@ def run_cmd(cmd)
     retry_count = 0
     begin
         if retry_count <= 5
-            raise if not system(cmd)
+            raise unless system(cmd)
         else
             $logger.fatal("#{cmd} keeps failing! :(")
             exit 1

-- 
ci-tooling packaging



More information about the pkg-kde-commits mailing list