[DRE-commits] [gem2deb] 01/02: consider gemspec.executables for installing executables.

Antonio Terceiro terceiro at moszumanska.debian.org
Mon Feb 15 20:00:27 UTC 2016


This is an automated email from the git hooks/post-receive script.

terceiro pushed a commit to branch master
in repository gem2deb.

commit b11e07313d77ac9a4a3d7e31d214df65cdb956ff
Author: Antonio Terceiro <terceiro at debian.org>
Date:   Mon Feb 15 17:10:50 2016 -0200

    consider gemspec.executables for installing executables.
---
 debian/changelog                          |   4 +++-
 lib/gem2deb/installer.rb                  |   6 +++---
 lib/gem2deb/metadata.rb                   |  12 ++++++++++++
 test/integration/gem2deb_test.rb          |   4 ++++
 test/sample/altbindir/altbindir.gemspec   |   2 +-
 test/sample/altbindir/exe/dont-install    |   3 +++
 test/sample/altbindir/pkg/altbindir-1.gem | Bin 4096 -> 5632 bytes
 test/unit/metadata_test.rb                |  14 ++++++++++++++
 8 files changed, 40 insertions(+), 5 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 9524b03..368d3d4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,8 @@
 gem2deb (0.25.3) UNRELEASED; urgency=medium
 
-  * dh_ruby: consider gemspec.bindir for installing executables.
+  * dh_ruby:
+    - consider gemspec.bindir for installing executables.
+    - consider gemspec.executables for installing executables.
 
  -- Antonio Terceiro <terceiro at debian.org>  Mon, 15 Feb 2016 15:45:31 -0200
 
diff --git a/lib/gem2deb/installer.rb b/lib/gem2deb/installer.rb
index 1a53004..dd7ccbd 100644
--- a/lib/gem2deb/installer.rb
+++ b/lib/gem2deb/installer.rb
@@ -27,7 +27,7 @@ module Gem2Deb
     def install_files_and_build_extensions
 
       Gem2Deb::Banner.print "Install files"
-      install_files(bindir, destdir(:bindir), 755) if File::directory?(bindir)
+      install_files(bindir, destdir(:bindir), 755, metadata.executables) if File::directory?(bindir)
       install_files(libdir, destdir(:libdir), 644) if File::directory?(libdir)
 
       if metadata.has_native_extensions?
@@ -158,9 +158,9 @@ module Gem2Deb
     DO_NOT_INSTALL = (JUNK_FILES + HOOK_FILES).map { |file| /^#{file}$/ } + JUNK_PATTERNS
 
 
-    def install_files(src, dest, mode)
+    def install_files(src, dest, mode, files_to_install = nil)
       run("install", "-d", dest)
-      files_to_install = Dir.chdir(src) do
+      files_to_install ||= Dir.chdir(src) do
         Dir.glob('**/*').reject do |file|
           filename = File.basename(file)
           File.directory?(file) || DO_NOT_INSTALL.any? { |pattern| filename =~ pattern }
diff --git a/lib/gem2deb/metadata.rb b/lib/gem2deb/metadata.rb
index 57864ac..5f41952 100644
--- a/lib/gem2deb/metadata.rb
+++ b/lib/gem2deb/metadata.rb
@@ -82,6 +82,18 @@ module Gem2Deb
       gemspec ? gemspec.bindir : 'bin'
     end
 
+    def executables
+      if gemspec
+        if gemspec.executables.empty?
+          nil
+        else
+          gemspec.executables
+        end
+      else
+        Dir.glob(File.join(root, 'bin', '*')).map { |f| File.basename(f) }
+      end
+    end
+
     protected
 
     def load_gemspec
diff --git a/test/integration/gem2deb_test.rb b/test/integration/gem2deb_test.rb
index eb9da9d..e8a6b98 100644
--- a/test/integration/gem2deb_test.rb
+++ b/test/integration/gem2deb_test.rb
@@ -31,6 +31,10 @@ class Gem2DebTest < Gem2DebTestCase
     assert_match '/usr/bin/altbindir', `dpkg --contents #{self.class.tmpdir}/ruby-altbindir*.deb`
   end
 
+  should 'not install non-listed executables from altbindir' do
+    assert_no_match %r{/usr/bin/dont-install}, `dpkg --contents #{self.class.tmpdir}/ruby-altbindir*.deb`
+  end
+
   def self.build_tree(directory)
     FileUtils.cp_r(directory, tmpdir)
     dir = File.join(tmpdir, File.basename(directory))
diff --git a/test/sample/altbindir/altbindir.gemspec b/test/sample/altbindir/altbindir.gemspec
index a9b29e7..7b9d0e1 100644
--- a/test/sample/altbindir/altbindir.gemspec
+++ b/test/sample/altbindir/altbindir.gemspec
@@ -12,6 +12,6 @@ Gem::Specification.new do |spec|
 
   spec.files         = Dir.glob('**/*')
   spec.bindir        = "exe"
-  spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
+  spec.executables   = %w(altbindir)
   spec.require_paths = ["lib"]
 end
diff --git a/test/sample/altbindir/exe/dont-install b/test/sample/altbindir/exe/dont-install
new file mode 100644
index 0000000..b907d58
--- /dev/null
+++ b/test/sample/altbindir/exe/dont-install
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+
+puts "BOOM"
diff --git a/test/sample/altbindir/pkg/altbindir-1.gem b/test/sample/altbindir/pkg/altbindir-1.gem
index 7e3cec7..fabf2dc 100644
Binary files a/test/sample/altbindir/pkg/altbindir-1.gem and b/test/sample/altbindir/pkg/altbindir-1.gem differ
diff --git a/test/unit/metadata_test.rb b/test/unit/metadata_test.rb
index 497dd2d..ae0163b 100644
--- a/test/unit/metadata_test.rb
+++ b/test/unit/metadata_test.rb
@@ -58,6 +58,10 @@ class MetaDataTest < Gem2DebTestCase
     should 'use bin/ as bindir' do
       assert_equal 'bin', @metadata.bindir
     end
+    should 'use all programs under bin/' do
+      Dir.stubs(:glob).with('test/tmp/bin/*').returns(['test/tmp/bin/foo'])
+      assert_equal ['foo'], @metadata.executables
+    end
   end
 
   context 'with gemspec' do
@@ -107,6 +111,16 @@ class MetaDataTest < Gem2DebTestCase
       assert_equal 'programs', @metadata.bindir
     end
 
+    should 'use whatever programs the gemspec says' do
+      @gemspec.stubs(:executables).returns(%w(foo bar))
+      assert_equal ['foo', 'bar'], @metadata.executables
+    end
+
+    should 'not use an empty executables list' do
+      @gemspec.stubs(:executables).returns([])
+      assert_equal nil, @metadata.executables
+    end
+
   end
 
   context 'on multi-binary source packages' do

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/gem2deb.git



More information about the Pkg-ruby-extras-commits mailing list