diff options
Diffstat (limited to 'extra/ruby')
-rw-r--r-- | extra/ruby/0001-Fix-installing-gem-from-file-without-dependencies.patch | 84 | ||||
-rw-r--r-- | extra/ruby/PKGBUILD | 33 |
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 |