--- NeedsPackaging | 15 ----- add-gbp.conf | 8 --- add-gemspec-install | 27 -------- check-branches | 17 ----- make-mrconfig | 90 -------------------------- manifest | 28 -------- needs-gemspec-install | 35 ---------- pkg-overview | 175 -------------------------------------------------- quick-update | 48 -------------- update-mrconfig | 90 ++++++++++++++++++++++++++ 10 files changed, 90 insertions(+), 443 deletions(-) delete mode 100644 NeedsPackaging delete mode 100755 add-gbp.conf delete mode 100755 add-gemspec-install delete mode 100755 check-branches delete mode 100755 make-mrconfig delete mode 100755 manifest delete mode 100755 needs-gemspec-install delete mode 100755 pkg-overview delete mode 100755 quick-update create mode 100755 update-mrconfig
diff --git a/NeedsPackaging b/NeedsPackaging deleted file mode 100644 index 75dcee0..0000000 --- a/NeedsPackaging +++ /dev/null @@ -1,15 +0,0 @@ -This file lists packages that need to be packaged in order to fullfill the -dependencies (esp. build-dependencies, to run test suites) of other packages. - -packages that have test suites disabled because of missing dependencies: ------------------------------------------------------------------------- -rest-client (webmock) -rack (bacon, fcgi, memcache-client, mongrel, thin) - (bacon, memcache-client, mongrel, thin: ok) -sinatra (shotgun, rack/test) -tilt (contest,builder,erubis,haml,rdiscount,liquid,less,radius,nokogiri,markaby,coffee-script) - (should be added to Suggests once packaged) - (contest,builder,erubis,haml,rdiscount,liquid,nokogiri,coffee-script: ok) -formatador (shindo) -multi_json (simplecov) -... diff --git a/add-gbp.conf b/add-gbp.conf deleted file mode 100755 index 3500624..0000000 --- a/add-gbp.conf +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -for gitdir in $(echo */.git); do - if ! test -e $gitdir/gbp.conf; then - printf "[DEFAULT]\npristine-tar = True\n" > $gitdir/gbp.conf - echo "Adding gbp.conf to $gitdir" - fi -done diff --git a/add-gemspec-install b/add-gemspec-install deleted file mode 100755 index d9e86ab..0000000 --- a/add-gemspec-install +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -set -e - -if ! test -e .git/gbp.conf; then - cat > .git/gbp.conf <<EOF -[DEFAULT] -pristine-tar = True -EOF -fi -gbp-pull - -sed -i -e 's/gem2deb (>= [0-9.]\+~\?)/gem2deb (>= 0.3.0~)/' debian/control - -if (head -n 1 debian/changelog | grep UNRELEASED); then - dch 'Team upload.' - dch 'Bump build dependency on gem2deb to >= 0.3.0~.' -else - dch --no-auto-nmu -i 'Team upload.' - dch --no-auto-nmu 'Bump build dependency on gem2deb to >= 0.3.0~.' -fi - -sed -i -e '1 s/UNRELEASED/unstable/' debian/changelog -git commit -a -m 'Build against newer gem2deb' -git show --color-words - -$(dirname $0)/upload diff --git a/check-branches b/check-branches deleted file mode 100755 index fda374a..0000000 --- a/check-branches +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/ruby -w - -EXCLUDE_LIST = ['gem2deb', 'wheezy-transition-tracker', 'ruby-policy'] -(Dir::entries('.') - ['.', '..', '.git']).select { |f| File::directory?(f) }.each do |d| - Dir::chdir(d) do - next if EXCLUDE_LIST.include?(d) - l = ` git branch -l -a` - begin - maint = IO::read('debian/changelog').grep(/^ -- /)[0].gsub(/>.*/,'>') - rescue - maint = "COULD NOT FIND MAINTAINER" - end - ['upstream', 'pristine-tar'].each do |b| - puts "#{d}: missing #{b} #{maint}" unless l =~ /\s#{b}$/ - end - end -end diff --git a/make-mrconfig b/make-mrconfig deleted file mode 100755 index 051fc50..0000000 --- a/make-mrconfig +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/bash -set -e - -# Strongly adapted from -# http://svn.debian.org/viewsvn/pkg-ocaml-maint/trunk/projects/git-guide/d-o-m-mrconfig.sh - -function msg() { - echo "I: $1" -} - -function output() { - echo "$1" >> $OUTPUT -} - -msg "Setting up output file" -OUTPUT="$1" -if [ -z "$OUTPUT" ] ; then - OUTPUT=".mrconfig" -fi - -msg "Retrieving package list" - -# Packages hosted in Git -GIT_REPODIR="/git/pkg-ruby-extras/" -GIT_PKGS=`ssh git.debian.org "(cd $GIT_REPODIR && LC_ALL=C ls -1d *.git)" | sed '/pkg-ruby-extras.git/d; s/.git$//' | LC_ALL=C sort` - -msg "Generating mrconfig file in $OUTPUT" - -# Backup the output file if it exists -if [ -f $OUTPUT ]; then - mv $OUTPUT ${OUTPUT}\~ -fi - -# Setting up mr lib -output "[DEFAULT] -lib= - msg () { - echo \"I: \$1\" - } - git_checkout () { - git clone git+ssh://git.debian.org$GIT_REPODIR\$1.git && - cd \$1 && - { git branch --track upstream remotes/origin/upstream || true; } && - { git branch --track pristine-tar remotes/origin/pristine-tar || true; } && - { (echo \"[DEFAULT]\"; echo \"pristine-tar = True\") > .git/gbp.conf; } && - { test -z \"\$DEBFULLNAME\" || git config user.name \"\$DEBFULLNAME\" || true; } && - { test -z \"\$DEBEMAIL\" || git config user.email \"\$DEBEMAIL\" || true; } - } -" - -# Sections for Git repositories -for i in $GIT_PKGS; do - output "[$i] -checkout = git_checkout $i -skip = lazy -" -done - -for i in $GIT_PKGS; do - echo "/$i" -done > .gitignore -cat >> .gitignore <<EOF -/build-area -.mrconfig~ -.pull.list -*.dsc -*.tar.* -*.deb -*.gem -*.changes -*.build -*.upload -*.heads -EOF - -# Warn if changes have been made -if which colordiff >/dev/null; then - diff=colordiff -else - diff=diff -fi -if [ -f ${OUTPUT}\~ ] && $diff -u ${OUTPUT}\~ ${OUTPUT}; then - rm ${OUTPUT}\~ - msg "no changes" -else - msg "$OUTPUT changed!" -fi - -# Finish -msg "all done, enjoy: mr [checkout,update,...]" diff --git a/manifest b/manifest deleted file mode 100755 index cd787fa..0000000 --- a/manifest +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -set -e - -gitdirprefix="$1" -if test -d gem2deb; then - # local - gitdirprefix="*/.git" - headsprefix=refs/remotes/origin -else - # remote, on alioth - gitdirprefix="*.git" - headsprefix=refs/heads -fi - -for dir in $gitdirprefix; do - name="$dir" - name="${name%%.git}" - name="${name%%/}" - echo "$name:" - for head in $dir/$headsprefix/*; do - if test -f $head; then - headname="${head##*/}" - echo -n " $headname: " - cat $head - fi - done -done diff --git a/needs-gemspec-install b/needs-gemspec-install deleted file mode 100755 index a2be9c4..0000000 --- a/needs-gemspec-install +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env ruby -# -# Checks (locally!) for packages (git repositories) that contain a gemspec -# in some form, but don't build-depend on gem2deb (>= 0.3.0~) so that it -# gets installed for usage by rubygems-integration. -# -# See also: https://lists.debian.org/debian-ruby/2012/06/msg00097.html - -gemspecs = Dir["*/metadata.yml"] + Dir["*/*gemspec"] -repos = gemspecs.map { |spec| File.dirname spec }.sort -pkgs = repos.inject({}) { |h, v| h[v] = h[v].to_i + 1; h}.keys - -cnt = 0 -pkgs.each do |pkg| - puts "I: inspecting #{pkg}" if $DEBUG - control = File.readlines(File.join(pkg, "debian/control")).join - build_deps = control.match(/^Build-Depends.*:(.*gem2deb.*?)\n\w/m) - unless build_deps - puts "W: #{pkg} doesn't use gem2deb" - next - end - gem2deb_v = build_deps.to_s.match(/^Build-Depends.*:.*gem2deb\s+\(>= (.*?)\)/m) - unless gem2deb_v - puts "E: #{pkg} has an unversioned build-depend on gem2deb" - cnt += 1 - next - end - if gem2deb_v[1] =~ /^0\.3\./ - puts "I: #{pkg} build-depends on gem2deb (>= 0.3.x)" if $DEBUG - next - end - puts "E: #{pkg} build-depends on gem2deb (>= #{gem2deb_v[1]})" - cnt += 1 -end -puts "I: #{cnt} package#{"s" unless cnt == 1} need to be adjusted and reuploaded" diff --git a/pkg-overview b/pkg-overview deleted file mode 100755 index c749e34..0000000 --- a/pkg-overview +++ /dev/null @@ -1,175 +0,0 @@ -#!/usr/bin/ruby - -require 'pp' -require 'time' -require 'fileutils' - -class DebVersion - include Comparable - - def initialize(v) - @version = v - end - - def to_s - @version.to_s - end - - def <=>(anOther) - system("dpkg --compare-versions #{to_s} lt #{anOther.to_s}") - return -1 if $?.exitstatus == 0 - system("dpkg --compare-versions #{to_s} gt #{anOther.to_s}") - return 1 if $?.exitstatus == 0 - return 0 - end -end - -module Enumerable - def hash_merge - return Hash[*self.map(&:to_a).flatten] - end -end - -def rmadison_data(packages) - data = {} - rmadison_output = "" - packages.each_slice(100) do |slice| - rmadison_output += `rmadison #{slice.join(' ')}` - end - lines = rmadison_output.lines.map(&:strip) - - if $?.exitstatus != 0 - puts "ERROR: rmadison failed!" - exit(1) - end - rows = lines.map { |line| line.strip.sub(/^\s*/, '').split(/\s+\|\s+/) } - packages.each do |pkg| - v = rows.select { |row| row[0] == pkg && row[2] =~ /^sid\\?/ && row[3] =~ /source/} \ - .map { |row| row[1] } \ - .map { |v| v.gsub(/^[0-9]+:/,'') } \ - .map { |v| DebVersion::new(v) } \ - .max - data[pkg] = v - end - data -end - -def changelog_version(src) - changelog = File.join(src, 'debian/changelog') - return nil unless File.exists?(changelog) - header = File.readlines(changelog).first - header =~ /\((.*)\) (\w+);/ - v = $1 - v.gsub!(/^[0-9]+:/,'') unless v.nil? # strip epoch - return DebVersion::new(v) -end - -def changelog_distrib(src) - changelog = File.join(src, 'debian/changelog') - return nil unless File.exists?(changelog) - header = File.readlines(changelog).first - header =~ /\((.*)\) (\w+);/ - d = $2 - return d -end - -def tag_version(src) - res = `cd #{src} && git tag -l 2>/dev/null` - if $?.exitstatus != 0 - STDERR.puts "ERROR: #{src}: git tag -l failed." - return nil - end - alltags = {} - res.lines.reject { |l| l =~ /^upstream\// }.each do |tag| - curtag = tag - tag = tag.chomp.gsub(/^debian\//, '') - tag.gsub!(/^[0-9]+%/,'') # strip epoch - next if tag !~ /^[0-9]/ - tag = tag.gsub('_', '~') - tag = DebVersion::new(tag) - alltags[tag] = curtag - end - if alltags.empty? - return [nil, true] - else - tag = alltags.keys.max - res = `cd #{src} && git log #{alltags[tag].chomp}..master 2>/dev/null`.chomp - if res == '' - return [tag, false] - else - return [tag, true] - end - end -end - -def last_commiter(src) - res = `cd #{src} && git show master 2>/dev/null` - return 'INVALID REPO' if not $?.exitstatus == 0 - res = res.lines.find{|l| l=~/^Author: /}.chomp - return res.gsub(/.*<(.*)>.*/, '\1') -end - -def compute_status(src, cv, cd, tv, ts, av) -# p src, cv, cd, tv, ts, av - return '0 ERROR: no changelog version' if cv.nil? - return '0 ERROR: unknown distribution in changelog' if not ['UNRELEASED', 'unstable', 'experimental', 'stable'].include?(cd) - return '0 ERROR: archive version newer than changelog version' if not av.nil? and av > cv - return '0 ERROR: in Debian, but not tag' if not av.nil? and tv.nil? - return '0 ERROR: archive version newer than tagged version' if not av.nil? and not tv.nil? and av > tv - - if cd != 'UNRELEASED' - if av.nil? - if tv.nil? or cv != tv - return '2 Ready to upload (new package)' - else - return '1 Tagged, but not in archive. Waiting in NEW ?' - end - else - if av == cv and cv == tv - if ts - return '4 WiP (not UNRELEASED, but new commits)' - else - return '9 Up to date, nothing to do' - end - elsif av < cv and cv == tv - return '1 Tagged, but not in archive. Waiting in NEW ?' - elsif cv == tv and av < cv - return '2 Ready to upload' - else - return '0 Invalid case' - end - end - else - return '3 Work in progress' - end -end - -# get source packages from command line, or all available ones of none passed. -source_packages = ARGV.size > 0 ? ARGV : Dir.glob('*').select { |f| File.directory?(f) && f != 'wheezy-transition-tracker' }.sort - -# get versions from tags -tag_ver = {} -tag_status = {} -source_packages.each do |src| - tag_ver[src], tag_status[src] = tag_version(src) -end - -# get versions from changelog -changelog_ver = source_packages.map { |src| { src => changelog_version(src) } }.hash_merge -changelog_dist = source_packages.map { |src| { src => changelog_distrib(src) } }.hash_merge - -last_commit = source_packages.map { |src| { src => last_commiter(src) } }.hash_merge - -# get versions in archive -archive_ver = rmadison_data(source_packages) - -status = source_packages.map { |src| { src => compute_status(src, changelog_ver[src], changelog_dist[src], tag_ver[src], tag_status[src], archive_ver[src]) } }.hash_merge - -puts "%-27s | %15s | %15s | %15s | %s" % ['Source', 'Changelog', 'Tag', 'Archive', 'Last committer' ] -groups = source_packages.group_by { |src| status[src] } -groups.keys.sort.each do |k| - puts ("="*20) + " #{k} -- #{groups[k].length} packages " + ("="*20) - groups[k].sort.each do |src| - puts "%-27s | %15s | %15s | %15s | %s" % [src, changelog_ver[src], tag_ver[src], archive_ver[src], last_commit[src]] - end -end diff --git a/quick-update b/quick-update deleted file mode 100755 index d4a07b4..0000000 --- a/quick-update +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -e - -./make-mrconfig - -packages=$(echo */.git | sed -e 's/\/\.git//g') -list_heads=" -for package in $packages; do - ( - echo -n \"\$package \" - cat \$package/.git/refs/heads/master || awk '{ if (\$2 == \"refs/heads/master\") { print(\$1) }}' \$package/.git/info/refs - ) -done -" -remote_list_heads=$(echo "$list_heads" | sed -e 's/\/\.git/.git/g') - -echo "I: Listing remote master branches ..." -ssh git.debian.org "cd /git/pkg-ruby-extras/ && $remote_list_heads" > remote.heads - -echo "I: Listing local master branches ..." -sh -c "$list_heads" > local.heads - -rm -rf .pull.list -diff remote.heads local.heads | grep '^<' | cut -d ' ' -f 2-3 | while read package head; do - if (cd $package && git show $head >/dev/null 2>&1); then - echo "\033[01;33mW: $package needs to be pushed!\033[m" - else - echo "I: $package needs to be pulled" - echo "$package" >> .pull.list - fi -done - -if [ -e .pull.list ]; then - i=0 - n=$(cat .pull.list | wc -l) - for package in $(cat .pull.list); do - i=$(($i + 1)) - echo "I: Updating $package ($i/$n) ..." - ( - cd $package && - (test -e .git/gbp.conf || printf "[DEFAULT]\npristine-tar = True\n" > .git/gbp.conf) && - gbp pull || echo "\033[1;31;40mE: failed pulling $package\033[m" - ) - done -fi - -echo "I: Cloning new packages.." -mr checkout - diff --git a/update-mrconfig b/update-mrconfig new file mode 100755 index 0000000..051fc50 --- /dev/null +++ b/update-mrconfig @@ -0,0 +1,90 @@ +#!/bin/bash +set -e + +# Strongly adapted from +# http://svn.debian.org/viewsvn/pkg-ocaml-maint/trunk/projects/git-guide/d-o-m-mrconfig.sh + +function msg() { + echo "I: $1" +} + +function output() { + echo "$1" >> $OUTPUT +} + +msg "Setting up output file" +OUTPUT="$1" +if [ -z "$OUTPUT" ] ; then + OUTPUT=".mrconfig" +fi + +msg "Retrieving package list" + +# Packages hosted in Git +GIT_REPODIR="/git/pkg-ruby-extras/" +GIT_PKGS=`ssh git.debian.org "(cd $GIT_REPODIR && LC_ALL=C ls -1d *.git)" | sed '/pkg-ruby-extras.git/d; s/.git$//' | LC_ALL=C sort` + +msg "Generating mrconfig file in $OUTPUT" + +# Backup the output file if it exists +if [ -f $OUTPUT ]; then + mv $OUTPUT ${OUTPUT}\~ +fi + +# Setting up mr lib +output "[DEFAULT] +lib= + msg () { + echo \"I: \$1\" + } + git_checkout () { + git clone git+ssh://git.debian.org$GIT_REPODIR\$1.git && + cd \$1 && + { git branch --track upstream remotes/origin/upstream || true; } && + { git branch --track pristine-tar remotes/origin/pristine-tar || true; } && + { (echo \"[DEFAULT]\"; echo \"pristine-tar = True\") > .git/gbp.conf; } && + { test -z \"\$DEBFULLNAME\" || git config user.name \"\$DEBFULLNAME\" || true; } && + { test -z \"\$DEBEMAIL\" || git config user.email \"\$DEBEMAIL\" || true; } + } +" + +# Sections for Git repositories +for i in $GIT_PKGS; do + output "[$i] +checkout = git_checkout $i +skip = lazy +" +done + +for i in $GIT_PKGS; do + echo "/$i" +done > .gitignore +cat >> .gitignore <<EOF +/build-area +.mrconfig~ +.pull.list +*.dsc +*.tar.* +*.deb +*.gem +*.changes +*.build +*.upload +*.heads +EOF + +# Warn if changes have been made +if which colordiff >/dev/null; then + diff=colordiff +else + diff=diff +fi +if [ -f ${OUTPUT}\~ ] && $diff -u ${OUTPUT}\~ ${OUTPUT}; then + rm ${OUTPUT}\~ + msg "no changes" +else + msg "$OUTPUT changed!" +fi + +# Finish +msg "all done, enjoy: mr [checkout,update,...]" -- 2.7.0