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

Harald Sitter apachelogger-guest at moszumanska.debian.org
Tue May 12 08:29:49 UTC 2015


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

The following commit has been merged in the master branch:
commit 4ef3cff739b1b1893dcfc24d7be1810656bc9b6d
Author: Harald Sitter <sitter at kde.org>
Date:   Tue May 12 09:38:41 2015 +0200

    ppa-wipe is now ppa_wipe fully threaded, less code and presently wiping all
    
    also it has a help now. alas, no tests.
---
 kci/ppa-wipe.rb | 101 --------------------------------------------------------
 kci/ppa_wipe.rb |  68 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 68 insertions(+), 101 deletions(-)

diff --git a/kci/ppa-wipe.rb b/kci/ppa-wipe.rb
deleted file mode 100755
index 09be45a..0000000
--- a/kci/ppa-wipe.rb
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/env ruby
-
-ENV['PATH'] = '/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin'
-Dir.chdir('/tmp/') # Containers by default have a bugged out pwd, force /tmp.
-
-require_relative "lib/require_or_install"
-
-require "logger"
-require "thwait"
-require "logger/colors"
-require_relative "lib/jenkins"
-require_relative "lib/lp"
-
-$logger = Logger.new(STDERR)
-$logger.level = Logger::INFO
-
-Launchpad.authenticate
-
-ubuntu = Launchpad::Rubber::from_url("https://api.launchpad.net/devel/ubuntu")
-series = nil
-ubuntu.series.each do |_series|
-    next unless _series.name == 'vivid'
-    series = _series
-    break
-end
-
-class Archive
-    attr_accessor :ppa
-
-    def initialize(name, series)
-        @name = name
-        @ppa = Launchpad::Rubber::from_url("https://api.launchpad.net/devel/~kubuntu-ppa/+archive/ubuntu/#{name}")
-        @series = series
-        @published = nil
-    end
-
-    def wipe
-        @published = nil
-        # We need to iter clear as Deleted entries would still retain their entry
-        # making the unfiltered list grow larger and larger every time.
-        each_source do |source|
-            $logger.info "Requesting deletion of: #{source.source_package_name} from #{@name}"
-            begin
-                source.requestDeletion!()
-            rescue => e
-                $logger.warn "failed to request deletion, retry"
-                p e
-                exit 1
-                retry
-            end
-        end
-    end
-
-    def copy(from_ppa)
-        @published = nil
-        from_ppa.each_source(:Published) do |source|
-            $logger.info "Copying source: #{source.source_package_name} (#{source.source_package_version})"
-            begin
-                @ppa.copyPackage!(:from_archive => from_ppa.ppa,
-                                  :source_name => source.source_package_name,
-                                  :version => source.source_package_version,
-                                  :to_pocket => "Release",
-                                  :include_binaries => true)
-#             rescue => e
-#                 $logger.warn "failed to request copy, retry"
-#                 puts e
-#                 sleep 1
-#                 retry
-            end
-        end
-    end
-
-    def all_published?
-        return @published unless @published.nil?
-        each_source(:Published) do |source|
-            source_id = File.basename(source.self_link)
-            build_summary = @ppa.getBuildSummariesForSourceIds(:source_ids => source_id)
-            status = build_summary[source_id]['status']
-            return @published = false if status == 'FULLYBUILT_PENDING'
-        end
-        return @published = true
-    end
-
-    def each_source(statuses = %i(Pending Published Superseded Obsolete))
-        statuses = [statuses] unless statuses.is_a? Array
-        statuses.each do |status|
-            @ppa.getPublishedSources(status: status,
-                                     distro_series: @series).each do |source|
-                p source
-                yield source
-            end
-        end
-    end
-end
-
-ppa = Archive.new('staging', series)
-ppa.wipe
-p 'seelp'
-sleep 60 while ppa.all_published? && ppa.all_published?
-
-exit 0
diff --git a/kci/ppa_wipe.rb b/kci/ppa_wipe.rb
new file mode 100755
index 0000000..b24f687
--- /dev/null
+++ b/kci/ppa_wipe.rb
@@ -0,0 +1,68 @@
+#!/usr/bin/env ruby
+
+require 'logger'
+require 'logger/colors'
+require 'optparse'
+
+require_relative '../lib/kci'
+require_relative 'lib/lp'
+require_relative 'lib/retry'
+require_relative 'lib/thread_pool'
+
+THREAD_COUNT = 8
+
+LOG = Logger.new(STDERR)
+LOG.level = Logger::INFO
+LOG.progname = 'ppa_promote'
+LOG.warn 'PPA Promote'
+
+options = OpenStruct.new(series: nil, ppa: nil)
+parser = OptionParser.new do |opts|
+  opts.on('-s SERIES', '--series SERIES', 'Ubuntu series to run on')  do |v|
+    options[:series] = v
+  end
+end
+parser.parse!
+
+abort parser.help if options[:series].nil?
+
+class Archive
+  attr_accessor :ppa
+
+  def initialize(name, series)
+    @ppa = Launchpad::Rubber.from_path("~kubuntu-ci/+archive/ubuntu/#{name}")
+    @series = Launchpad::Rubber.from_path("ubuntu/#{series}")
+  end
+
+  def wipe
+    # We need to iter clear as Deleted entries would still retain their entry
+    # making the unfiltered list grow larger and larger every time.
+    %i(Pending Published Superseded Obsolete).each do |status|
+      sources = @ppa.getPublishedSources(status: status, distro_series: @series)
+      source_queue = Queue.new(sources)
+      BlockingThreadPool.run(WIPE_THREAD_COUNT) do
+        until source_queue.empty?
+          source = source_queue.pop(true)
+          Retry.retry_it do
+            LOG.info "Requesting deletion of: #{source.display_name}" \
+            " from #{@ppa.name}"
+            source.requestDeletion!
+          end
+        end
+      end
+    end
+  end
+end
+
+Launchpad.authenticate
+
+KCI.types.each do |type|
+  LOG.info "Working on #{type}"
+  Archive.new("#{type}", options.series).wipe
+  %w(daily weekly).each do |snapshot|
+    LOG.info "Working on #{type}-#{snapshot}"
+    Archive.new("#{type}-#{snapshot}", options.series).wipe
+  end
+end
+
+exit 0

-- 
ci-tooling packaging



More information about the pkg-kde-commits mailing list