diff -Nru gem2deb-0.7.6/bin/dh_ruby_fixdepends gem2deb-0.10/bin/dh_ruby_fixdepends --- gem2deb-0.7.6/bin/dh_ruby_fixdepends 2014-03-02 23:44:16.000000000 +0000 +++ gem2deb-0.10/bin/dh_ruby_fixdepends 2014-08-13 11:50:51.000000000 +0000 @@ -27,17 +27,20 @@ if l =~ /^shlibs:Depends=/ deps = l.chomp.split('=', 2)[1].split(', ') std_deps = [] + libruby_deps = [] ruby_deps = [] deps.each do |dep| - if SUPPORTED_RUBY_SHARED_LIBRARIES.include?(dep.split(' ')[0]) - ruby_deps << dep + if SUPPORTED_RUBY_SHARED_LIBRARIES.include?(dep.split.first) + libruby_deps << dep + rdep = RubyDebianDev.min_ruby_dependency_for(dep.split.first) + if rdep + ruby_deps << rdep + end else std_deps << dep end end - # p ruby_deps - # p std_deps - newdeps = (std_deps + [(ruby_deps.join(' | '))]).join(', ') + newdeps = (std_deps + [libruby_deps.join(' | ')] + [ruby_deps.join(' | ')]).join(', ') fd.puts "shlibs:Depends=#{newdeps}" else fd.puts l diff -Nru gem2deb-0.7.6/bin/gem2deb-test-runner gem2deb-0.10/bin/gem2deb-test-runner --- gem2deb-0.7.6/bin/gem2deb-test-runner 1970-01-01 00:00:00.000000000 +0000 +++ gem2deb-0.10/bin/gem2deb-test-runner 2014-09-02 23:09:18.000000000 +0000 @@ -0,0 +1,78 @@ +#!/usr/bin/ruby + +# Copyright © 2011, Lucas Nussbaum +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +require 'rbconfig' +require 'fileutils' + +require 'gem2deb/test_runner' + +if $PROGRAM_NAME == __FILE__ + autopkgtest = false + + if ARGV.length == 1 && ARGV.first == '--autopkgtest' + autopkgtest = true + elsif ARGV.length != 0 + puts "usage: #{File.basename($PROGRAM_NAME)} [--autopkgtest]" + exit(1) + end + + runner = Gem2Deb::TestRunner.detect! + runner.autopkgtest = autopkgtest + runner.run_tests +end + +__END__ +=head1 NAME + +gem2deb-test-runner - runs test suite contained in Debian Ruby packages + +=head1 SYNOPSIS + +B [B<--autopkgtest>] + +=head1 DESCRIPTION + +B runs the tests shipped inside a source Debian Ruby +package. The way the tests are run is configured in one of the three files: +I, I, +I. See the B section in B(1) for details. + +If called without argument in the root of the source package after the package +is built and installed under debian/I, then the tests will be run +using the files of the package installed under debian/I. This call +is part of the B(1) sequence when building a Ruby package with gem2deb. + +If the option B<--autopkgtest> is used, the package needs to be installed on +the system. B will not try to load files under debian/ and +will move away temporarily the lib/ and ext/ directory to ensure the test +suite is run against the installed package. This is used in the context of +automatic as-installed package testing, through the autopkgtest framework. + +=head1 OPTIONS + +=over + +=item B<--autopkgtest> + +Run the tests against the installed package for automatic as-installed package +testing. Useful in conjonction with B(1). + +=back + +=head1 SEE ALSO + +L>(1), L>(1) diff -Nru gem2deb-0.7.6/debian/changelog gem2deb-0.10/debian/changelog --- gem2deb-0.7.6/debian/changelog 2014-07-30 14:14:29.000000000 +0000 +++ gem2deb-0.10/debian/changelog 2014-09-15 12:41:45.000000000 +0000 @@ -1,3 +1,59 @@ +gem2deb (0.10) unstable; urgency=medium + + * gem2deb-test-runner: add '.' to $LOAD_PATH with --autopkgtest + * dh-make-ruby won't create debian/tests/control anymore since autopkgtest + will now auto-detect Ruby packages and assume an implicit tests + definition. debian/tests/control.ex will be created instead, with comments + explaining to either modify it and rename to control, or delete it. + * dh-make-ruby: when test/ or spec/ exists, create debian/ruby-tests.rake + with the appropriate rake invocation to run the tests, instead of being + insecure and creating files all commented out. + * install 'gem2deb/rake/testtask.rb' to gem2deb-test-runner instead of + gem2deb + * dh-make-ruby: generate uncommented Vcs-* headers in debian/control + * dh-make-ruby: remove version qualifier from build-dependency on gem2deb to + remove friction when backporting. + + -- Antonio Terceiro Mon, 08 Sep 2014 14:07:02 -0300 + +gem2deb (0.9.1) unstable; urgency=medium + + * gem2deb-test-runner now Breaks/Replaces gem2deb < 0.9. (Closes: #759431) + + -- Cédric Boutillier Wed, 27 Aug 2014 14:06:00 +0200 + +gem2deb (0.9.0) unstable; urgency=medium + + * Provide support for DEP-8 autopkgtest (Closes: #637917) + + split out a gem2deb-test-runner binary package + + add a Testsuite: autopkgtest field to template debian/control + + add templates for debian/tests files to propose a syntax/load test + (Closes: #645357) and run the test suite of the package + * Make dh-make-ruby idempotent + * Refactor test_suite creation in dh_make_ruby + + in particular, use the rake method by default when a spec/ directory is + present (Closes: #702578) + * Remove alternative dependency on ruby-interpreter (Closes: #758806) + * Verify checksums included in the gems and remove checksums.yaml.gz upon + conversion of the gems to tarballs (Closes: #725348) + + -- Cédric Boutillier Tue, 26 Aug 2014 09:12:32 +0200 + +gem2deb (0.8.0) unstable; urgency=medium + + [Antonio Terceiro] + * dh_ruby_fixdepends: inject minimum Ruby dependency provided by + ruby-all-dev in the shared library dependencies. For that, bump dependency + on ruby-all-dev to (>= 1:2.1.0.3~) + * test/test_helper.rb: add test/bin to $PATH during tests + * test/bin/wnpp-check: mock the actual wnpp-check during tests to avoid + hitting the network + + [Cédric Boutillier] + * Update sample gems with non obsolete rake rules + + -- Cédric Boutillier Mon, 11 Aug 2014 14:22:55 +0200 + gem2deb (0.7.6) unstable; urgency=medium [ Antonio Terceiro ] diff -Nru gem2deb-0.7.6/debian/control gem2deb-0.10/debian/control --- gem2deb-0.7.6/debian/control 2014-07-30 14:13:53.000000000 +0000 +++ gem2deb-0.10/debian/control 2014-09-08 19:50:26.000000000 +0000 @@ -7,7 +7,16 @@ Vincent Fourmond , Gunnar Wolf , Cédric Boutillier -Build-Depends: debhelper (>= 7.0.50~), rake, ruby-test-unit, ruby-shoulda-context, ruby-mocha (>= 0.14.0), ruby-all-dev (>= 1:1.9.3.4), devscripts, ruby-setup, lintian +Build-Depends: debhelper (>= 7.0.50~), + devscripts, + lintian, + rake, + ruby-all-dev (>= 1:2.1.0.3~), + ruby-mocha (>= 0.14.0), + ruby-rspec, + ruby-setup, + ruby-shoulda-context, + ruby-test-unit Standards-Version: 3.9.5 Vcs-Git: git://anonscm.debian.org/pkg-ruby-extras/gem2deb.git Vcs-Browser: http://anonscm.debian.org/gitweb?p=pkg-ruby-extras/gem2deb.git;a=summary @@ -15,10 +24,29 @@ Package: gem2deb Architecture: all -Depends: ruby | ruby-interpreter, ruby-all-dev (>= 1:1.9.3.4), build-essential, devscripts, debhelper (>= 7.0.50~), ${perl:Depends}, ${shlibs:Depends}, ${misc:Depends} +Depends: build-essential, + debhelper (>= 7.0.50~), + devscripts, + gem2deb-test-runner (= ${source:Version}), + ruby, + ruby-all-dev (>= 1:2.1.0.3~), + ${misc:Depends}, + ${perl:Depends}, + ${shlibs:Depends} Description: Debian Ruby packaging suite gem2deb is a set of tools to create Debian package from ruby software distributed with Rubygems. gem2tgz converts the .gem file to a tar archive, then dh-make-ruby creates a Debian source package from that archive. That Debian package uses the included Debhelper7 helper, dh_ruby, to generate a proper Debian package. Both pure-ruby and native packages are supported. + +Package: gem2deb-test-runner +Architecture: all +Depends: ruby | ruby-interpreter, ${shlibs:Depends}, ${misc:Depends} +Breaks: gem2deb (<< 0.9~) +Replaces: gem2deb (<< 0.9~) +Description: Debian Ruby packaging suite - tool to run tests + gem2deb is a set of tools to create Debian package from ruby software + distributed with Rubygems. + . + This package contains the tool to run the tests. diff -Nru gem2deb-0.7.6/debian/gem2deb.install gem2deb-0.10/debian/gem2deb.install --- gem2deb-0.7.6/debian/gem2deb.install 2014-07-29 20:31:31.000000000 +0000 +++ gem2deb-0.10/debian/gem2deb.install 2014-09-02 23:09:18.000000000 +0000 @@ -1,3 +1,4 @@ bin/* /usr/bin/ -lib/* /usr/lib/ruby/vendor_ruby/ debhelper7/* /usr/share/perl5/ + +lib/* /usr/lib/ruby/vendor_ruby/ diff -Nru gem2deb-0.7.6/debian/gem2deb.manpages gem2deb-0.10/debian/gem2deb.manpages --- gem2deb-0.7.6/debian/gem2deb.manpages 2013-07-12 14:29:33.000000000 +0000 +++ gem2deb-0.10/debian/gem2deb.manpages 2014-09-02 23:09:18.000000000 +0000 @@ -1 +1 @@ -man/* +man/gem2deb/* diff -Nru gem2deb-0.7.6/debian/gem2deb-test-runner.install gem2deb-0.10/debian/gem2deb-test-runner.install --- gem2deb-0.7.6/debian/gem2deb-test-runner.install 1970-01-01 00:00:00.000000000 +0000 +++ gem2deb-0.10/debian/gem2deb-test-runner.install 2014-09-08 20:21:18.000000000 +0000 @@ -0,0 +1,3 @@ +bin/gem2deb-test-runner /usr/bin/ +lib/gem2deb/test_runner.rb /usr/lib/ruby/vendor_ruby/gem2deb +lib/gem2deb/rake/testtask.rb /usr/lib/ruby/vendor_ruby/gem2deb/rake diff -Nru gem2deb-0.7.6/debian/gem2deb-test-runner.manpages gem2deb-0.10/debian/gem2deb-test-runner.manpages --- gem2deb-0.7.6/debian/gem2deb-test-runner.manpages 1970-01-01 00:00:00.000000000 +0000 +++ gem2deb-0.10/debian/gem2deb-test-runner.manpages 2014-09-02 23:09:18.000000000 +0000 @@ -0,0 +1 @@ +man/gem2deb-test-runner/* diff -Nru gem2deb-0.7.6/debian/rules gem2deb-0.10/debian/rules --- gem2deb-0.7.6/debian/rules 2014-03-02 23:44:16.000000000 +0000 +++ gem2deb-0.10/debian/rules 2014-09-08 20:21:18.000000000 +0000 @@ -6,8 +6,13 @@ ruby_versions := $(shell ruby -Ilib -rgem2deb -e 'puts Gem2Deb::SUPPORTED_RUBY_VERSIONS.keys.sort.join(" ")') override_dh_auto_build: $(ruby_versions) - mkdir -p man - for i in bin/*; do pod2man -c "" -r "" $$i > man/$$(basename $$i).1; done + mkdir -p man/gem2deb man/gem2deb-test-runner + for i in bin/*; do pod2man -c "" -r "" $$i > man/gem2deb/$$(basename $$i).1; done + mv man/gem2deb/gem2deb-test-runner.1 man/gem2deb-test-runner + +override_dh_install: + dh_install -pgem2deb -Xgem2deb-test-runner -Xtest_runner.rb -Xtesttask.rb + dh_install -pgem2deb-test-runner .PHONY: $(ruby_versions) diff -Nru gem2deb-0.7.6/lib/gem2deb/dh_make_ruby/template/debian/control gem2deb-0.10/lib/gem2deb/dh_make_ruby/template/debian/control --- gem2deb-0.7.6/lib/gem2deb/dh_make_ruby/template/debian/control 2014-03-02 23:44:16.000000000 +0000 +++ gem2deb-0.10/lib/gem2deb/dh_make_ruby/template/debian/control 2014-09-10 12:59:57.000000000 +0000 @@ -3,11 +3,12 @@ Priority: optional Maintainer: Debian Ruby Extras Maintainers Uploaders: <%= maintainer['DEBFULLNAME'] %> <<%= maintainer['DEBEMAIL'] %>> -Build-Depends: debhelper (>= 7.0.50~), gem2deb (>= <%= Gem2Deb::VERSION %>~) +Build-Depends: debhelper (>= 7.0.50~), gem2deb<%= extra_build_dependencies.map { |d| ", #{d}" }.join %> Standards-Version: 3.9.5 -#Vcs-Git: git://anonscm.debian.org/pkg-ruby-extras/<%= source_package_name %>.git -#Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-ruby-extras/<%= source_package_name %>.git;a=summary +Vcs-Git: git://anonscm.debian.org/pkg-ruby-extras/<%= source_package_name %>.git +Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-ruby-extras/<%= source_package_name %>.git;a=summary Homepage: <%= homepage ? homepage : 'FIXME'%> +Testsuite: autopkgtest XS-Ruby-Versions: <%= ruby_versions %> Package: <%= binary_package.name %> diff -Nru gem2deb-0.7.6/lib/gem2deb/dh_make_ruby/template/debian/tests/control.ex gem2deb-0.10/lib/gem2deb/dh_make_ruby/template/debian/tests/control.ex --- gem2deb-0.7.6/lib/gem2deb/dh_make_ruby/template/debian/tests/control.ex 1970-01-01 00:00:00.000000000 +0000 +++ gem2deb-0.10/lib/gem2deb/dh_make_ruby/template/debian/tests/control.ex 2014-09-08 16:58:38.000000000 +0000 @@ -0,0 +1,13 @@ +# AUTOGENERATED FILE +# +# As of autopkgtest 3.5, Ruby packages that use gem2deb are automatically +# detected, and if debian/tests/control does not exist the contents below will +# be assumed (with the exception of gem2deb being filtered out from +# @builddeps@): + +Test-Command: gem2deb-test-runner --autopkgtest 2>&1 +Depends: @, @builddeps@, gem2deb-test-runner + +# if you would need to change something to the above, to that and rename this +# file to `control`. Otherwise, you should probably delete this file +# (recommended). diff -Nru gem2deb-0.7.6/lib/gem2deb/dh_make_ruby.rb gem2deb-0.10/lib/gem2deb/dh_make_ruby.rb --- gem2deb-0.7.6/lib/gem2deb/dh_make_ruby.rb 2014-07-30 12:41:15.000000000 +0000 +++ gem2deb-0.10/lib/gem2deb/dh_make_ruby.rb 2014-09-08 20:14:01.000000000 +0000 @@ -18,6 +18,7 @@ require 'gem2deb' require 'yaml' require 'gem2deb/metadata' +require 'gem2deb/test_runner' require 'rubygems' require 'fileutils' require 'erb' @@ -57,6 +58,8 @@ attr_accessor :do_wnpp_check + attr_accessor :extra_build_dependencies + def initialize(input, options = {}) initialize_from_options(options) if File.directory?(input) @@ -64,6 +67,7 @@ else initialize_from_tarball(input) end + @extra_build_dependencies = [] end def initialize_from_options(options) @@ -140,9 +144,10 @@ def build_in_directory(directory) Dir.chdir(directory) do read_upstream_source_info - create_debian_boilerplates + FileUtils.mkdir_p('debian') other_files test_suite + create_debian_boilerplates end end @@ -174,7 +179,7 @@ end def create_orig_tarball - if source_package_name != orig_tarball_name && !File.exists?(orig_tarball_name) + if source_package_name != orig_tarball_name && !File.exist?(orig_tarball_name) run('ln', '-s', source_tarball_name, orig_tarball_name) end end @@ -184,7 +189,7 @@ if !File.directory?(gem_dirname) raise "Extracting did not create #{gem_dirname} directory." end - if gem_dirname != source_dirname && !File.exists?(source_dirname) + if gem_dirname != source_dirname && !File.exist?(source_dirname) FileUtils.mv gem_dirname, source_dirname end end @@ -201,16 +206,22 @@ end end + def write_if_missing(filename) + unless File.exist? filename + File.open(filename, 'w') { |f| yield f } + end + end + def create_debian_boilerplates FileUtils.mkdir_p('debian') - unless File.exists?('debian/changelog') + unless File.exist?('debian/changelog') run('dch', '--create', '--empty', '--package', source_package_name, '--newversion', "#{gem_version}-1", "Initial release (Closes: #{itp_bug})") end templates.each do |template| FileUtils.mkdir_p(template.directory) - File.open(template.filename, 'w') do |f| + write_if_missing(template.filename) do |f| f.puts ERB.new(template.data, nil, '<>').result(binding) end end @@ -289,30 +300,58 @@ end def test_suite + if !Gem2Deb::TestRunner.detect_real_runner + test_suite_rspec or test_suite_yaml or test_suite_rb + end + end + + def test_suite_rspec + if File::directory?("spec") + extra_build_dependencies << 'ruby-rspec' << 'rake' + write_if_missing("debian/ruby-tests.rake") do |f| + f.puts <<-EOF +require 'rspec/core/rake_task' + +RSpec::Core::RakeTask.new(:spec) do |spec| + spec.pattern = './spec/*_spec.rb' +end + +task :default => :spec + EOF + end + true + else + false + end + end + + + def test_suite_yaml if !metadata.test_files.empty? - File::open("debian/ruby-test-files.yaml", 'w') do |f| + write_if_missing("debian/ruby-test-files.yaml") do |f| YAML::dump(metadata.test_files, f) end + true else - if File::directory?("test") or File::directory?("spec") - File::open("debian/ruby-tests.rb", 'w') do |f| - f.puts <<-EOF -# FIXME -# there's a spec/ or a test/ directory in the upstream source, but -# no test suite was defined in the Gem specification. It would be -# a good idea to define it here so the package gets tested at build time. -# Examples: -# $: << 'lib' << '.' -# Dir['{spec,test}/**/*.rb'].each { |f| require f } -# -# require 'test/ts_foo.rb' -# -# require 'rbconfig' -# ruby = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name']) -# exec("\#{ruby} -I. test/runtests.rb") - EOF - end + false + end + end + + def test_suite_rb + if File::directory?("test") + extra_build_dependencies << 'rake' + write_if_missing("debian/ruby-tests.rake") do |f| + f.puts <<-EOF +require 'gem2deb/rake/testtask' + +Gem2Deb::Rake::TestTask.new do |t| + t.test_files = FileList['test/*_test.rb'] +end + EOF end + true + else + false end end @@ -335,7 +374,7 @@ docs << "# #{r}\n" end if docs != "" - File::open("debian/#{source_package_name}.docs", 'w') do |f| + write_if_missing("debian/#{source_package_name}.docs") do |f| f.puts docs end end @@ -352,7 +391,7 @@ end end if examples != "" - File::open("debian/#{source_package_name}.examples", 'w') do |f| + write_if_missing("debian/#{source_package_name}.examples") do |f| f.puts examples end end @@ -374,7 +413,7 @@ EOF end if installs != "" - File::open("debian/#{source_package_name}.install", 'w') do |f| + write_if_missing("debian/#{source_package_name}.install") do |f| f.puts installs end end @@ -384,7 +423,7 @@ manpages = Dir.glob("man/**/*.[1-8]") manpages_header = "# FIXME: man/ dir found in source. Consider installing manpages" - File::open("debian/#{source_package_name}.manpages", 'w') do |f| + write_if_missing("debian/#{source_package_name}.manpages") do |f| f.puts manpages_header manpages.each do |m| f.puts "# " + m diff -Nru gem2deb-0.7.6/lib/gem2deb/dh_ruby.rb gem2deb-0.10/lib/gem2deb/dh_ruby.rb --- gem2deb-0.7.6/lib/gem2deb/dh_ruby.rb 2014-07-29 20:31:31.000000000 +0000 +++ gem2deb-0.10/lib/gem2deb/dh_ruby.rb 2014-09-02 23:09:18.000000000 +0000 @@ -58,7 +58,11 @@ # puts " Leaving dh_ruby --test" if @verbose end - TEST_RUNNER = File.expand_path(File.join(File.dirname(__FILE__),'test_runner.rb')) + if File.exist? File.expand_path(File.join(File.dirname(__FILE__),'../../bin','gem2deb-test-runner')) + TEST_RUNNER = File.expand_path(File.join(File.dirname(__FILE__),'../../bin','gem2deb-test-runner')) + else + TEST_RUNNER = "/usr/bin/gem2deb-test-runner" + end def install(argv) puts " Entering dh_ruby --install" if @verbose diff -Nru gem2deb-0.7.6/lib/gem2deb/extension_builder.rb gem2deb-0.10/lib/gem2deb/extension_builder.rb --- gem2deb-0.7.6/lib/gem2deb/extension_builder.rb 2014-06-03 14:41:05.000000000 +0000 +++ gem2deb-0.10/lib/gem2deb/extension_builder.rb 2014-09-02 23:09:18.000000000 +0000 @@ -34,7 +34,7 @@ def clean Dir.chdir(directory) do - if File.exists?('Makefile') + if File.exist?('Makefile') run 'make clean' end end @@ -78,14 +78,14 @@ # handle mkmf.log being installed at the extension directory by # Rubygems on Ruby 2.1+ mkmf_log = File.join(target, 'mkmf.log') - if File.exists?(mkmf_log) + if File.exist?(mkmf_log) FileUtils::Verbose.rm_f mkmf_log end rescue Exception => e target = File.expand_path(File.join(destdir, RbConfig::CONFIG['vendorarchdir'])) mkmf_log = File.join(target, 'mkmf.log') - if File.exists?(mkmf_log) + if File.exist?(mkmf_log) puts '~~~~~~~~~~~~~~~~~~~~~ ↓ mkmf.log ~~~~~~~~~~~~~~~~~~~~~' system('cat', 'mkmf.log') puts '~~~~~~~~~~~~~~~~~~~~~ ↑ mkmf.log ~~~~~~~~~~~~~~~~~~~~~' diff -Nru gem2deb-0.7.6/lib/gem2deb/gem2tgz.rb gem2deb-0.10/lib/gem2deb/gem2tgz.rb --- gem2deb-0.7.6/lib/gem2deb/gem2tgz.rb 2014-03-02 23:44:16.000000000 +0000 +++ gem2deb-0.10/lib/gem2deb/gem2tgz.rb 2014-09-02 23:09:18.000000000 +0000 @@ -15,6 +15,9 @@ require 'fileutils' require 'tmpdir' +require 'digest' +require 'yaml' +require 'zlib' require 'gem2deb' include Gem2Deb @@ -79,6 +82,7 @@ def extract_gem_contents Dir.chdir(@target_dir) do run('tar', 'xfm', gem_full_path) + verify_and_strip_checksums if File.exist?('checksums.yaml.gz') run 'tar xzfm data.tar.gz' FileUtils.rm_f('data.tar.gz') run "zcat metadata.gz > metadata.yml" @@ -102,5 +106,29 @@ FileUtils.rm_rf(@tmp_dir) end + def verify_and_strip_checksums + checksums = read_checksums + [Digest::SHA1, Digest::SHA512].each do |digest| + hash_name = digest.name.sub(/^Digest::/,'') + ["data.tar.gz", "metadata.gz"].each do |f| + unless correct_checksum?(digest, f, checksums[hash_name][f]) + puts "E: (#{gem}) the #{hash_name} checksum for #{f} is inconsistent with the one recorded in checksums.yaml.gz" + exit(1) + end + end + end + FileUtils.rm_f('checksums.yaml.gz') + end + + def read_checksums + Zlib::GzipReader.open('checksums.yaml.gz') do |checksums_file| + YAML.load(checksums_file.read) + end + end + + def correct_checksum?(digest, f, checksum) + digest.file(f).hexdigest == checksum + end + end end diff -Nru gem2deb-0.7.6/lib/gem2deb/installer.rb gem2deb-0.10/lib/gem2deb/installer.rb --- gem2deb-0.7.6/lib/gem2deb/installer.rb 2014-05-29 20:32:54.000000000 +0000 +++ gem2deb-0.10/lib/gem2deb/installer.rb 2014-09-02 23:09:18.000000000 +0000 @@ -116,7 +116,7 @@ if metadata.has_native_extensions? metadata.native_extensions.each do |extension| extension_dir = File.dirname(extension) - if File.exists?(File.join(extension_dir, 'Makefile')) + if File.exist?(File.join(extension_dir, 'Makefile')) puts "Running 'make distclean || make clean' in #{extension_dir}..." Dir.chdir(extension_dir) do run 'make distclean || make clean' diff -Nru gem2deb-0.7.6/lib/gem2deb/metadata.rb gem2deb-0.10/lib/gem2deb/metadata.rb --- gem2deb-0.7.6/lib/gem2deb/metadata.rb 2014-05-29 20:32:54.000000000 +0000 +++ gem2deb-0.10/lib/gem2deb/metadata.rb 2014-09-02 23:09:18.000000000 +0000 @@ -81,7 +81,7 @@ protected def load_gemspec - if File.exists?('metadata.yml') + if File.exist?('metadata.yml') @gemspec = YAML.load_file('metadata.yml') elsif ENV['DH_RUBY_GEMSPEC'] @gemspec = Gem::Specification.load(ENV['DH_RUBY_GEMSPEC']) diff -Nru gem2deb-0.7.6/lib/gem2deb/test_runner.rb gem2deb-0.10/lib/gem2deb/test_runner.rb --- gem2deb-0.7.6/lib/gem2deb/test_runner.rb 2014-07-29 20:31:31.000000000 +0000 +++ gem2deb-0.10/lib/gem2deb/test_runner.rb 2014-09-02 23:10:51.000000000 +0000 @@ -23,13 +23,9 @@ attr_accessor :autopkgtest - def initialize - self.autopkgtest = autopkgtest - end - def load_path if self.autopkgtest - return [] + return ['.'] end # We should only use installation paths for the current Ruby @@ -61,8 +57,13 @@ nil end + # override in subclasses if needed + def real_runner? + true + end + def activate? - required_file && File.exists?(required_file) + required_file && File.exist?(required_file) end def run_ruby(*cmd) @@ -87,13 +88,13 @@ end def move_away(dir) - if File.exists?(dir) + if File.exist?(dir) mv dir, '.gem2deb.' + dir end end def restore(dir) - if File.exists?('.gem2deb.' + dir) + if File.exist?('.gem2deb.' + dir) mv '.gem2deb.' + dir, dir end end @@ -108,7 +109,15 @@ def self.detect subclasses.map(&:new).find do |runner| runner.activate? - end || bail("E: this tool must be run from inside a Debian source package.") + end + end + def self.detect! + detect || bail("E: this tool must be run from inside a Debian source package.") + end + def self.detect_real_runner + subclasses.map(&:new).find do |runner| + runner.real_runner? && runner.activate? + end end def self.bail(msg) puts msg @@ -168,24 +177,11 @@ def run_tests puts "Running tests for #{rubyver}: found no way to run a test suite!" end + def real_runner? + false + end end end end - -if $PROGRAM_NAME == __FILE__ - autopkgtest = false - - if ARGV.length == 1 && ARGV.first == '--autopkgtest' - autopkgtest = true - elsif ARGV.length != 0 - puts "usage: #{File.basename($PROGRAM_NAME)} [--autopkgtest]" - exit(1) - end - - runner = Gem2Deb::TestRunner.detect - runner.autopkgtest = autopkgtest - runner.run_tests -end - diff -Nru gem2deb-0.7.6/lib/gem2deb/version.rb gem2deb-0.10/lib/gem2deb/version.rb --- gem2deb-0.7.6/lib/gem2deb/version.rb 2014-06-03 14:41:05.000000000 +0000 +++ gem2deb-0.10/lib/gem2deb/version.rb 2014-09-08 20:28:29.000000000 +0000 @@ -1,3 +1,3 @@ module Gem2Deb - VERSION = '0.7.6' + VERSION = '0.10' end diff -Nru gem2deb-0.7.6/lib/gem2deb.rb gem2deb-0.10/lib/gem2deb.rb --- gem2deb-0.7.6/lib/gem2deb.rb 2014-05-29 20:32:54.000000000 +0000 +++ gem2deb-0.10/lib/gem2deb.rb 2014-09-02 23:09:18.000000000 +0000 @@ -28,7 +28,7 @@ SUPPORTED_RUBY_VERSIONS.select! do |version, binary| # To help backporters without having to also backport the interpreters. - File.exists?(binary) + File.exist?(binary) end RUBY_SHEBANG_CALL = '/usr/bin/ruby' diff -Nru gem2deb-0.7.6/Rakefile gem2deb-0.10/Rakefile --- gem2deb-0.7.6/Rakefile 2014-03-02 23:44:16.000000000 +0000 +++ gem2deb-0.10/Rakefile 2014-09-08 18:04:32.000000000 +0000 @@ -43,7 +43,7 @@ date = `date --iso=seconds |sed 's/+.*//' |sed 's/[-T:]//g'`.chomp sh "sed -i '1 s/)/~git#{date})/' debian/changelog" sh 'ls debian/changelog.git' - sh 'dpkg-buildpackage -us -uc' + sh 'DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -us -uc' end desc 'Build and install a git snapshot' diff -Nru gem2deb-0.7.6/test/bin/wnpp-check gem2deb-0.10/test/bin/wnpp-check --- gem2deb-0.7.6/test/bin/wnpp-check 1970-01-01 00:00:00.000000000 +0000 +++ gem2deb-0.10/test/bin/wnpp-check 2014-08-13 11:50:51.000000000 +0000 @@ -0,0 +1,3 @@ +#!/bin/sh + +true diff -Nru gem2deb-0.7.6/test/integration/dh_ruby_fixdepends_test.rb gem2deb-0.10/test/integration/dh_ruby_fixdepends_test.rb --- gem2deb-0.7.6/test/integration/dh_ruby_fixdepends_test.rb 1970-01-01 00:00:00.000000000 +0000 +++ gem2deb-0.10/test/integration/dh_ruby_fixdepends_test.rb 2014-08-13 11:50:51.000000000 +0000 @@ -0,0 +1,45 @@ +require 'test_helper' + +class DhRubyFixDependsTest < Gem2DebTestCase + + should 'insert ruby dependency' do + deps = prepare('foo') do + run_command('dh_ruby_fixdepends') + + File.readlines("debian/foo.substvars").find { |l| l =~ /^shlibs:Depends=/ }.strip.sub('shlibs:Depends=', '').split(/,\s*/) + end + + Gem2Deb::SUPPORTED_RUBY_SHARED_LIBRARIES.each do |shlib| + assert deps.any? { |dep| dep.split(/\s*\|\s*/).include?(shlib) }, "#{deps.inspect} expected to include '#{shlib.inspect} (>= something)'" + end + assert deps.any? { |dep| dep =~ /ruby \(>= [^)]*\)/ }, "#{deps.inspect} expected to include 'ruby (>= something)'" + end + + def prepare(package) + pkgdir = File.join(tmpdir, package) + FileUtils.mkdir(pkgdir) + Dir.chdir(pkgdir) do + FileUtils.mkdir 'debian' + + File.open('debian/control', 'w') do |control| + control.puts("Source: #{package}") + control.puts('Maintainer: The Maintainer ') + control.puts('XS-Ruby-Versions: all') + control.puts + control.puts("Package: #{package}") + control.puts('Architecture: any') + control.puts('Depends: ${shlibs:Depends}, ruby | ruby-interpreter') + control.puts('Description: example package') + control.puts(' Just for testing') + end + + File.open("debian/#{package}.substvars", 'w') do |substvars| + substvars.puts('shlibs:Depends=' + Gem2Deb::SUPPORTED_RUBY_SHARED_LIBRARIES.join(', ')) + end + + yield + end + end + +end + diff -Nru gem2deb-0.7.6/test/integration/gem2deb_test.rb gem2deb-0.10/test/integration/gem2deb_test.rb --- gem2deb-0.7.6/test/integration/gem2deb_test.rb 2014-05-29 20:32:54.000000000 +0000 +++ gem2deb-0.10/test/integration/gem2deb_test.rb 2014-08-13 11:50:51.000000000 +0000 @@ -33,7 +33,7 @@ yield(dir) puts "Building #{directory} ..." Dir.chdir(dir) do - run_command('fakeroot debian/rules install') + run_command('fakeroot debian/rules binary') end end @@ -72,6 +72,13 @@ should 'support native extensions' do assert Dir.glob("#{dir}/debian/ruby-baz/**/baz.so").size > 0, 'baz.so not found!!!' end + + should 'inject dependency on ruby (>= something)' do + deps = File.readlines("#{dir}/debian/ruby-baz/DEBIAN/control").find do |line| + line =~ /^Depends:\s*/ + end.sub(/^Depends:\s*/, '').split(/\s*,\s*/) + assert deps.any? { |dep| dep =~ /ruby \(>= [^)]+\)/}, "#{deps.inspect} expected to include 'ruby (>= something)'" + end end end Binary files /tmp/FDym8WFw8L/gem2deb-0.7.6/test/sample/Fancy_Package/pkg/Fancy_Package-0.0.1.gem and /tmp/nOAhYSDn4N/gem2deb-0.10/test/sample/Fancy_Package/pkg/Fancy_Package-0.0.1.gem differ diff -Nru gem2deb-0.7.6/test/sample/Fancy_Package/Rakefile gem2deb-0.10/test/sample/Fancy_Package/Rakefile --- gem2deb-0.7.6/test/sample/Fancy_Package/Rakefile 2013-07-12 14:29:33.000000000 +0000 +++ gem2deb-0.10/test/sample/Fancy_Package/Rakefile 2014-08-12 01:39:38.000000000 +0000 @@ -1,5 +1,4 @@ -require 'rubygems' -require 'rake/gempackagetask' +require 'rubygems/package_task' spec = Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY @@ -8,6 +7,10 @@ s.version = '0.0.1' s.requirements << 'none' s.require_path = 'lib' + s.author = 'Debian Ruby Extras Maintainers' + s.email = 'pkg-ruby-extras-maintainers@lists.alioth.debian.org' + s.homepage = 'https://wiki.debian.org/Teams/Ruby' + s.license = 'GPL-3+' s.files = Dir.glob('lib/**') s.description = < @@ -22,13 +22,13 @@ X-DhRuby-Root: bar Architecture: all XB-Ruby-Versions: ${ruby:Versions} -Depends: ${shlibs:Depends}, ${misc:Depends}, ruby | ruby-interpreter +Depends: ${misc:Depends}, ruby | ruby-interpreter Description: FIXME Package: ruby-baz X-DhRuby-Root: baz -Architecture: all +Architecture: any XB-Ruby-Versions: ${ruby:Versions} Depends: ${shlibs:Depends}, ${misc:Depends}, ruby | ruby-interpreter Description: FIXME Binary files /tmp/FDym8WFw8L/gem2deb-0.7.6/test/sample/simpleextension/pkg/simpleextension-1.2.3.gem and /tmp/nOAhYSDn4N/gem2deb-0.10/test/sample/simpleextension/pkg/simpleextension-1.2.3.gem differ diff -Nru gem2deb-0.7.6/test/sample/simpleextension/Rakefile gem2deb-0.10/test/sample/simpleextension/Rakefile --- gem2deb-0.7.6/test/sample/simpleextension/Rakefile 2013-07-12 14:29:34.000000000 +0000 +++ gem2deb-0.10/test/sample/simpleextension/Rakefile 2014-08-12 01:39:38.000000000 +0000 @@ -1,5 +1,4 @@ -require 'rubygems' -require 'rake/gempackagetask' +require 'rubygems/package_task' spec = Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY @@ -8,6 +7,10 @@ s.version = '1.2.3' s.requirements << 'none' s.require_path = 'ext' + s.author = 'Debian Ruby Extras Maintainers' + s.email = 'pkg-ruby-extras-maintainers@lists.alioth.debian.org' + s.homepage = 'https://wiki.debian.org/Teams/Ruby' + s.license = 'GPL-3+' s.extensions << 'ext/simpleextension/extconf.rb' #s.autorequire = 'rake' s.files = Dir.glob('{bin,ext}/**/*') @@ -17,7 +20,7 @@ s.test_files = ['test/test_simpleextension.rb'] end -Rake::GemPackageTask.new(spec) do |pkg| +Gem::PackageTask.new(spec) do |pkg| pkg.need_zip = false pkg.need_tar = false end diff -Nru gem2deb-0.7.6/test/sample/simpleextension_dh_auto_install_destdir/Rakefile gem2deb-0.10/test/sample/simpleextension_dh_auto_install_destdir/Rakefile --- gem2deb-0.7.6/test/sample/simpleextension_dh_auto_install_destdir/Rakefile 2013-07-12 14:29:34.000000000 +0000 +++ gem2deb-0.10/test/sample/simpleextension_dh_auto_install_destdir/Rakefile 2014-08-12 01:39:38.000000000 +0000 @@ -1,5 +1,4 @@ -require 'rubygems' -require 'rake/gempackagetask' +require 'rubygems/package_task' spec = Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY @@ -9,6 +8,10 @@ s.requirements << 'none' s.require_path = 'ext' s.extensions << 'ext/simpleextension/extconf.rb' + s.author = 'Debian Ruby Extras Maintainers' + s.email = 'pkg-ruby-extras-maintainers@lists.alioth.debian.org' + s.homepage = 'https://wiki.debian.org/Teams/Ruby' + s.license = 'GPL-3+' #s.autorequire = 'rake' s.files = Dir.glob('{bin,ext}/**/*') s.description = <