summaryrefslogtreecommitdiff
path: root/extra/ruby
diff options
context:
space:
mode:
Diffstat (limited to 'extra/ruby')
-rw-r--r--extra/ruby/0001-Fix-installing-gem-from-file-without-dependencies.patch84
-rw-r--r--extra/ruby/PKGBUILD33
2 files changed, 104 insertions, 13 deletions
diff --git a/extra/ruby/0001-Fix-installing-gem-from-file-without-dependencies.patch b/extra/ruby/0001-Fix-installing-gem-from-file-without-dependencies.patch
new file mode 100644
index 000000000..8fefb275d
--- /dev/null
+++ b/extra/ruby/0001-Fix-installing-gem-from-file-without-dependencies.patch
@@ -0,0 +1,84 @@
+From f5bbf838c8b13369a61c6756355305388df5824f Mon Sep 17 00:00:00 2001
+From: Tim Moore <tmoore@incrementalism.net>
+Date: Tue, 31 Dec 2013 17:39:45 +1100
+Subject: [PATCH] Fix installing gem from file without dependencies.
+
+Commit 9437ccc fixed the ability to install remote gems that was accidentally
+broken by d97fba1, but in the process accidentally broke installing from local
+files.
+
+This also changes the order to check for local first, to avoid unnecessary
+network requests in the case where the gem is local.
+
+Closes #760.
+---
+ lib/rubygems/commands/install_command.rb | 20 ++++++++++++--------
+ test/rubygems/test_gem_commands_install_command.rb | 14 ++++++++++++++
+ 2 files changed, 26 insertions(+), 8 deletions(-)
+
+diff --git a/lib/rubygems/commands/install_command.rb b/lib/rubygems/commands/install_command.rb
+index 4485eb1..8219eef 100644
+--- a/lib/rubygems/commands/install_command.rb
++++ b/lib/rubygems/commands/install_command.rb
+@@ -228,7 +228,18 @@ to write the specification by hand. For example:
+ def install_gem_without_dependencies name, req # :nodoc:
+ gem = nil
+
+- if remote? then
++ if local? then
++ if name =~ /\.gem$/ and File.file? name then
++ source = Gem::Source::SpecificFile.new name
++ spec = source.spec
++ else
++ source = Gem::Source::Local.new
++ spec = source.find_gem name, req
++ end
++ gem = source.download spec if spec
++ end
++
++ if remote? and not gem then
+ dependency = Gem::Dependency.new name, req
+ dependency.prerelease = options[:prerelease]
+
+@@ -236,13 +247,6 @@ to write the specification by hand. For example:
+ gem = fetcher.download_to_cache dependency
+ end
+
+- if local? and not gem then
+- source = Gem::Source::Local.new
+- spec = source.find_gem name, req
+-
+- gem = source.download spec
+- end
+-
+ inst = Gem::Installer.new gem, options
+ inst.install
+
+diff --git a/test/rubygems/test_gem_commands_install_command.rb b/test/rubygems/test_gem_commands_install_command.rb
+index 76ea6b4..a5917c0 100644
+--- a/test/rubygems/test_gem_commands_install_command.rb
++++ b/test/rubygems/test_gem_commands_install_command.rb
+@@ -560,6 +560,20 @@ ERROR: Possible alternatives: non_existent_with_hint
+ assert_equal %w[a-2], @cmd.installed_specs.map { |spec| spec.full_name }
+ end
+
++ def test_install_gem_ignore_dependencies_specific_file
++ spec = quick_spec 'a', 2
++
++ util_build_gem spec
++
++ FileUtils.mv spec.cache_file, @tempdir
++
++ @cmd.options[:ignore_dependencies] = true
++
++ @cmd.install_gem File.join(@tempdir, spec.file_name), nil
++
++ assert_equal %w[a-2], @cmd.installed_specs.map { |spec| spec.full_name }
++ end
++
+ def test_parses_requirement_from_gemname
+ spec_fetcher do |fetcher|
+ fetcher.gem 'a', 2
+--
+1.8.5.2
+
diff --git a/extra/ruby/PKGBUILD b/extra/ruby/PKGBUILD
index fc4fb1009..aa7ded71a 100644
--- a/extra/ruby/PKGBUILD
+++ b/extra/ruby/PKGBUILD
@@ -4,20 +4,28 @@
# Contributor: Jeramy Rutley <jrutley@gmail.com>
pkgname=('ruby' 'ruby-docs')
-pkgver=2.0.0_p353
-pkgrel=1
+pkgver=2.1.0
+pkgrel=2
arch=('i686' 'x86_64')
url='http://www.ruby-lang.org/en/'
license=('BSD' 'custom')
-makedepends=('gdbm' 'openssl' 'tk' 'libffi' 'doxygen' 'graphviz' 'libyaml')
+# disable ruby tk since 1.9.3 it has caused a segfault on require 'tk'
+# https://bugs.ruby-lang.org/issues/8000
+# wait for upstream to start supporting tk 8.6
+makedepends=('gdbm' 'openssl' 'libffi' 'doxygen' 'graphviz' 'libyaml') # 'tk'
options=('!emptydirs' '!makeflags' 'staticlibs')
-source=("http://cache.ruby-lang.org/pub/ruby/${pkgver%.*}/ruby-${pkgver//_/-}.tar.bz2"
- 'gemrc')
-md5sums=('20eb8f067d20f6b76b7e16cce2a85a55'
- '6fb8e7a09955e0f64be3158fb4a27e7a')
+source=("http://cache.ruby-lang.org/pub/ruby/ruby-${pkgver}.tar.bz2"
+ 'gemrc'
+ '0001-Fix-installing-gem-from-file-without-dependencies.patch')
+md5sums=('1546eeb763ac7754365664be763a1e8f'
+ '6fb8e7a09955e0f64be3158fb4a27e7a'
+ '61a1507f260866805fc6451c14733b25')
build() {
- cd ruby-${pkgver//_/-}
+ cd ruby-${pkgver}
+
+ # fixes https://github.com/rubygems/rubygems/issues/760
+ patch -Np1 -i ${srcdir}/0001-Fix-installing-gem-from-file-without-dependencies.patch
PKG_CONFIG=/usr/bin/pkg-config ./configure \
--prefix=/usr \
@@ -30,7 +38,7 @@ build() {
}
check() {
- cd ruby-${pkgver//_/-}
+ cd ruby-${pkgver}
make test
}
@@ -38,14 +46,13 @@ check() {
package_ruby() {
pkgdesc='An object-oriented language for quick and easy programming'
depends=('gdbm' 'openssl' 'libffi' 'libyaml')
- optdepends=('tk: for Ruby/TK'
- 'ruby-docs: Ruby documentation')
+ optdepends=('ruby-docs: Ruby documentation') # 'tk: for Ruby/TK'
provides=('rubygems' 'rake')
conflicts=('rake')
backup=('etc/gemrc')
install='ruby.install'
- cd ruby-${pkgver//_/-}
+ cd ruby-${pkgver}
make DESTDIR="${pkgdir}" install-nodoc
@@ -58,7 +65,7 @@ package_ruby() {
package_ruby-docs() {
pkgdesc='Documentation files for ruby'
- cd ruby-${pkgver//_/-}
+ cd ruby-${pkgver}
make DESTDIR="${pkgdir}" install-doc install-capi