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