[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