mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-08 22:45:43 +00:00
extra/ruby to 2.1.0-2.1, fixes #705
This commit is contained in:
parent
6bb25ec4d1
commit
b5067688f8
6 changed files with 236 additions and 0 deletions
|
@ -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
|
||||||
|
|
24
extra/ruby/0002-Use-only-unsigned-long-for-rb_serial_t.patch
Normal file
24
extra/ruby/0002-Use-only-unsigned-long-for-rb_serial_t.patch
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
diff --git a/internal.h b/internal.h
|
||||||
|
index 40916a5..785be49 100644
|
||||||
|
--- a/internal.h
|
||||||
|
+++ b/internal.h
|
||||||
|
@@ -250,16 +250,8 @@ struct rb_subclass_entry {
|
||||||
|
rb_subclass_entry_t *next;
|
||||||
|
};
|
||||||
|
|
||||||
|
-#if defined(HAVE_LONG_LONG)
|
||||||
|
-typedef unsigned LONG_LONG rb_serial_t;
|
||||||
|
-#define SERIALT2NUM ULL2NUM
|
||||||
|
-#elif defined(HAVE_UINT64_T)
|
||||||
|
-typedef uint64_t rb_serial_t;
|
||||||
|
-#define SERIALT2NUM SIZET2NUM
|
||||||
|
-#else
|
||||||
|
typedef unsigned long rb_serial_t;
|
||||||
|
#define SERIALT2NUM ULONG2NUM
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
struct rb_classext_struct {
|
||||||
|
struct st_table *iv_index_tbl;
|
||||||
|
--
|
||||||
|
1.9.0
|
||||||
|
|
88
extra/ruby/PKGBUILD
Normal file
88
extra/ruby/PKGBUILD
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
# Maintainer: Thomas Dziedzic <gostrc@gmail.com>
|
||||||
|
# Contributor: Allan McRae <allan@archlinux.org>
|
||||||
|
# Contributor: John Proctor <jproctor@prium.net>
|
||||||
|
# Contributor: Jeramy Rutley <jrutley@gmail.com>
|
||||||
|
|
||||||
|
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
|
||||||
|
# - patch to fix building against readline 6.3
|
||||||
|
# - patch to fix running ruby on v5 (#705)
|
||||||
|
|
||||||
|
pkgname=('ruby' 'ruby-docs')
|
||||||
|
pkgver=2.1.0
|
||||||
|
pkgrel=2.1
|
||||||
|
arch=('i686' 'x86_64')
|
||||||
|
url='http://www.ruby-lang.org/en/'
|
||||||
|
license=('BSD' 'custom')
|
||||||
|
# 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/ruby-${pkgver}.tar.bz2"
|
||||||
|
'gemrc'
|
||||||
|
'0001-Fix-installing-gem-from-file-without-dependencies.patch'
|
||||||
|
'changeset_r45225.diff'
|
||||||
|
'0002-Use-only-unsigned-long-for-rb_serial_t.patch')
|
||||||
|
md5sums=('1546eeb763ac7754365664be763a1e8f'
|
||||||
|
'6fb8e7a09955e0f64be3158fb4a27e7a'
|
||||||
|
'61a1507f260866805fc6451c14733b25'
|
||||||
|
'64839e135447accd2e0568c563e12d23'
|
||||||
|
'f6f9c200c5e9afc4d5b21575da4821a2')
|
||||||
|
|
||||||
|
build() {
|
||||||
|
cd ruby-${pkgver}
|
||||||
|
|
||||||
|
# fixes https://github.com/rubygems/rubygems/issues/760
|
||||||
|
patch -Np1 -i ${srcdir}/0001-Fix-installing-gem-from-file-without-dependencies.patch
|
||||||
|
|
||||||
|
# fixes https://bugs.ruby-lang.org/issues/9578
|
||||||
|
patch -Np0 -i ../changeset_r45225.diff
|
||||||
|
|
||||||
|
# fixes https://bugs.ruby-lang.org/issues/9507
|
||||||
|
[[ $CARCH == 'arm' ]] && patch -Np1 -i ../0002-Use-only-unsigned-long-for-rb_serial_t.patch
|
||||||
|
|
||||||
|
PKG_CONFIG=/usr/bin/pkg-config ./configure \
|
||||||
|
--prefix=/usr \
|
||||||
|
--sysconfdir=/etc \
|
||||||
|
--enable-shared \
|
||||||
|
--disable-rpath \
|
||||||
|
--with-dbm-type=gdbm_compat
|
||||||
|
|
||||||
|
make
|
||||||
|
}
|
||||||
|
|
||||||
|
check() {
|
||||||
|
cd ruby-${pkgver}
|
||||||
|
|
||||||
|
make test
|
||||||
|
}
|
||||||
|
|
||||||
|
package_ruby() {
|
||||||
|
pkgdesc='An object-oriented language for quick and easy programming'
|
||||||
|
depends=('gdbm' 'openssl' 'libffi' 'libyaml')
|
||||||
|
optdepends=('ruby-docs: Ruby documentation') # 'tk: for Ruby/TK'
|
||||||
|
provides=('rubygems' 'rake')
|
||||||
|
conflicts=('rake')
|
||||||
|
backup=('etc/gemrc')
|
||||||
|
install='ruby.install'
|
||||||
|
|
||||||
|
cd ruby-${pkgver}
|
||||||
|
|
||||||
|
make DESTDIR="${pkgdir}" install-nodoc
|
||||||
|
|
||||||
|
install -D -m644 ${srcdir}/gemrc "${pkgdir}/etc/gemrc"
|
||||||
|
|
||||||
|
install -D -m644 COPYING "${pkgdir}/usr/share/licenses/ruby/LICENSE"
|
||||||
|
install -D -m644 BSDL "${pkgdir}/usr/share/licenses/ruby/BSDL"
|
||||||
|
}
|
||||||
|
|
||||||
|
package_ruby-docs() {
|
||||||
|
pkgdesc='Documentation files for ruby'
|
||||||
|
|
||||||
|
cd ruby-${pkgver}
|
||||||
|
|
||||||
|
make DESTDIR="${pkgdir}" install-doc install-capi
|
||||||
|
|
||||||
|
install -D -m644 COPYING "${pkgdir}/usr/share/licenses/ruby-docs/LICENSE"
|
||||||
|
install -D -m644 BSDL "${pkgdir}/usr/share/licenses/ruby-docs/BSDL"
|
||||||
|
}
|
13
extra/ruby/changeset_r45225.diff
Normal file
13
extra/ruby/changeset_r45225.diff
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
Index: ext/readline/readline.c
|
||||||
|
===================================================================
|
||||||
|
--- ext/readline/readline.c (revision 45224)
|
||||||
|
+++ ext/readline/readline.c (revision 45225)
|
||||||
|
@@ -1974,7 +1974,7 @@
|
||||||
|
|
||||||
|
rl_attempted_completion_function = readline_attempted_completion_function;
|
||||||
|
#if defined(HAVE_RL_PRE_INPUT_HOOK)
|
||||||
|
- rl_pre_input_hook = (Function *)readline_pre_input_hook;
|
||||||
|
+ rl_pre_input_hook = (rl_hook_func_t *)readline_pre_input_hook;
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_RL_CATCH_SIGNALS
|
||||||
|
rl_catch_signals = 0;
|
5
extra/ruby/gemrc
Normal file
5
extra/ruby/gemrc
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Read about the gemrc format at http://docs.rubygems.org/read/chapter/11
|
||||||
|
|
||||||
|
# --user-install is used to install to $HOME/.gem/ by default since we want to separate
|
||||||
|
# pacman installed gems and gem installed gems
|
||||||
|
gem: --user-install
|
22
extra/ruby/ruby.install
Normal file
22
extra/ruby/ruby.install
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
print_gem_default_target() {
|
||||||
|
echo 'The default location of gem installs is $HOME/.gem/ruby'
|
||||||
|
echo 'Add the following line to your PATH if you plan to install using gem'
|
||||||
|
echo '$(ruby -rubygems -e "puts Gem.user_dir")/bin'
|
||||||
|
echo 'If you want to install to the system wide location, you must either:'
|
||||||
|
echo 'edit /etc/gemrc or run gem with the --no-user-install flag.'
|
||||||
|
}
|
||||||
|
|
||||||
|
# arg 1: the new package version
|
||||||
|
post_install() {
|
||||||
|
print_gem_default_target
|
||||||
|
}
|
||||||
|
|
||||||
|
# arg 1: the new package version
|
||||||
|
# arg 2: the old package version
|
||||||
|
post_upgrade() {
|
||||||
|
if [ "$(vercmp $2 1.9.3_p125-4)" -lt 0 ]; then
|
||||||
|
print_gem_default_target
|
||||||
|
fi
|
||||||
|
}
|
Loading…
Reference in a new issue