Compare commits

...

464 Commits
f11 ... master

Author SHA1 Message Date
Vít Ondruch
986dc48123 Add explicit BR: make. 2020-11-25 11:01:43 +01:00
Vít Ondruch
be9961f6d0 Add missing patch. 2020-10-13 17:54:53 +02:00
Vít Ondruch
946f8b8693 Enable arm64 optimizations.
The same already exists for power/x86.

Resolves: rhbz#1884728
2020-10-13 17:03:50 +02:00
Vít Ondruch
8b746d13cf Upgrade to Ruby 2.7.2. 2020-10-13 16:22:15 +02:00
Jun Aruga
78c9d9e324 Give an option to increase the timeout in tests.
Because setting the option makes some tests stable that are currently randomly
failing with error on especially s390x and aarch64.

We observed the failing tests are calling `assert_in_out_err` method
calling `invoke_ruby` calling method.

Then when the `th_stdout.join(timeout)` or `th_stderr.join(timeout)` returns
`nil` as thread timeout in `invoke_ruby` method, it causes the error. [1][2]

The `test_timeout_scale` macro is to set the environment variable
`RUBY_TEST_TIMEOUT_SCALE` to increase the timeout in `apply_timeout_scale`
method as <new timeout> = <timeout> * <timeout scale>.

As an example, `TestBugReporter#test_bug_reporter_add` test's
maximum thread timeout was 56+ seconds for the default timeout 10 seconds. [3]
In this case setting `RUBY_TEST_TIMEOUT_SCALE=6` (6 * 10 = 60) is good enough
for 56+ seconds.

[1] https://github.com/ruby/ruby/blob/v2_7_1/tool/lib/envutil.rb#L149
[2] https://bugs.ruby-lang.org/issues/16492#note-8
[3] https://bugs.ruby-lang.org/issues/16492#note-4
2020-08-05 14:23:50 +02:00
Fedora Release Engineering
d471fb8f62 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-29 06:02:07 +00:00
Vít Ondruch
4979be53ac Avoid possible timeout errors in TestBugReporter#test_bug_reporter_add. 2020-07-27 17:16:51 +02:00
Vít Ondruch
d461276d48 Disable LTO, which appear to cause issues with SIGSEV handler.
5baaf4a99c
2020-07-27 17:15:32 +02:00
Jun Aruga
064a0517d6 Add ruby-default-gems dependency on irb.
Resolves: rhbz#1850541
2020-06-25 11:25:42 +02:00
Vít Ondruch
bc5cb6094e Fix require behavior allowing to load libraries multiple times.
Resolves: rhbz#1835836
2020-06-24 14:43:04 +02:00
Jun Aruga
0963ae5102 Fix FTBFS due to libyaml 0.2.5.
Resolves: rhbz#1845530
2020-06-16 14:31:54 +02:00
Vít Ondruch
29816481d1 Relax rubygems-devel dependency on rubygems.
Independent rubygems package used to provide rubygems-devel subpackages,
but this is going to change to ease the independent rubygems package
maitenance and therefore ruby package will become the ultimate source of
rubygems-devel package.
2020-05-15 17:52:30 +02:00
Vít Ondruch
26bc2eb795 Fix changelog identation. 2020-04-16 10:35:30 +02:00
Vít Ondruch
102ff85d98 Prevent issues with openssl loading when RubyGems are disabled. 2020-04-15 18:48:14 +02:00
Vít Ondruch
50345c3ee4 Hardcode obsolete version for rubygem-racc. 2020-04-15 18:08:21 +02:00
Vít Ondruch
fb50c77241 Hardcode obsolete version for rubygem-did_you_mean. 2020-04-15 18:07:11 +02:00
Vít Ondruch
ca69f778a9 Bundle did_you_mean into StdLib.
Resolves: rhbz#1817178
2020-04-08 18:26:49 +02:00
Vít Ondruch
838cca0381 Move Racc .gemspec to better place. 2020-04-08 18:14:52 +02:00
Vít Ondruch
baf046a6a4 Bundle Racc into StdLib.
It is increasingly hard to maintain default gems extracted from StdLib
into gems. If they are overlapped by independent versions, it is even
harder, because the overlapped versions would need to provide symlinks
back to StdLib \[[1]\]. On top of that, the layout differs from
upstream, where default gems are always available.

Because these small nuances can make hard discoverable race conditions
during Ruby application loading and runtime, it will be best to keep the
default gems bundled.

[1]: https://src.fedoraproject.org/rpms/rubygem-racc/pull-request/1
2020-04-02 20:37:38 +02:00
Vít Ondruch
c63e907e87 Add ruby-default-gems subpackage shipping all extra default gem content. 2020-04-02 20:37:32 +02:00
Vít Ondruch
e5cef5e271 Be more strict about StdLib content. 2020-04-02 11:44:07 +02:00
Vít Ondruch
759d6796c6 Properly own BigDecimal files. 2020-04-02 11:44:07 +02:00
Vít Ondruch
a9b3ba531f Shuffle bits of .spec file around.
Reorganize subpackages to keep default and bundled gems together.
2020-04-02 11:44:03 +02:00
Vít Ondruch
f2d727806b Upgrade to Ruby 2.7.1. 2020-04-01 21:06:53 +02:00
Vít Ondruch
79683d7d62 Fix FTBFS due to glibc 2.31.9000 implementing lchmod(2). 2020-04-01 19:08:27 +02:00
Vít Ondruch
40937c8a7a Install Racc it by default. 2020-01-28 13:50:46 +01:00
Vít Ondruch
40610a988c Provide StdLib links for Racc. 2020-01-28 13:49:34 +01:00
Vít Ondruch
dde320d13d Remove useless rdoc directory from racc. 2020-01-27 18:13:11 +01:00
Vít Ondruch
26cfdf277e The json.gemspec now referes properly to the extensions. 2020-01-27 10:41:26 +01:00
Vít Ondruch
345ce0e5b8 Make rubygem(did_you_mean) hard dependency. 2020-01-16 11:43:08 +01:00
Vít Ondruch
197c02993b Remove useless .github directory from Rake. 2020-01-16 11:43:08 +01:00
Vít Ondruch
bb318e2964 .gitignore is not included in Rake anymore. 2020-01-16 10:36:22 +01:00
Vít Ondruch
8454ff1601 The did_you_mean does not include its temporary directory anymore. 2020-01-16 10:34:34 +01:00
Vít Ondruch
3696d7be37 Upgrade to Ruby 2.7.0.
This is SRPM import. The evolution of this commit is preserved in
private-ruby-2.7 branch.
2020-01-15 16:26:13 +01:00
Slava Kardakov
04b63f48ea Update to Ruby 2.6.5. 2019-10-08 21:47:31 +02:00
Vít Ondruch
fe3a1dd604 Fix checksec 2.0+ compatibility. 2019-09-25 14:00:57 +02:00
Pavel Valena
050a503e16 Update to Ruby 2.6.4. 2019-09-03 11:39:53 +02:00
Fedora Release Engineering
423327ef48 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-07-26 18:52:39 +00:00
Vít Ondruch
13a1b3e907 Properly support %prerelease in %gemspec_ macros. 2019-06-25 13:48:27 +02:00
Pavel Valena
1cc2a497d3 Update sources file. 2019-05-14 18:39:59 +02:00
Pavel Valena
ed790644ea Update to Ruby 2.6.3. 2019-05-14 18:00:32 +02:00
Arjen Heidinga
ea106d15b2 Bump version and add changelog 2019-03-29 11:35:19 +01:00
Arjen Heidinga
e38302eeb1 Add zlib-devel as BuildRequire
This is needed to compile zlib support. I think it is by accident available in the original buildroot, but not in mine.
I think it is better to explicitly name it.
2019-03-29 11:35:14 +01:00
Vít Ondruch
395ef05d65 Exclude irb.rb from ruby-libs.
This file is just part of rubygem-irb.
2019-03-25 15:00:51 +01:00
Vít Ondruch
9d08846cc7 Link IRB files instead of directories.
During update, RPM cannot simply replace directory by link to direcotry,
therefore create the directory structure and link the files there one by
one (rhbz#1691039).
2019-03-21 10:45:11 +01:00
Vít Ondruch
5aa32e278d Link IRB back to StdLib.
This avoids issues running `$ bin/rails console --sandbox`, which
otherwise breaks with error such as:

~~~
$ bin/rails console --sandbox
Traceback (most recent call last):
	12: from bin/rails:4:in `<main>'
	11: from bin/rails:4:in `require'
	10: from /builddir/.gem/ruby/gems/railties-5.2.2.1/lib/rails/commands.rb:18:in `<top (required)>'
	 9: from /builddir/.gem/ruby/gems/railties-5.2.2.1/lib/rails/command.rb:44:in `invoke'
	 8: from /builddir/.gem/ruby/gems/railties-5.2.2.1/lib/rails/command.rb:70:in `find_by_namespace'
	 7: from /builddir/.gem/ruby/gems/railties-5.2.2.1/lib/rails/command/behavior.rb:79:in `lookup'
	 6: from /builddir/.gem/ruby/gems/railties-5.2.2.1/lib/rails/command/behavior.rb:79:in `each'
	 5: from /builddir/.gem/ruby/gems/railties-5.2.2.1/lib/rails/command/behavior.rb:80:in `block in lookup'
	 4: from /builddir/.gem/ruby/gems/railties-5.2.2.1/lib/rails/command/behavior.rb:80:in `each'
	 3: from /builddir/.gem/ruby/gems/railties-5.2.2.1/lib/rails/command/behavior.rb:84:in `block (2 levels) in lookup'
	 2: from /builddir/.gem/ruby/gems/railties-5.2.2.1/lib/rails/command/behavior.rb:84:in `require'
	 1: from /builddir/.gem/ruby/gems/railties-5.2.2.1/lib/rails/commands/console/console_command.rb:3:in `<top (required)>'
/builddir/.gem/ruby/gems/railties-5.2.2.1/lib/rails/commands/console/console_command.rb:3:in `require': cannot load such file -- irb (LoadError)
~~~
2019-03-19 15:21:09 +01:00
Vít Ondruch
f4c0ae4dea Upgrade to Ruby 2.6.2. 2019-03-14 17:53:29 +01:00
Vít Ondruch
392287d18b Fix ".include =" support in openssl.cnf.
Because of rhbz#1668916, OpenSSL now supports = character in
openssl.cnf.
2019-03-05 10:39:40 +01:00
Igor Gnatenko
a889754fa2 Rebuild for readline 8.0 2019-02-17 09:30:52 +01:00
Vít Ondruch
f3953123c0 Don't ship .stp files when SystemTap support is disabled. 2019-02-07 15:16:51 +01:00
Vít Ondruch
17f23f30d6 Upgrade to Ruby 2.6.1. 2019-01-31 12:42:56 +01:00
Igor Gnatenko
bc094d8811 Remove obsolete Group tag
References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag
2019-01-28 20:24:45 +01:00
Vít Ondruch
b610699f35 Upstream fix adding -C flag instead of changing directory for gem build. 2019-01-24 17:18:59 +01:00
Vít Ondruch
1e60df6dc1 Loosen RDoc dependency. 2019-01-24 15:15:00 +01:00
Vít Ondruch
bb1cbacab5 Extract composition of dependecy strings into helper. 2019-01-24 10:38:43 +01:00
Vít Ondruch
d66ece5f5d Properly generate "ruby(rubygems)" versioned dependencies. 2019-01-24 10:38:43 +01:00
Vít Ondruch
0c8cdc456b Upgrade to Ruby 2.6.0. 2019-01-17 08:31:01 +01:00
Björn Esser
bb26a282aa
Rebuilt for libcrypt.so.2 (#1666033) 2019-01-14 18:53:16 +01:00
Jun Aruga
2506a2faa2 Refresh expired certificates to fix FTBFS. 2019-01-11 11:15:39 +01:00
Vít Ondruch
c80ecd9db9 Fix Tokyo TZ tests. 2018-11-13 10:43:47 +01:00
Jun Aruga
5dcc35c709 Use official URL for Source0. 2018-10-26 19:15:46 +02:00
Pavel Valena
7fa10a167d Fix typo. 2018-10-23 13:12:35 +02:00
Pavel Valena
5bf57b1504 Fix: return default path with nonexistent home dir 2018-10-23 13:12:19 +02:00
Jun Aruga
32488add5b Update to Ruby 2.5.3. 2018-10-22 12:12:21 +02:00
Vít Ondruch
7c66ce151d Properly harden package using -fstack-protector-strong. 2018-09-03 14:11:55 +02:00
Vít Ondruch
d5e84a533c Add --with-cxxflags configuration for %gem_install macro.
https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/3LTI2MQVBFNNLGLLA5JTYPNAFP7SQGAI/
2018-08-30 14:29:48 +02:00
Vít Ondruch
e91d1127db Additional OpenSSL 1.1.1 fixes. 2018-08-30 13:07:30 +02:00
Vít Ondruch
b19096d798 Cleanly apply patches. 2018-08-30 13:06:14 +02:00
Jun Aruga
ec97a0708b Fix generated rdoc template issues. 2018-08-30 13:06:11 +02:00
Vít Ondruch
936827a34b Properly execute entire test suite. 2018-08-13 16:10:45 +02:00
Vít Ondruch
91a9a89fab Fix TLS 1.3 issues. 2018-08-13 15:17:14 +02:00
Florian Weimer
ab0834da77 Rebuild with fixed binutils 2018-07-31 11:16:50 +02:00
Igor Gnatenko
9fef07981c
Rebuild for new binutils
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2018-07-27 14:55:22 +02:00
Vít Ondruch
7c494340f9 Disable some test failing with OpenSSL 1.1.1. 2018-07-26 18:09:59 +02:00
Vít Ondruch
ae55d5722d Avoid need of C++ compiler to pass the test suite. 2018-07-26 13:50:39 +02:00
Fedora Release Engineering
9f569993f0 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-07-14 03:48:17 +00:00
Pavel Valena
8ef3cc0ed4 Add macros to edit files lists in .gemspec
%gemspec_add_file and %gemspec_remove_file.
2018-05-17 13:10:00 +02:00
Vít Ondruch
561c76845a Fix typos in macro description. 2018-05-03 15:16:00 +02:00
Vít Ondruch
bee5851fb0 Make %gemspec_{add,remove}_dep modify .gemspec provided by %setup macro.
The macros need to be udpated, since RPM 4.14+ can expand .gem files and
also also provide %{gem_name}.gemspec file used to rebuild the gem.
However, the .gemspec file is not in current directory, but directly in
%{_builddir}.
2018-05-03 14:53:49 +02:00
Vít Ondruch
b0274e84e7 Remove comment which does not apply anymore.
rhbz#1565960
2018-04-11 17:55:12 +02:00
Vít Ondruch
ecbc53b331 Revert "Use --with-setjmp-type=setjmp on aarch64 to work around gcc issue (#1545239)"
This reverts commit a3207ebb16.

This should not be needed, since changes in GCC were reverted.
2018-04-10 09:55:29 +02:00
Vít Ondruch
f571c557e2 Conflict requirement needs to generate dependency.
If there is only conflict requirement, this still menas that there is
dependency on that package and appropriate requirement must be generated
(rhbz#1561487)
2018-04-10 09:53:37 +02:00
Pavel Valena
793a1c3612 Update to Ruby 2.5.1. 2018-04-10 09:51:17 +02:00
Vít Ondruch
dcd292bb5a Add missing patch15.
This patch was introduced by ae56326d8d commit.
2018-03-09 09:25:41 +01:00
Vít Ondruch
39d1e08dc7 Disable additional SIGSEV handler test. 2018-03-06 10:47:15 +01:00
Vít Ondruch
8326796861 Re-enable GMP dependency. 2018-03-05 15:47:19 +01:00
Vít Ondruch
ae56326d8d Don't force libraries used to build Ruby to its dependencies.
This, for example, allows to build Ruby against GMP, but doesn't force
libraries using Ruby to depend on GMP as well.
2018-03-05 15:18:50 +01:00
Vít Ondruch
d452ecad11 Disable SIGSEV handler tests.
SIGSEV does not provide correct output on AArch64.

https://bugs.ruby-lang.org/issues/13758
2018-03-01 16:50:10 +01:00
Vít Ondruch
3733c3cf5d Revert "Add GMP dependency."
This causes issues with building other ruby packages, since it would
force every package to depend on gmp-devel. Reverting this until this
gets resolved upstream:

https://bugs.ruby-lang.org/issues/14422#note-6

This reverts commit 5624addc78.
2018-03-01 12:17:04 +01:00
Vít Ondruch
7395ebdf85 Save some release number. 2018-02-28 16:32:50 +01:00
Florian Weimer
a3207ebb16 Use --with-setjmp-type=setjmp on aarch64 to work around gcc issue (#1545239) 2018-02-24 19:11:02 +01:00
Florian Weimer
43a2b51955 Rebuild with new LDFLAGS from redhat-rpm-config 2018-02-24 18:59:36 +01:00
Pavel Valena
e3ea6478d9 Fix: Multiple vulnerabilities in RubyGems
https://bugzilla.redhat.com/show_bug.cgi?id=1547431
https://www.ruby-lang.org/en/news/2018/02/17/multiple-vulnerabilities-in-rubygems/

* rubygems-2.5.0-multiple-vulnerabilities.patch
2018-02-23 16:14:22 +01:00
Pavel Valena
6ff9776922 Add gcc to BuildRequires
https://fedoraproject.org/wiki/Packaging:C_and_C%2B%2B#BuildRequire s_and_Requies
2018-02-21 16:41:27 +01:00
Jun Aruga
d074784f33 Fix invalid licenses. 2018-02-19 15:24:32 +01:00
Vít Ondruch
faaad7b7c5 Fix thread_safe test suite segfaults. 2018-02-13 15:04:28 +01:00
Vít Ondruch
2134f5703e Disable Tokyo TZ tests.
They are broken by recen tzdata update.
2018-02-13 14:43:58 +01:00
Vít Ondruch
637f46e17d Add conflicts RPM generator.
This leverages RPM Conflicts instead of expanding the version ranges,
which does not work as reliably for this purpose.
2018-02-13 13:50:15 +01:00
Vít Ondruch
75ea12f0a3 Use safe navigation operator.
This operator is available since Ruby 2.3 and we are not going to use
this generator with older Ruby.
2018-02-13 13:50:15 +01:00
Vít Ondruch
b15350c441 Use 'with' operator in RPM dependency generator. 2018-02-13 13:50:15 +01:00
Vít Ondruch
5624addc78 Add GMP dependency.
This improves performance of some mathematical operations.

https://bugs.ruby-lang.org/issues/8796
2018-02-13 13:50:15 +01:00
Vít Ondruch
72c55bdcb2 Drop obsolete ldconfig scriptlets.
https://fedoraproject.org/wiki/Changes/Removing_ldconfig_scriptlets
2018-02-13 13:50:15 +01:00
Fedora Release Engineering
f49edf212f - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-02-09 13:25:27 +00:00
Björn Esser
138a8a192c
Rebuilt for switch to libxcrypt 2018-01-20 23:07:50 +01:00
Vít Ondruch
10a4e45e89 Fix wrong changelog release. 2018-01-09 13:09:39 +01:00
Vít Ondruch
b1741da5b7 Fix segfaults during generating of documentation.
This caused issued during build of rubygem-{webmock,ffi} and was fixed
as part of https://bugs.ruby-lang.org/issues/14261.
2018-01-09 12:50:06 +01:00
Vít Ondruch
9436f5bc42 Revert "Temporary bump rubygem-json release."
This reverts commit 45b099cf05.
2018-01-03 16:16:03 +01:00
Vít Ondruch
45b099cf05 Temporary bump rubygem-json release.
This allow to rebuild independent rubygem-json package, which would have
otherwise higher release and caused issues with build of other packages.
2018-01-03 12:10:23 +01:00
Vít Ondruch
c2db65dbc7 Upgrade to Ruby 2.5.0. 2018-01-03 12:07:19 +01:00
Vít Ondruch
ad05a88747 Check hardening only on Fedora. 2017-11-01 16:22:02 +01:00
Vít Ondruch
150d4f5dc0 Drop 'config.h' source.
This source is not needed since c467007d.
2017-10-30 16:40:48 +01:00
Jun Aruga
9bc7bec4a7 Improve "with" conditional statement as inline. 2017-10-27 15:31:17 +02:00
Jun Aruga
9f971e4cf2 Add macro to remove rubypick dependency.
Because Fedora Ruby modularity is needed to build without rubypick package.
2017-10-26 13:00:08 +02:00
Jun Aruga
26252866ff Add macros to remove systemtap, git and cmake dependencies. 2017-10-20 09:29:46 +02:00
Pavel Valena
6beb732b5c Apply patches cleanly. 2017-09-19 18:31:26 +02:00
Pavel Valena
535c42e96c Update to Ruby 2.4.2.
Patch10 and Patch11 subsumed.
2017-09-19 16:19:16 +02:00
Vít Ondruch
c9dec05f47 Drop ruby-devel dependency on rubypick, which is pulled in transtitively. 2017-09-08 14:10:33 +02:00
Vít Ondruch
ad2b787fea Temporary disable checksec on PPC64LE (rhbz#1479302). 2017-08-11 13:31:49 +02:00
Vít Ondruch
30f6c6490e Fix "IOError: stream closed" errors affecting Puma. 2017-08-11 12:42:24 +02:00
Fedora Release Engineering
7e690d1b1d - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild 2017-08-03 07:50:57 +00:00
Fedora Release Engineering
6e9956416e - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild 2017-07-27 13:20:58 +00:00
Vít Ondruch
fde2a68e73 OpenSSL 1.1.0f-3 disables some weak ciphers.
Adjust the package to pass the tests suite.
2017-07-20 16:56:56 +02:00
Vít Ondruch
5c42276905 Update to Ruby 2.4.1. 2017-04-03 16:11:07 +02:00
Vít Ondruch
4571daf34e Be more careful about RubyGems directory ownership.
And make this aligned with independent rubygems package.
2017-03-08 19:09:01 +01:00
Vít Ondruch
101851f2d3 Fix OpenSSL symlinks. 2017-02-23 09:23:29 +01:00
Fedora Release Engineering
8d50b10ccb - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild 2017-02-11 11:54:53 +00:00
Vít Ondruch
3a2607aa17 Add missing patch. 2017-02-03 15:32:51 +01:00
Vít Ondruch
c467007dbb Use standardized multilib solution (rhbz#1412274).
This helps platform specific difference between builds.
2017-02-03 15:01:38 +01:00
Vít Ondruch
415daf8d3b Fix GCC 7.x compatibility (rhbz#1417590). 2017-02-03 14:53:23 +01:00
Vít Ondruch
f540c43dae Apply patch fixing rubygem-mongo build failures. 2017-01-17 16:22:43 +01:00
Mamoru TASAKA
277ae4829a Rebuild again for f26-ruby24 sidetag 2017-01-13 06:37:59 +09:00
Igor Gnatenko
ab16bf76ef Rebuild for readline 7.x
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
2017-01-12 17:30:40 +01:00
Vít Ondruch
9a0bd11655 Link files into directory to avoid dir => symlink isues.
It is not easy to change the directory to simplink in RPM world. Hence
keep everything in the directory and just link back the files.
2017-01-12 09:00:21 +01:00
Vít Ondruch
b04585e064 Add rubygem-io-console dependency for rubygem-rdoc.
The io-console is now the hard requirement and RDoc does not work
without it.
2017-01-09 18:14:10 +01:00
Vít Ondruch
3130f89edd Upgrade to Ruby 2.4.0.
Move gemified xmlrpc into subpackage.
Move gemified openssl into subpackage.
Tk is removed from stdlib.
Extend 'gem_' macros for pre-release version support.
2017-01-09 15:58:21 +01:00
Vít Ondruch
d14e3f780f Update to Ruby 2.3.3. 2016-11-22 13:49:04 +01:00
Vít Ondruch
b3e0a8c314 Exclude json.rb from ruby-libs (rhbz#1397370). 2016-11-22 13:25:46 +01:00
Vít Ondruch
324c2d071e Ensure there is not forgotten any certificate. 2016-11-18 17:22:30 +01:00
Vít Ondruch
0a64e4b921 Update to Ruby 2.3.2. 2016-11-18 16:59:26 +01:00
Vít Ondruch
2221c5b843 Avoid conflict between OpenSSL 1.0.x and 1.1.x. 2016-10-24 10:48:20 +02:00
Vít Ondruch
2e9e67ab5b Improve macro documentation. 2016-10-21 16:56:42 +02:00
Vít Ondruch
4fb1d9c02d Add gemspec_add_dep and gemspec_remove_dep macros. 2016-10-21 16:56:32 +02:00
Vít Ondruch
dbf79976ab Harden package. 2016-10-21 16:50:40 +02:00
Vít Ondruch
c4c93c1113 Use continue to use OpenSSL 1.0 for the moment.
Only upcoming Ruby 2.4 support OpenSSL 1.1 so far:

https://bugs.ruby-lang.org/issues/12830
2016-10-21 16:49:12 +02:00
Richard W.M. Jones
46551f13fc config.h: Add riscv64 variant. 2016-10-14 10:36:21 +01:00
Vít Ondruch
7684b6800d Workaround "an invalid stdio handle" error on PPC (rhbz#1361037). 2016-08-10 18:26:49 +02:00
Vít Ondruch
b1466a4c8f Make symlinks for json gem. 2016-07-12 13:50:14 +02:00
Vít Ondruch
cad4c2ab27 Requires rubygem(json) for rubygem-rdoc (rhbz#1325022).
This makes it compatible with rubygem-rdoc package built from rdoc gem.
2016-05-23 14:02:23 +02:00
Vít Ondruch
f2347fa378 Update to Ruby 2.3.1. 2016-04-29 23:19:03 +02:00
Peter Robinson
dd6ce9ce9c Add rubypick and rubygems requires to ruby-devel to deal with BuildRequires failures in koji, this likely needs to be revisited post mass rebuild but we need it now to ensure we don't have a high failure 2016-02-03 14:35:12 +00:00
Mamoru TASAKA
2414227a75 kill one test for now 2016-01-15 14:35:09 +09:00
Mamoru TASAKA
55ecc214e1 Backport trunk@53455 to make ruby-qt build 2016-01-15 14:12:34 +09:00
Vít Ondruch
5ed2c68dc5 Explicitly require RDoc, since weak dependencies are ignored by default. 2016-01-06 15:11:29 +01:00
Vít Ondruch
16c9e1e6b0 Load RubyGems prior ABRT hook to properly rescue RubyGems exceptions. 2016-01-06 13:35:09 +01:00
Vít Ondruch
4c12d4e704 Upgrade to Ruby 2.3.0. 2016-01-05 11:00:48 +01:00
Vít Ondruch
e467536081 Update to Ruby 2.2.4. 2015-12-21 13:08:17 +01:00
Vít Ondruch
b3ffc2fef6 Move the ABRT hook test into separate file. 2015-12-13 19:36:58 +01:00
Vít Ondruch
e4e06c7ce8 Ensure that abrt hook is used. 2015-12-11 10:56:00 +01:00
Vít Ondruch
c0513dfb8c Fix ABRT hook autoloading. 2015-12-10 15:59:05 +01:00
Michal Toman
bd75b0a7fe Add support for MIPS architecture to config.h 2015-09-04 14:53:28 +02:00
Vít Ondruch
8e1e241814 Fix RubyGems version. 2015-09-02 15:47:20 +02:00
Vít Ondruch
b945bce4cb Update to Ruby 2.2.3. 2015-09-01 14:25:32 +02:00
Vít Ondruch
693a96cb40 Fix test broken by disabled SSLv3 in OpenSSL. 2015-09-01 13:54:43 +02:00
Vít Ondruch
d954989b45 Fix for "dh key too small" error of OpenSSL 1.0.2+. 2015-06-23 13:09:05 +02:00
Dennis Gilmore
3131d89fde - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild 2015-06-18 22:37:48 +00:00
Vít Ondruch
3e4eba9070 Fix the git BR following the git package split. 2015-06-10 15:20:27 +02:00
Vít Ondruch
4e3eb75037 Tcl/Tk switch is not needed anymore. 2015-05-11 12:18:15 +02:00
Vít Ondruch
e3316c21a0 Fix upgrade path.
rubygem-io-console's version was recently bumped in F21 due to update of
Ruby to version 2.1.6 and it makes the higher release to win.
2015-05-04 17:07:01 +02:00
Josef Stribny
55367be78b Bump release because of gems 2015-04-14 12:13:39 +02:00
Josef Stribny
05eb8b6a78 Update to Ruby 2.2.2 2015-04-14 09:51:46 +02:00
Vít Ondruch
b9da2e689a Apply upstream fix to TestIO#test_seek tests. 2015-03-24 14:26:56 +01:00
Vít Ondruch
a0a4c7571b Workaround issues with TestIO#test_seek. 2015-03-24 08:42:35 +01:00
Vít Ondruch
b92051c2fd Fix libruby.so versions in SystemTap scripts (rhbz#1202232). 2015-03-23 11:01:10 +01:00
Vít Ondruch
4612226c7e Clarify Rake's license. 2015-03-11 13:00:26 +01:00
Vít Ondruch
4a07d55953 License clarifications. 2015-03-09 17:21:07 +01:00
Vít Ondruch
3db4917d37 Enable some tests fixe in upstream. 2015-03-04 15:31:35 +01:00
Vít Ondruch
1af12992cf Update to Ruby 2.2.1. 2015-03-04 11:49:19 +01:00
Till Maas
203ef6c1f7 Rebuilt for Fedora 23 Change
https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code
2015-02-21 22:25:31 +01:00
Vít Ondruch
46f541b5e6 Fix directory ownership. 2015-02-05 17:25:22 +01:00
Vít Ondruch
351bd6cd02 Initialize all load paths in operating_system.rb 2015-02-04 13:54:20 +01:00
Vít Ondruch
c8dee5c194 Add RubyGems stub headers for bundled gems. 2015-02-03 16:19:49 +01:00
Vít Ondruch
329ba54c7e Make operating_system.rb more robust.
This avoids issues with incomplete rbconfig.rb such as:

https://bugs.ruby-lang.org/issues/10822
2015-02-03 14:47:18 +01:00
Vít Ondruch
76bbf0976d ConfigMap was deprecated in favor or RbConfig.
1d2feefde4
2015-02-03 10:30:45 +01:00
Vít Ondruch
c5abc51c7c Remove useless nosse2 patch. 2015-01-29 09:12:45 +01:00
Vít Ondruch
8dd648e754 Add missing rubygem-test-unit dependency on rubygem-power_assert. 2015-01-29 09:11:51 +01:00
Mamoru TASAKA
11e59a1355 Bump release to avoid EVR issue on rubygem-test-unit 2015-01-15 20:27:34 +09:00
Vít Ondruch
9195984ef3 Upgrade to Ruby 2.2.0.
- Explicitly list RubyGems directories to avoid accidentaly packaged content.
- Split test-unit and power_assert gems into separate sub-packages.
- Drop libdb dependency in favor of gdbm.
2015-01-15 10:14:24 +01:00
Orion Poplawski
de383e7548 Disbable sse2 on i668 (bug #1101811) 2014-12-26 16:53:38 -07:00
Vít Ondruch
1610d07dcd Update to Ruby 2.1.5. 2014-11-28 17:02:55 +01:00
Vít Ondruch
79beb34d80 Bump release to satisfy upgrade path. 2014-10-31 08:59:55 +01:00
Vít Ondruch
4375d5ca30 Fix "invalid regex" warning for non-rubygem packages (rhbz#1154067). 2014-10-30 13:59:52 +01:00
Vít Ondruch
2400b2d574 Include only vendor directories, not their content (rhbz#1114071). 2014-10-29 15:26:09 +01:00
Vít Ondruch
61fd310e63 Update to Ruby 2.1.4. 2014-10-29 15:22:34 +01:00
Vít Ondruch
1835dddc24 Drop the unused patch_level. 2014-08-27 17:25:20 +02:00
Vít Ondruch
8e2921fd5a Use load macro introduced in RPM 4.12. 2014-08-27 17:25:19 +02:00
Peter Robinson
b9d9d0c37a - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild 2014-08-18 00:28:26 +00:00
Vít Ondruch
629648da07 Workaround OpenSSL::TestPKeyRSA#test_sign_verify_memory_leak timeouts on ARM. 2014-06-27 12:49:55 +02:00
Peter Robinson
c31c7edb69 Fix FTBFS, Specify tcl/tk 8.6, Add upstream patch to build with libffi 3.1 2014-06-24 12:07:04 +01:00
Dennis Gilmore
96581d5c96 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild 2014-06-07 22:07:12 -05:00
Jaroslav Škarvada
ce47215a63 - Rebuilt for https://fedoraproject.org/wiki/Changes/f21tcl86 2014-05-21 12:36:54 +02:00
Josef Stribny
d09c32278d Update to Ruby 2.1.2 2014-05-20 13:24:29 +02:00
Vít Ondruch
098cd8787a Fix typo. 2014-05-07 15:43:31 +02:00
Vít Ondruch
efdf386e31 Kill bundled certificates. 2014-05-07 15:40:54 +02:00
Vít Ondruch
0a113b08ab Extract load macro into external file and include it. 2014-05-06 14:32:08 +02:00
Vít Ondruch
eab15b0506 Remove useless exclude (rhbz#1065897). 2014-05-06 08:18:00 +02:00
Vít Ondruch
f49b015f1f Correctly expand $(prefix) in some Makefiles, e.g. eruby. 2014-04-23 16:36:57 +02:00
Vít Ondruch
3f594feabd Revert regression of Hash#reject. 2014-04-09 09:34:30 +02:00
Vít Ondruch
a7c9cd0323 Import Ruby 2.1 sources. 2014-04-08 13:32:43 +02:00
Vít Ondruch
5ef051104a Merge branch 'private-ruby-2.1' into master
Conflicts:
	.gitignore
	ruby.spec
	rubygems-2.0.0-Do-not-modify-global-Specification.dirs-during-insta.patch
	rubygems-2.0.0-Fixes-for-empty-ruby-version.patch
	sources
2014-04-08 08:45:28 +02:00
Vít Ondruch
0d5d7e9999 Use revisions instead of tilde.
Tilde is prohibited by FPC:

https://fedorahosted.org/fpc/ticket/398
2014-04-07 15:23:44 +02:00
Vít Ondruch
699faa5e25 Fix typo. 2014-04-07 14:47:45 +02:00
Vít Ondruch
df08120417 Update to Ruby 2.1.1. 2014-03-05 15:30:45 +01:00
Vít Ondruch
724ffdbb53 Add RPM dependency generators for RubyGems. 2014-03-03 17:54:50 +01:00
Josef Stribny
b038223eae Don't link cert.pem explicitely 2014-02-10 14:17:53 +01:00
Josef Stribny
bbb52ff9a6 Don't link cert.pem explicitely 2014-02-10 14:13:33 +01:00
Vít Ondruch
9fc3f49bd6 Backport fix for floating point issues on i686. 2014-02-08 12:51:30 +01:00
Vít Ondruch
7347c8fd58 Re-enabled "TestProcess#{test_clock_getres_constants,test_clock_gettime_constants}
The issue was fixed with Kernel 3.12.9-300.fc20.armv7hl.
http://bugs.ruby-lang.org/issues/9008
2014-02-06 09:04:54 +01:00
Vít Ondruch
04104b76f3 "Errno::EINVAL: Invalid argument - recvmsg(2)" works with recent kernel.
Tested with Kernel 3.12.8-300.fc20.x86_64.
https://bugs.ruby-lang.org/issues/9124
2014-02-06 09:00:08 +01:00
Vít Ondruch
199081935e Add support for ppc64le arch (rhbz#1053263). 2014-01-15 10:23:01 +01:00
Vít Ondruch
c4c64c841c Add support for ppc64le arch (rhbz#1053263). 2014-01-15 10:16:52 +01:00
Vít Ondruch
e11dee8544 Don't generate documentation on unexpected places. 2014-01-10 16:06:12 +01:00
Vít Ondruch
86a8f5cf5a Bump the release and add changelog. 2014-01-10 15:26:24 +01:00
Vít Ondruch
19ff4992f3 Detect if rubygems are running under rpmbuild.
This allows to install binaryi extensions on suitable place and clears
the .spec files a bit.
2014-01-10 14:53:57 +01:00
Vít Ondruch
02ee7904a4 Rebase patches. 2014-01-06 13:48:46 +01:00
Vít Ondruch
0f37fb5c2c Use %{_rpmconfigdir} for specifying RPM config dir. 2014-01-03 16:21:47 +01:00
Vít Ondruch
97430c9392 Backport regenerated certificates for IMAP tests. 2014-01-03 16:16:42 +01:00
Vít Ondruch
8fc18e146b Re-enable fixed test case. 2014-01-03 16:16:42 +01:00
Vít Ondruch
16f19fee74 Remove obsoleted obsoletes. 2014-01-03 16:16:42 +01:00
Vít Ondruch
7b70466c53 Upgrade to Ruby 2.1.0. 2014-01-03 16:16:42 +01:00
Vít Ondruch
f8855bc5dd Ignore IMAP tests due to expired certificate. 2014-01-03 16:16:42 +01:00
Vít Ondruch
639617a0ed Backport regenerated certificates for IMAP tests. 2014-01-03 14:35:04 +01:00
Vít Ondruch
e7fbfad6e4 Fix RubyGems version (rhbz#1036708). 2014-01-03 14:29:26 +01:00
Vít Ondruch
641dc00b5f Move RPM macros into /usr/lib/rpm/macros.d directory.
This is preferred locatin for RPM macros, since macro files are not
typical configuration files (rhbz#846679).
2013-12-23 17:55:54 +01:00
Vít Ondruch
2b7dccf61f Upgrade to Ruby 2.1.0 (r44362). 2013-12-23 12:49:33 +01:00
Vít Ondruch
0492f50518 Update to Ruby 2.1.0 (r44289). 2013-12-19 16:02:49 +01:00
Vít Ondruch
f84b34dea7 Add git and cmake BR to execute all RubyGems test cases. 2013-12-19 13:52:28 +01:00
Vít Ondruch
453497595c Fix RubyGems test suite. 2013-12-19 12:26:37 +01:00
Vít Ondruch
360d2b99cd Upgrade to Ruby 2.1.0 (r44266). 2013-12-18 11:50:54 +01:00
Vít Ondruch
ef80e1fa9d Allow MD5 in OpenSSL for tests. 2013-12-02 14:12:43 +01:00
Vít Ondruch
eac4c415ba Update to Ruby 2.0.0-p353.
- Allow MD5 in OpenSSL for tests.
- Fix heap overflow in floating point parsing (CVE-2013-4164).
2013-11-27 16:07:24 +01:00
Vít Ondruch
4f8b7ad60d Add remark about the upcomming ARM issue fix. 2013-11-12 13:28:42 +01:00
Vít Ondruch
8f30dbcc0b Workaround several failing tests. 2013-10-09 16:10:06 +02:00
Vít Ondruch
835bcc89f9 Update versions of significantly updated patches. 2013-10-07 13:08:54 +02:00
Vít Ondruch
a03b2d278b Update to Ruby 2.1.0.preview1. 2013-10-07 13:00:25 +02:00
Vít Ondruch
3a0654b687 Move Psych symlinks to vendor dir, to prevent F18 -> F19 upgrade issues (rhbz#988490). 2013-07-30 16:38:59 +02:00
Vít Ondruch
142da175a2 Add forgotten psych.rb link into rubygem-psych to fix "private method `load'
called for Psych:Moduler" error (rhbz#979133).
2013-07-15 09:58:41 +02:00
Vít Ondruch
49825df9b4 Use system-wide cert.pem. 2013-07-12 16:24:11 +02:00
Vít Ondruch
ed87733a22 Fix macros in comments. 2013-07-12 14:55:45 +02:00
Vít Ondruch
1fdf929486 Make symlinks for psych gem to ruby stdlib dirs (rhbz#979133). 2013-07-12 14:55:07 +02:00
Vít Ondruch
b2e10a3b7c Enable test_spawn_too_long_path, since it was fixed by upstream. 2013-07-11 11:04:16 +02:00
Vít Ondruch
127768a63e Enable TestRbConfig, since it was fixed upstream. 2013-07-11 11:03:29 +02:00
Vít Ondruch
8ed2f329ec Fixes multilib conlicts of .gemspec files. 2013-07-11 11:02:00 +02:00
Vít Ondruch
7a3d8e78c6 Fix RubyGems search paths when building gems with native extension (rhbz#979133). 2013-07-04 14:47:55 +02:00
Vít Ondruch
06a69a4fd9 Fix RubyGems version. 2013-07-02 12:46:48 +02:00
Vít Ondruch
e91db1d96b Fix DESTDIR issue once more (rhbz#921650). 2013-07-02 12:18:50 +02:00
Vít Ondruch
1e68c10ca8 Better support for build without configuration (rhbz#977941). 2013-07-02 12:17:15 +02:00
Vít Ondruch
315c4674d5 Add abrt_prelude.rb. 2013-07-01 14:32:54 +02:00
Vít Ondruch
ca9cb26aac Add support for ABRT autoloading. 2013-07-01 13:08:08 +02:00
Vít Ondruch
26512adf37 Update to Ruby 2.0.0-p247 (rhbz#979605).
Fix CVE-2013-4073.
Fix for wrong makefiles created by mkmf (rhbz#921650).
2013-07-01 12:03:01 +02:00
Vít Ondruch
63dd7b41ef Add aarch64 support (rhbz#926463). 2013-05-21 12:49:40 +02:00
Vít Ondruch
1ae6ae5b62 Fix build against OpenSSL with enabled ECC curves. 2013-05-21 11:30:34 +02:00
Vít Ondruch
486dd7a45b The exec_prefix seems to be correct now. 2013-05-20 15:58:21 +02:00
Vít Ondruch
e1890f92f2 Update to Ruby 2.0.0-p195 (rhbz#917374).
Fix object taint bypassing in DL and Fiddle (CVE-2013-2065).
2013-05-20 15:56:24 +02:00
Vít Ondruch
ec047534c7 Bump release and add changelog entries. 2013-04-30 14:43:26 +02:00
Vít Ondruch
c0b18590df Add %{ruby_default_filter} macro. 2013-04-30 14:42:13 +02:00
Vít Ondruch
4f6b4d4bb4 Filter automatically generated provides of private libraries (rhbz#947408). 2013-04-30 14:41:22 +02:00
Vít Ondruch
56d430e19a Introduce %{gem_archdir} macro. 2013-04-30 14:39:52 +02:00
Vít Ondruch
cdb74fa5c8 Fix %{gem_extdir_mri} preparation. 2013-04-23 12:26:48 +02:00
Vít Ondruch
893a03a0cf Move RubyGems macro definition into macros.rubygems file. 2013-04-19 14:48:40 +02:00
Vít Ondruch
cf21f0581e Move the macros definition into macros.ruby file. 2013-04-19 14:47:55 +02:00
Vít Ondruch
bdaca0631c Fix indentation. 2013-03-23 00:41:22 +01:00
Vít Ondruch
61fb1adee2 Fix RbConfig::CONFIG['exec_prefix'] returns empty string (rhbz#924851). 2013-03-22 23:02:04 +01:00
Vít Ondruch
8f31ccc919 Prevent random test failures. 2013-03-22 10:09:09 +01:00
Vít Ondruch
1757c4302b Make Ruby buildable without rubypick. 2013-03-21 13:26:25 +01:00
Mamoru TASAKA
bc925acb7d Don't mark rpm config file as %config (fpc#259) 2013-03-08 16:38:23 +09:00
Vít Ondruch
b0d63dbf0f Avoid "method redefined;" warnings due to modified operating_system.rb.
Fix strange paths created during build of binary gems.
2013-03-05 08:35:05 +01:00
Vít Ondruch
a9ecc1d687 Prevent squash of %gem_install with following line. 2013-02-26 08:41:51 +01:00
Vít Ondruch
57ec2c6da2 Provide to %{ruby_extdir_mri} in preparation for better JRuby support. 2013-02-25 12:49:23 +01:00
Vít Ondruch
eba90976c0 Update to Ruby 2.0.0-p0. 2013-02-25 12:46:22 +01:00
TASAKA Mamoru
405ae9bea2 Move test-unit.gemspec to -libs subpackage for now because rubygems
2.0.0 does not create this
2013-02-25 17:06:45 +09:00
Vít Ondruch
12131c1727 Fix issues with wrong value of Rubygem's shebang introduced in r39267. 2013-02-22 21:54:58 +01:00
Vít Ondruch
eedc10e71b Add missing patch. 2013-02-22 15:28:37 +01:00
Vít Ondruch
7e85d9bf7b Hopefuly replaced by ruby-1.9.3.p195-fix-webrick-tests.patch. 2013-02-22 14:50:53 +01:00
Vít Ondruch
a97a9bad50 Update changelog entry. 2013-02-22 14:36:35 +01:00
Vít Ondruch
19c0535a63 Fix random WEBRick test failures. 2013-02-22 14:32:51 +01:00
Vít Ondruch
565e8feaf2 Fix rubygem-bigdecimal version.
Upstream patch applied, until it is backported for 2.0.0.
2013-02-22 14:32:51 +01:00
Vít Ondruch
9bef4a9bb1 Upgrade to Ruby 2.0.0 (r39387). 2013-02-22 14:32:51 +01:00
Vít Ondruch
65fdd909e8 Change to backport error number. 2013-02-22 14:31:52 +01:00
Vít Ondruch
72e167a6f8 One PPC error was fixed, other was introduced. 2013-02-22 14:31:52 +01:00
Vít Ondruch
58664af968 Adjust the patch to pass test_archdirs(TestRbConfig).
This is hopefuly better aligned with upstream intentions.
2013-02-22 14:31:52 +01:00
Vít Ondruch
deee8f95aa Revert "Add architecture dependency on ruby-libs to ruby-irb."
This reverts commit d3938ffb0a, since it
produces build error:

BuildError: mismatch when analyzing
ruby-irb-2.0.0.0-0.1.r39357.fc19.noarch.rpm, rpmdiff output was:
removed     REQUIRES ruby-libs(x86-64) = 2.0.0.0
added       REQUIRES ruby-libs(x86-32) = 2.0.0.0
2013-02-22 14:31:52 +01:00
Vít Ondruch
111d4ef777 Add reference to upstream ticket possibly removing one patch. 2013-02-22 14:31:52 +01:00
Vít Ondruch
56d12042aa Ensure that rubygem-bigdecimal has higher release then the one from Ruby 1.9.3. 2013-02-22 14:31:51 +01:00
Vít Ondruch
cdd0186c31 Upgrade to Ruby 2.0.0 (r39357). 2013-02-22 14:31:49 +01:00
Vít Ondruch
03c34a7e1f Macros should not be expanded during Ruby build. 2013-02-22 14:31:19 +01:00
Vít Ondruch
bb479d9770 Create the .%{gem_dir} and allow to override gem installation dir. 2013-02-22 14:31:18 +01:00
Vít Ondruch
2ec8c6e8c9 Introduce %gem_install macro. 2013-02-22 14:31:18 +01:00
Vít Ondruch
929678a63d Fix installation of binary gems. 2013-02-22 14:30:38 +01:00
Vít Ondruch
9c188645b4 Upgrade to Ruby 2.0.0 (r39237). 2013-02-22 14:30:38 +01:00
Vít Ondruch
f731780a81 Upgrade to Ruby 2.0.0 (r39217). 2013-02-22 14:29:49 +01:00
Vít Ondruch
14d28871b5 Update rubygems --install-dir patch. 2013-02-22 14:29:14 +01:00
Vít Ondruch
bf92566673 Upgrade to Ruby 2.0.0 (rc2). 2013-02-22 14:29:14 +01:00
Vít Ondruch
10f5cf664b Add architecture dependency on ruby-libs to ruby-irb. 2013-02-22 14:28:45 +01:00
Vít Ondruch
f4e4d19314 Rename the rubygems patch to follow rubygems version. 2013-02-22 14:28:45 +01:00
Vít Ondruch
e811eb017b Fix "gem install --install-dir" behavior. 2013-02-22 14:28:44 +01:00
Vít Ondruch
2096cfc8bc Add ruby(runtime_executable) virtual provide, which is later used by RubyPick. 2013-02-22 14:27:29 +01:00
Vít Ondruch
aa7e2f369c Upgrade to Ruby 2.0.0 (r39070). 2013-02-22 14:26:47 +01:00
Vít Ondruch
53c48319dd Drop versioned ruby(release) dependencies. 2013-02-22 14:26:14 +01:00
Vít Ondruch
48c266a57a Upgrade to Ruby 2.0.0 (r38929). 2013-02-22 14:26:14 +01:00
Vít Ondruch
21e3c8f22f Rename ruby executable to ruby-mri, to be prepared for RubyPick. 2013-02-22 14:25:42 +01:00
Vít Ondruch
8a758df481 Change ruby(abi) -> ruby(release). 2013-02-22 14:25:01 +01:00
Vít Ondruch
96b97dac7f Let Sed escape in original file. 2013-02-22 14:24:17 +01:00
Vít Ondruch
f5934325a4 Upgrade to Ruby 2.0.0 (r38894).
Enable test_stack_size(TestFiber) on PPC, since it was fixed upstream.
2013-02-22 14:24:17 +01:00
Vít Ondruch
e15c1cf2f4 Enable most of the PPC test suite. 2013-02-22 14:23:46 +01:00
Vít Ondruch
eca05efe33 Fix variables provided by ruby.pc (rhbz#789532, comment 8). 2013-02-22 14:23:15 +01:00
Vít Ondruch
2aa9685103 Build against libdb instead of libdb4 (rhbz#894022). 2013-02-22 14:21:45 +01:00
Vít Ondruch
9814bf8bf6 Remove unneeded patch. 2013-02-22 14:20:52 +01:00
Vít Ondruch
465cd2abbf Provide nonversioned packageconfig (rhbz#789532). 2013-02-22 14:20:52 +01:00
Vít Ondruch
a3b6f46f68 Upgrade to Ruby 2.0.0 (r38848). 2013-02-22 14:19:22 +01:00
Vít Ondruch
205b40da9d Bump ruby(abi), since rubygems layout is now incompatible anyway. 2013-02-22 14:18:26 +01:00
Vít Ondruch
cd4b136636 Move rubygems native extension from gems/exts into gems/%{name}.
This allows to provide native extensions for alternative
implementations.
2013-02-22 14:18:26 +01:00
Vít Ondruch
152afa6f24 Add missing ruby-exercise.stp file. 2013-02-22 14:17:53 +01:00
Vít Ondruch
d5af607134 Add example tapset file. 2013-02-22 14:17:53 +01:00
Vít Ondruch
924ee344ab Escape example command in tapset comment. 2013-02-22 14:17:53 +01:00
Vít Ondruch
a91606d4ba Upgrade to Ruby 2.0.0 (r38732). 2013-02-22 14:17:53 +01:00
Vít Ondruch
4574488d84 Add small TODO. 2013-02-22 14:17:04 +01:00
Vít Ondruch
94da38c804 Make Tapset platform independent. 2013-02-22 14:17:04 +01:00
Vít Ondruch
306a9cfda2 Add TapSet for Ruby. 2013-02-22 14:17:04 +01:00
Vít Ondruch
e4abbb6f3e Re-enable tests previously disabled due to bugs. 2013-02-22 14:16:37 +01:00
Vít Ondruch
f558e87b58 Enable SystemTap support. 2013-02-22 14:16:37 +01:00
Vít Ondruch
66b98259c5 Update to Ruby 2.0.0 (r38422). 2013-02-22 14:16:05 +01:00
Vít Ondruch
d64bdcf487 Try to make -doc subpackage noarch again
The new RDoc should resolve the arch dependent issues
(https://github.com/rdoc/rdoc/issues/71).
2013-02-22 14:15:31 +01:00
Vít Ondruch
f700ed56ad Upgrade to Ruby 2.0.0 (r38297). 2013-02-22 14:15:00 +01:00
Vít Ondruch
e6ae5c218d Always add the .gemspec lines before end of block. 2013-02-22 14:14:29 +01:00
Vít Ondruch
f54d04c405 RDoc now depends on JSON. 2013-02-22 14:14:29 +01:00
Vít Ondruch
6c9f7f5273 Update to Ruby 2.0.0 (r38260). 2013-02-22 14:13:49 +01:00
Vít Ondruch
08ec4b6a6c Add TODO to fix ruby_abi for official release. 2013-02-22 14:13:49 +01:00
Vít Ondruch
6951c61aee Update release name to preview2, which is the most actual. 2013-02-22 14:13:48 +01:00
Vít Ondruch
3fa802844a Upgrade to Ruby 2.0.0 (r38184). 2013-02-22 14:13:48 +01:00
Vít Ondruch
dcfbb7a72e Update to Ruby 2.0.0 (r37807). 2013-02-22 14:12:26 +01:00
Vít Ondruch
dc03cfc635 Upgrade to Ruby 2.0.0 (r37773). 2013-02-22 14:12:26 +01:00
Vít Ondruch
b3f2794361 Convert to git formated patch. 2013-02-22 14:11:29 +01:00
Vít Ondruch
6193662f24 Rebase patches. 2013-02-22 14:11:29 +01:00
Vít Ondruch
43f936f6e3 Add references to upstream commits of RubyGems's uninstaller patch. 2013-02-22 14:11:29 +01:00
Vít Ondruch
4fa6c0a0f2 Upgrade to Ruby 2.0.0 (r37589). 2013-02-22 14:11:29 +01:00
Vít Ondruch
3a63053e85 RubyGems needs psych for proper functionality.
It is not 100% clear, if RubyGems are the best place to require psych,
but lets see how it will work. In the future, it might get moved into
ruby-libs if needed, but it doesn't look like it should be there ATM,
since it would be unnecessary payload.
2013-02-22 14:10:48 +01:00
Vít Ondruch
dd816cc3e3 Split Psych into rubygem-psych subpackage. 2013-02-22 14:10:48 +01:00
Vít Ondruch
ed30ceed59 Remove useless dot from Summary. 2013-02-22 14:10:03 +01:00
Vít Ondruch
751f271fc3 Update infrastructure to allow build of versioned releases.
This will allow to build releases such as preview1 or rc1.
2013-02-22 14:10:03 +01:00
Vít Ondruch
4531f33ec9 Upgrade to Ruby 2.0.0 (r37421). 2013-02-22 14:10:03 +01:00
Vít Ondruch
223ff9d8e4 Move NEWS to the main package. 2013-02-22 14:09:07 +01:00
Vít Ondruch
ff0af32c7d Split documentation into -doc subpackage. 2013-02-22 14:08:25 +01:00
Vít Ondruch
0917ed3f90 Update TODO about rubygems-filesystem. 2013-02-22 14:06:35 +01:00
Vít Ondruch
5961c79b1c Upgrade to Ruby 2.0.0 (r36887). 2013-02-22 14:06:34 +01:00
Vít Ondruch
a5d4d8f85d Revert the dependency of ruby-libs on rubygems (rhbz#845011,
rhbz#847482).
2013-02-22 14:05:13 +01:00
Vít Ondruch
ccac016359 ruby-libs must require rubygems (rhbz#45011). 2013-02-22 14:03:07 +01:00
Vít Ondruch
752aa5455a Upgrade to Ruby 2.0.0 (r36213). 2013-02-22 14:01:48 +01:00
Vít Ondruch
6aa88d69ae Upgrade to Ruby 2.0.0 (r36169). 2013-02-22 14:01:48 +01:00
Vít Ondruch
95c97f6ea7 Enable tests and small ARM tweaks.
The most of the tests are functional now. The only exception is the one
test failing on armv7. Not sure about the PPC though.
2013-02-22 14:01:48 +01:00
Vít Ondruch
54ae414367 Remove superfluous slashes. 2013-02-22 13:58:52 +01:00
Vít Ondruch
dc683b73ac Patch updated to contain !<verconf>! mark.
Moves the RUBYGEMS_DIR macro definition into verconf.h. This change was
requested by nobu at https://bugs.ruby-lang.org/issues/5617
2013-02-22 13:58:52 +01:00
Vít Ondruch
4efe111a88 Upgrade to Ruby 2.0.0 (r35922). 2013-02-22 13:58:52 +01:00
Vít Ondruch
ea3cb65d83 Upgrade to Ruby 2.0.0 (r35368). 2013-02-22 13:58:52 +01:00
Vít Ondruch
7fe201b148 Initial .spec for Ruby 2.0.0. 2013-02-22 13:55:10 +01:00
Mamoru TASAKA
7dff78b417 fix rdoc version 2013-02-11 16:10:19 +09:00
Mamoru TASAKA
51a6d3593c Update to 1.9.3 p385 2013-02-11 15:55:43 +09:00
Mamoru Tasaka
957db76127 Update to 1.9.3 p374
- Fix provided variables in pkgconfig (bug 789532:
  Vít Ondruch <vondruch@redhat.com>)
2013-01-20 01:44:27 +09:00
TASAKA Mamoru
8703f41ded Provide non-versioned pkgconfig file (bug 789532)
- Use db5 on F-19 (bug 894022)

- Backport fix for the upstream PR7629, save the proc made from the given block
  (bug 895173)
2013-01-18 21:42:55 +09:00
Mamoru Tasaka
1d3888b468 Backport fix for the upstream PR7629, save the proc made from the given block
(bug 895173)
2013-01-16 23:23:01 +09:00
Mamoru Tasaka
169a9110ad Kill upstream-applied patch 2013-01-02 16:18:38 +09:00
Mamoru Tasaka
a8441ce179 Update to 1.9.3.362 2013-01-02 16:07:42 +09:00
Mamoru Tasaka
58dbcf70fa Update to 1.9.3.362 2013-01-02 16:06:59 +09:00
Mamoru Tasaka
3e2b3a9d7a Once fix merge conflict 2013-01-02 16:02:04 +09:00
Vít Ondruch
e7ad4decdb Fix bogus dates in %changelog reported by rpm-4.11. 2012-12-06 13:42:40 +01:00
Bohuslav Kabrda
71a6c68957 Disable one test on ARM until upstream confirms that the patch is ok 2012-12-03 15:36:44 +01:00
Mamoru Tasaka
e546e8e8c8 Skip test_str_crypt (on rawhide) for now (upstream bug 7312) 2012-11-11 00:03:25 +09:00
Mamoru Tasaka
7eabfd2d54 release++ 2012-11-10 16:39:21 +09:00
Mamoru Tasaka
cd63825ab4 ignore some network related tests 2012-11-10 16:38:17 +09:00
Mamoru Tasaka
0ce13e852b Merge remote-tracking branch 'origin/master' into f18 2012-11-10 15:06:58 +09:00
Mamoru Tasaka
72dd691407 20 is already used, use 21 2012-11-10 15:03:38 +09:00
Mamoru Tasaka
b42822b569 Merge remote-tracking branch 'origin/master' into f18 2012-11-10 14:30:15 +09:00
Mamoru Tasaka
8e5c4b1bb4 fix changelog 2012-11-10 14:29:23 +09:00
Mamoru Tasaka
53c4a0f73f Merge remote-tracking branch 'origin/master' into f18 2012-11-10 14:15:10 +09:00
Mamoru Tasaka
97857e815d Update to 1.9.3.327
- Fix Hash-flooding DoS vulnerability on MurmurHash function
  (CVE-2012-5371)
2012-11-10 14:14:28 +09:00
Mamoru Tasaka
773f36cff7 Merge remote-tracking branch 'origin/master' into f18 2012-10-13 14:54:34 +09:00
Mamoru Tasaka
352f32d3d1 Update to 1.9.3 p286
- Don't create files when NUL-containing path name is passed
  (bug 865940)
2012-10-13 14:53:07 +09:00
Mamoru Tasaka
df7d22b1d3 Merge remote-tracking branch 'origin/master' into f18 2012-10-04 21:55:44 +09:00
Mamoru Tasaka
9f5278c112 forgot to add patch... 2012-10-04 21:55:27 +09:00
Mamoru Tasaka
98f988e9c6 Merge remote-tracking branch 'origin/master' into f18 2012-10-04 21:54:03 +09:00
Mamoru Tasaka
cde07425ae Patch from trunk for CVE-2012-4464, CVE-2012-4466 2012-10-04 21:51:59 +09:00
Vít Ondruch
52c949474b Merge branch 'master' into f18 2012-09-07 09:33:43 +02:00
Vít Ondruch
2498f3d3fb Added bugzilla issue number. 2012-09-07 09:33:03 +02:00
Vít Ondruch
cf9050e104 Merge branch 'master' into f18 2012-09-06 14:44:03 +02:00
Vít Ondruch
dcc9bf3235 Split documentation into -doc subpackage. 2012-09-06 14:43:34 +02:00
Vít Ondruch
fe62b1ec08 Merge branch 'master' into f18 2012-08-14 14:33:05 +02:00
Vít Ondruch
65cb15b936 Revert the dependency of ruby-libs on rubygems (rhbz#845011,
rhbz#847482).
2012-08-14 12:45:42 +02:00
Vít Ondruch
e10d820c6f Fixed changelog rhbz reference. 2012-08-01 17:26:55 +02:00
Vít Ondruch
7ade1a070e ruby-libs must require rubygems (rhbz#45011). 2012-08-01 17:25:26 +02:00
Dennis Gilmore
b31f0b7e9d - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild 2012-07-21 12:15:41 -05:00
Vít Ondruch
16dead84af Enable tests and small ARM tweaks.
The most of the tests are functional now. The only exception is the one
test failing on armv7. Not sure about the PPC though.
2012-06-14 16:27:51 +02:00
Bohuslav Kabrda
475ac39285 Make the bigdecimal gem a runtime dependency of Ruby. 2012-06-11 10:20:53 +02:00
Bohuslav Kabrda
317a62aceb Make symlinks for bigdecimal and io-console gems to ruby stdlib dirs (RHBZ 829209). 2012-06-11 09:29:11 +02:00
Bohuslav Kabrda
7156dc7e9b Fix license to contain Public Domain.
- macros.ruby now contains unexpanded macros.
2012-05-30 13:46:44 +02:00
Mamoru Tasaka
cb8843b516 Bump release 2012-04-22 16:19:25 +09:00
Vít Ondruch
1cc853bb60 Update to Ruby 1.9.3-p194. 2012-04-20 15:01:52 +02:00
Vít Ondruch
328c18e61f Update test suite bug description and execution. 2012-04-19 10:36:30 +02:00
Vít Ondruch
82e6513e5e Remove superfluous slashes. 2012-04-19 10:32:38 +02:00
Karsten Hopp
f56e2b573d disable check on ppc(64), RH bugzilla 803698 2012-04-09 19:01:33 +02:00
Peter Robinson
91599c23af Temporarily disable make check on ARM until it's fixed upstream. Tracked in RHBZ 789410 2012-02-29 14:24:37 +00:00
Vít Ondruch
7844acce6d Simplify seds. 2012-02-22 13:13:08 +01:00
Vít Ondruch
7ba1fecec8 Use version macro for pkg-config file. 2012-02-21 21:51:01 +01:00
Vít Ondruch
ef4f0ea417 Upgrade to Ruby 1.9.3-p125. 2012-02-21 12:15:40 +01:00
Mamoru Tasaka
70cdc79878 Make mkmf.rb verbose by default 2012-01-30 06:27:19 +09:00
Vít Ondruch
c3215b7372 Relax dependencies to allow external updates of bundled gems. 2012-01-26 11:52:47 +01:00
Vít Ondruch
1fd7d3cfa1 Order changelog. 2012-01-18 15:59:20 +01:00
Vít Ondruch
117278abd0 Update to Ruby 1.9.3. 2012-01-18 15:54:01 +01:00
Dennis Gilmore
2272bb7315 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild 2012-01-13 20:58:52 -06:00
Mamoru Tasaka
4830bd0241 Fix changelog 2011-12-30 00:38:49 +09:00
Mamoru Tasaka
139d71a9fb Update to 1.8.7p352
Randomize hash on process startup (CVE-2011-4815, bug 750564)
2011-12-30 00:36:28 +09:00
Mamoru Tasaka
b959b0277f Fix sed line 2011-11-20 03:34:59 +09:00
Mamoru Tasaka
87d17f048e F-17: kill gdbm support for now due to licensing compatibility issue 2011-11-20 02:01:00 +09:00
Mamoru Tasaka
473f80e480 F-17: rebuild against new gdbm 2011-10-01 00:13:51 +09:00
Mamoru Tasaka
ace4eca586 Update to 1.8.7 p352
CVE-2011-2686 is fixed in this version (bug 722415)
Update ext/tk to the latest git
Remove duplicate path entry (bug 718695)
2011-07-16 10:31:19 +09:00
Mamoru Tasaka
13bbaded90 Once fix FTBFS (bug 716021) 2011-07-14 01:16:14 +09:00
Dennis Gilmore
afa951ce79 normalise arm cpus to arm 2011-07-11 20:18:28 -05:00
Mamoru Tasaka
7fb6341799 Own %{_normalized_cpu}-%{_target_os} directory (bug 708816) 2011-05-30 23:34:14 +09:00
Mamoru Tasaka
156edf52c6 Update to 1.8.7 p334 2011-02-19 19:33:28 +09:00
Dennis Gilmore
edf17a3a09 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild 2011-02-09 02:59:52 -06:00
Dennis Gilmore
1d47f9e33b * Sun Jan 02 2011 Dennis Gilmore <dennis@ausil.us> - 1.8.7.330-2
- nomalise the 32 bit sparc archs to sparc
2011-01-02 22:31:47 -06:00
Mamoru Tasaka
ca286f57ff - Update to 1.8.7 p330
- ext/tk updated to the newest header
2010-12-26 03:12:28 +09:00
Mamoru Tasaka
8a9a71d5bd - Avoid multilib conflict on -libs subpackage (bug 649174) 2010-11-04 04:25:56 +09:00
Mamoru Tasaka
1f8d8f93ae - Update to 1.8.7.302
- CVE-2010-0541 (bug 587731) is fixed in this version
- Update ext/tk to the latest head
2010-08-23 02:26:59 +09:00
Mamoru Tasaka
cd6ff90af5 * Mon Aug 2 2010 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1.8.7.299-5
- More cleanup of spec file, expecially for rpmlint issue
- build ri files in %build
2010-08-02 02:37:54 +09:00
Fedora Release Engineering
eaf2933aa8 dist-git conversion 2010-07-29 11:44:14 +00:00
Mamoru Tasaka
84e77dfb4d Update to ruby 1.8.7 patchlevel 299 2010-07-26 19:14:51 +00:00
Mamoru Tasaka
ca9335f385 - Retry for bug 559158, Simplify the OpenSSL::Digest class pull more change
commits from ruby_1_8 branch
2010-05-18 17:42:34 +00:00
Mamoru Tasaka
d5ad16c60d fix release 2010-05-17 12:51:24 +00:00
Mamoru Tasaka
0ad7b67678 - Patch36 (ruby-1.8.x-RHASH_SIZE-rb_hash_lookup-def.patch) also backport
rb_hash_lookup definition (bug 592936)
2010-05-17 12:50:20 +00:00
Mamoru Tasaka
75c801898d - ruby-1.8.x-null-class-must-be-Qnil.patch (bug 530407)
- Recreate some patches using upstream svn when available, and add some
    comments for patches
Tue May 11 2010 Mamoru Tasaka <mtasaka@ioa.s.u-tokyo.ac.jp> - 1.8.6.399-2
- tcltk: Give up using potentially unmaintained ruby_1_8_6 branch and
    instead completely replace with ruby_1_8 branch head (at this time,
    using rev 27738) (seems to fix 560053, 590503)
- Fix Japanese encoding strings under ruby-tcltk/ext/tk/sample/
2010-05-14 19:10:53 +00:00
Mamoru Tasaka
e68a717cca - Update to 1.8.6 p 399 (bug 579675)
- Patch to fix gc bug causing open4 crash (bug 580993)
2010-04-26 19:02:49 +00:00
Mamoru Tasaka
0ab1a34ed9 - F-14: rebuild against new gdbm 2010-03-11 15:42:54 +00:00
Mamoru Tasaka
e8a9947bd4 Kill patch 34 (just commit for now) 2010-01-28 07:58:41 +00:00
Jeroen van Meeuwen
7c7fbd4239 1.8.6.388-8 2010-01-27 14:18:18 +00:00
Jeroen van Meeuwen
10bb15baa8 1.8.6.388-7 2010-01-27 12:41:43 +00:00
Jeroen van Meeuwen
bf4f952440 1.8.6.388-6 2010-01-21 00:15:48 +00:00
Akira TAGOH
fed6f04781 - Add conditional for RHEL. 2010-01-18 08:32:37 +00:00
Mamoru Tasaka
3b5ddce238 - CVE-2009-4492 ruby WEBrick log escape sequence (bug 554485) 2010-01-12 19:02:42 +00:00
Mamoru Tasaka
bab6007ffb - Change mkmf.rb to use LIBRUBYARG_SHARED so that have_library() works
without libruby-static.a (bug 428384)
- And move libruby-static.a to -static subpackage
2009-12-09 09:57:10 +00:00
Bill Nottingham
fd1c994027 Fix typo that causes a failure to update the common directory. (releng
#2781)
2009-11-25 23:13:22 +00:00
Mamoru Tasaka
c6c75f53c5 - Use bison to regenerate parse.c to keep the original format of error
messages (bug 530275 comment 4)
2009-10-29 16:39:34 +00:00
Mamoru Tasaka
94f00da846 - Patch so that irb saves its history (bug 518584, ruby issue 1556) 2009-10-25 15:08:29 +00:00
Mamoru Tasaka
35188975c5 - Update to 1.8.6 patchlevel 383 (bug 520063) 2009-10-23 17:25:54 +00:00
Mamoru Tasaka
abf129c49f - Much better idea for Patch31 provided by Akira TAGOH <tagoh@redhat.com> 2009-10-14 15:24:31 +00:00
Mamoru Tasaka
bbad66ed0a - Fix the search path of ri command for ri manuals installed with gem (bug
528787)
2009-10-13 18:03:03 +00:00
Tomáš Mráz
9a33f293c9 - Rebuild against new openssl 2009-08-26 14:06:45 +00:00
Tomáš Mráz
22eefaaac3 - correct fix for sk2ary 2009-08-26 10:31:08 +00:00
Tomáš Mráz
209e5c2542 - fix openssl-1.0 API incompatibility 2009-08-26 10:11:58 +00:00
Tomáš Mráz
3bbdfef714 - Rebuild against new openssl 2009-08-26 09:49:47 +00:00
Mamoru Tasaka
3cd55689a5 wait until tk 8.5.7 is rebuilt 2009-07-23 16:38:15 +00:00
Mamoru Tasaka
36fd38003b - Make sure that readline.so is linked against readline 5 because Ruby is
under GPLv2
2009-07-23 14:57:46 +00:00
Jeroen van Meeuwen
6d07108771 1.8.6.369-1 2009-06-23 12:39:02 +00:00
Jeroen van Meeuwen
cd6aa0e02c 1.8.6.368-2 2009-06-20 17:50:59 +00:00
Jeroen van Meeuwen
c11147cfd2 1.8.6.368-1 2009-05-31 08:42:06 +00:00
Mamoru Tasaka
168ffcfeea Fix wrong macros definition 2009-05-20 23:36:22 +00:00
45 changed files with 4582 additions and 1505 deletions

View File

@ -1,5 +0,0 @@
ruby-1.8.6-p287.tar.bz2
ruby-refm-rdp-1.8.1-ja-html.tar.gz
rubyfaq-990927.tar.gz
rubyfaq-jp-990927.tar.gz
ruby-refm-rdp-1.8.2-ja-html.tar.gz

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
/*/
/ruby-2.*.tar.bz2
/ruby-2.*.tar.xz
/*.rpm

View File

@ -1,21 +0,0 @@
# Makefile for source rpm: ruby
# $Id: Makefile,v 1.1 2004/09/09 11:54:27 cvsdist Exp $
NAME := ruby
SPECFILE = $(firstword $(wildcard *.spec))
define find-makefile-common
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
endef
MAKEFILE_COMMON := $(shell $(find-makefile-common))
ifeq ($(MAKEFILE_COMMON),)
# attempt a checkout
define checkout-makefile-common
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
endef
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
endif
include $(MAKEFILE_COMMON)

View File

@ -1,3 +0,0 @@
ruby-1_8_6_287-4_fc10:HEAD:ruby-1.8.6.287-4.fc10.src.rpm:1237096558
ruby-1_8_6_287-5_fc10:HEAD:ruby-1.8.6.287-5.fc10.src.rpm:1237096677
ruby-1_8_6_287-7_fc11:HEAD:ruby-1.8.6.287-7.fc11.src.rpm:1237351812

488
irb.1
View File

@ -1,488 +0,0 @@
.\" DO NOT MODIFY THIS FILE! it was generated by rd2
.TH irb-beta 1 "May 2001"
.SH What is irb?
.PP
irb stands for `interactive ruby'. irb is a tool to execute interactively
ruby expressions read from stdin.
.SH Invoking
.PP
.nf
\& % ruby \-r irb \-e0
\& % irb
.fi
Either of the aboves. In the former style, options can be specified
as follows:
.nf
\& % ruby \-r irb \-e0 \-\- \-v
.fi
.SH Usage
.PP
Use of irb is easy if you know ruby. Executing irb, prompts are
displayed as follows. Then, enter expression of ruby. A input is
executed when it is syntacticaly completed.
.nf
\& dim% irb
\& irb(main):001:0> 1+2
\& 3
\& irb(main):002:0> class Foo
\& irb(main):003:1> def foo
\& irb(main):004:2> print 1
\& irb(main):005:2> end
\& irb(main):006:1> end
\& nil
\& irb(main):007:0>
.fi
And, Readline extesion module can be used with irb. Using Readline
is the standard default action if Readline is installed.
.SH Command line option
.PP
.nf
\& irb.rb [options] file_name opts
\& options:
\& \-f suppress read ~/.irbrc
\& \-m bc mode (fraction or matrix are available)
\& \-d set $DEBUG to true (same as `ruby \-d')
\& \-r load\-module same as `ruby \-r'
\& \-\-inspect uses `inspect' for output (the default except bc mode)
\& \-\-noinspect doesn't uses inspect for output
\& \-\-readline uses Readline extension module
\& \-\-noreadline doesn't use Readline extension module
\& \-\-prompt prompt\-mode
\& \-\-prompt\-mode prompt\-mode
.fi
.nf
\& switches prompt mode. Pre\-defined prompt modes are
\& `defalut', `simple', `xmp' and `inf\-ruby'
.fi
.nf
\& \-\-inf\-ruby\-mode uses prompt appreciate for inf\-ruby\-mode on emacs.
.fi
.nf
\& Suppresses \-\-readline.
.fi
.nf
\& \-\-simple\-prompt simple prompt mode
\& \-\-noprompt no prompt
\& \-\-tracer display trace for each execution of commands.
\& \-\-back\-trace\-limit n
.fi
.nf
\& displayes backtrace top n and tail n. The default
\& value is 16.
.fi
.nf
\& \-\-irb_debug n sets internal debug level to n (It shouldn't be used)
\& \-v, \-\-version prints the version of irb
.fi
.SH Configurations
.PP
irb reads `~/.irbrc' when it is invoked. If `~/.irbrb' doesn't exist
irb try to read in the order `.irbrc', `irb.rc', `_irbrc' then `$irbrc'.
The following is altanative to the command line option. To use them
type as follows in an irb session.
.nf
\& IRB.conf[:IRB_NAME]="irb"
\& IRB.conf[:MATH_MODE]=false
\& IRB.conf[:USE_TRACER]=false
\& IRB.conf[:USE_LOADER]=false
\& IRB.conf[:IGNORE_SIGINT]=true
\& IRB.conf[:IGNORE_EOF]=false
\& IRB.conf[:INSPECT_MODE]=nil
\& IRB.conf[:IRB_RC] = nil
\& IRB.conf[:BACK_TRACE_LIMIT]=16
\& IRB.conf[:USE_LOADER] = false
\& IRB.conf[:USE_READLINE] = nil
\& IRB.conf[:USE_TRACER] = false
\& IRB.conf[:IGNORE_SIGINT] = true
\& IRB.conf[:IGNORE_EOF] = false
\& IRB.conf[:PROMPT_MODE] = :DEFALUT
\& IRB.conf[:PROMPT] = {...}
\& IRB.conf[:DEBUG_LEVEL]=0
\& IRB.conf[:VERBOSE]=true
.fi
.SH Customizing prompt
.PP
To costomize the prompt you set a variable
.nf
\& IRB.conf[:PROMPT]
.fi
For example, describe as follows in `.irbrc'.
.nf
\& IRB.conf[:PROMPT][:MY_PROMPT] = { # name of prompt mode
\& :PROMPT_I => nil, # normal prompt
\& :PROMPT_S => nil, # prompt for continuated strings
\& :PROMPT_C => nil, # prompt for continuated statement
\& :RETURN => " ==>%s\\n" # format to return value
\& }
.fi
Then, invoke irb with the above prompt mode by
.nf
\& % irb \-\-prompt my\-prompt
.fi
Or add the following in `.irbrc'.
.nf
\& IRB.conf[:PROMPT_MODE] = :MY_PROMPT
.fi
Constants PROMPT_I, PROMPT_S and PROMPT_C specifies the format.
In the prompt specification, some special strings are available.
.nf
\& %N command name which is running
\& %m to_s of main object (self)
\& %M inspect of main object (self)
\& %l type of string(", ', /, ]), `]' is inner %w[...]
\& %NNi indent level. NN is degits and means as same as printf("%NNd").
\& It can be ommited
\& %NNn line number.
\& %% %
.fi
For instance, the default prompt mode is defined as follows:
IRB.conf[:PROMPT_MODE][:DEFAULT] = {
.TP
.fi
.B
PROMPT_I => "%N(%m):%03n:%i> ",
.TP
.fi
.B
PROMPT_S => "%N(%m):%03n:%i%l ",
.TP
.fi
.B
PROMPT_C => "%N(%m):%03n:%i* ",
.TP
.fi
.B
RETURN => "%s\\n"
}
RETURN is used to printf.
.SH Configurating subirb
.PP
The command line option or IRB.conf specify the default behavior of
(sub)irb. On the other hand, each conf of in the next sction `6. Command'
is used to individually configurate (sub)irb.
If proc is set to IRB.conf[:IRB_RC], its subirb will be invoked after
execution of that proc under giving the context of irb as its
aregument. By this mechanism each subirb can be configurated.
.SH Command
.PP
For irb commands, both simple name and `irb_'\-prefixed name are prepared.
.TP
.fi
.B
exit, quit, irb_exit
Quits (sub)irb.
if you've done cb (see below), exit from the binding mode.
.TP
.fi
.B
conf, irb_context
Displays current configuration. Modifing the configuration is
achieved by sending message to `conf'.
.TP
.fi
.B
conf.back_trace_limit
Sets display lines of backtrace as top n and tail n.
The default value is 16.
.TP
.fi
.B
conf.debug_level = N
Sets debug level of irb.
.TP
.fi
.B
conf.ignore_eof = true/false
Whether ^D (control\-d) will be ignored or not.
If false is set, ^D means quit.
.TP
.fi
.B
conf.ignore_sigint= true/false
Whether ^C (control\-c) will be ignored or not.
If false is set, ^D means quit. If true,
.nf
\& during input: cancel inputing then return to top level.
\& during execute: abondon current execution.
.fi
.TP
.fi
.B
conf.inf_ruby_mode = true/false
Whether inf\-ruby\-mode or not. The default value is false.
.TP
.fi
.B
conf.inspect_mode = true/false/nil
Specifies inspect mode.
true: display inspect
false: display to_s
nil: inspect mode in non math mode,
.nf
\& non inspect mode in math mode.
.fi
.TP
.fi
.B
conf.irb_level
The level of cb.
.TP
.fi
.B
conf.math_mode
Whether bc mode or not.
.TP
.fi
.B
conf.use_loader = true/false
Whether irb's own file reader method is used when load/require or not.
This mode is globaly affected (irb wide).
.TP
.fi
.B
conf.prompt_c
prompt for a continuating statement (e.g, immediately after of `if')
.TP
.fi
.B
conf.prompt_i
standard prompt
.TP
.fi
.B
conf.prompt_s
prompt for a continuating string
.TP
.fi
.B
conf.rc
Whether ~/.irbrc is read or not.
.TP
.fi
.B
conf.use_prompt = true/false
Prompting or not.
.TP
.fi
.B
conf.use_readline = true/false/nil
Whether readline is used or not.
true: uses
false: doen't use
nil: intends to use readline except for inf\-reuby\-mode (default)
.TP
.fi
.B
conf.verbose=T/F
Whether verbose messages are display or not.
.TP
.fi
.B
cb, irb_change_binding [obj]
Enter new binding which has a distinct scope of local variables.
If obj is given, obj will be self.
.TP
.fi
.B
irb [obj]
Invoke subirb. If obj is given, obj will be self.
.TP
.fi
.B
jobs, irb_jobs
List of subirb
.TP
.fi
.B
fg n, irb_fg n
Switch into specified subirb. The following is candidates of n:
.nf
\& irb number
\& thhread
\& irb object
\& self(obj which is specified of irb obj)
.fi
.TP
.fi
.B
kill n, irb_kill n
Kill subirb. The means of n is as same as the case of irb_fg.
.SH System variable
.PP
.nf
\& _ The latest value of evaluation (it is local)
.fi
.SH Session Example
.PP
.nf
\& dim% ruby irb.rb
\& irb(main):001:0> irb # invoke subirb
\& irb#1(main):001:0> jobs # list of subirbs
\& #0\->irb on main (#<Thread:0x400fb7e4> : stop)
\& #1\->irb#1 on main (#<Thread:0x40125d64> : running)
\& nil
\& irb#1(main):002:0> fg 0 # switch job
\& nil
\& irb(main):002:0> class Foo;end
\& nil
\& irb(main):003:0> irb Foo # invoke subirb which has the
.fi
.nf
\& # context of Foo
.fi
.nf
\& irb#2(Foo):001:0> def foo # define Foo#foo
\& irb#2(Foo):002:1> print 1
\& irb#2(Foo):003:1> end
\& nil
\& irb#2(Foo):004:0> fg 0 # switch job
\& nil
\& irb(main):004:0> jobs # list of job
\& #0\->irb on main (#<Thread:0x400fb7e4> : running)
\& #1\->irb#1 on main (#<Thread:0x40125d64> : stop)
\& #2\->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
\& nil
\& irb(main):005:0> Foo.instance_methods # Foo#foo is defined asurely
\& ["foo"]
\& irb(main):006:0> fg 2 # switch job
\& nil
\& irb#2(Foo):005:0> def bar # define Foo#bar
\& irb#2(Foo):006:1> print "bar"
\& irb#2(Foo):007:1> end
\& nil
\& irb#2(Foo):010:0> Foo.instance_methods
\& ["bar", "foo"]
\& irb#2(Foo):011:0> fg 0
\& nil
\& irb(main):007:0> f = Foo.new
\& #<Foo:0x4010af3c>
\& irb(main):008:0> irb f # invoke subirb which has the
.fi
.nf
\& # context of f (instance of Foo)
.fi
.nf
\& irb#3(#<Foo:0x4010af3c>):001:0> jobs
\& #0\->irb on main (#<Thread:0x400fb7e4> : stop)
\& #1\->irb#1 on main (#<Thread:0x40125d64> : stop)
\& #2\->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
\& #3\->irb#3 on #<Foo:0x4010af3c> (#<Thread:0x4010a1e0> : running)
\& nil
\& irb#3(#<Foo:0x4010af3c>):002:0> foo # evaluate f.foo
\& 1nil
\& irb#3(#<Foo:0x4010af3c>):003:0> bar # evaluate f.bar
\& barnil
\& irb#3(#<Foo:0x4010af3c>):004:0> kill 1, 2, 3# kill job
\& nil
\& irb(main):009:0> jobs
\& #0\->irb on main (#<Thread:0x400fb7e4> : running)
\& nil
\& irb(main):010:0> exit # exit
\& dim%
.fi
.SH Restrictions
.PP
Because irb evaluates the inputs immediately after the imput is
syntactically completed, irb gives slight different result than
directly use ruby. Known difference is pointed out here.
.SH Declaration of the local variable
.PP
The following causes an error in ruby:
.nf
\& eval "foo = 0"
\& foo
\& \-\-
\& \-:2: undefined local variable or method `foo' for #<Object:0x40283118> (NameError)
\& \-\-\-
\& NameError
.fi
Though, the above will successfully done by irb.
.nf
\& >> eval "foo = 0"
.fi
.nf
\& => 0
\& >> foo
\& => 0
.fi
Ruby evaluates a code after reading entire of code and determination
of the scope of local variables. On the other hand, irb do
immediately. More precisely, irb evaluate at first
.nf
\& evel "foo = 0"
.fi
then foo is defined on this timing. It is because of this
incompatibility.
If you'd like to detect those differences, begin...end can be used:
.nf
\& >> begin
\& ?> eval "foo = 0"
\& >> foo
\& >> end
\& NameError: undefined local variable or method `foo' for #<Object:0x4013d0f0>
\& (irb):3
\& (irb_local_binding):1:in `eval'
.fi
.SH Here\-document
.PP
Implementation of Here\-document is incomplete.
.SH Symbol
.PP
Irb can not always recognize a symbol as to be Symbol. Concretely, an
expression have completed, however Irb regard it as continuation line.

303
libruby.stp Normal file
View File

@ -0,0 +1,303 @@
/* SystemTap tapset to make it easier to trace Ruby 2.0
*
* All probes provided by Ruby can be listed using following command
* (the path to the library must be adjuste appropriately):
*
* stap -L 'process("@LIBRARY_PATH@").mark("*")'
*/
/**
* probe ruby.array.create - Allocation of new array.
*
* @size: Number of elements (an int)
* @file: The file name where the method is being called (string)
* @line: The line number where the method is being called (int)
*/
probe ruby.array.create =
process("@LIBRARY_PATH@").mark("array__create")
{
size = $arg1
file = user_string($arg2)
line = $arg3
}
/**
* probe ruby.cmethod.entry - Fired just before a method implemented in C is entered.
*
* @classname: Name of the class (string)
* @methodname: The method about bo be executed (string)
* @file: The file name where the method is being called (string)
* @line: The line number where the method is being called (int)
*/
probe ruby.cmethod.entry =
process("@LIBRARY_PATH@").mark("cmethod__entry")
{
classname = user_string($arg1)
methodname = user_string($arg2)
file = user_string($arg3)
line = $arg4
}
/**
* probe ruby.cmethod.return - Fired just after a method implemented in C has returned.
*
* @classname: Name of the class (string)
* @methodname: The executed method (string)
* @file: The file name where the method is being called (string)
* @line: The line number where the method is being called (int)
*/
probe ruby.cmethod.return =
process("@LIBRARY_PATH@").mark("cmethod__return")
{
classname = user_string($arg1)
methodname = user_string($arg2)
file = user_string($arg3)
line = $arg4
}
/**
* probe ruby.find.require.entry - Fired when require starts to search load
* path for suitable file to require.
*
* @requiredfile: The name of the file to be required (string)
* @file: The file name where the method is being called (string)
* @line: The line number where the method is being called (int)
*/
probe ruby.find.require.entry =
process("@LIBRARY_PATH@").mark("find__require__entry")
{
requiredfile = user_string($arg1)
file = user_string($arg2)
line = $arg3
}
/**
* probe ruby.find.require.return - Fired just after require has finished
* search of load path for suitable file to require.
*
* @requiredfile: The name of the file to be required (string)
* @file: The file name where the method is being called (string)
* @line: The line number where the method is being called (int)
*/
probe ruby.find.require.return =
process("@LIBRARY_PATH@").mark("find__require__return")
{
requiredfile = user_string($arg1)
file = user_string($arg2)
line = $arg3
}
/**
* probe ruby.gc.mark.begin - Fired when a GC mark phase is about to start.
*
* It takes no arguments.
*/
probe ruby.gc.mark.begin =
process("@LIBRARY_PATH@").mark("gc__mark__begin")
{
}
/**
* probe ruby.gc.mark.end - Fired when a GC mark phase has ended.
*
* It takes no arguments.
*/
probe ruby.gc.mark.end =
process("@LIBRARY_PATH@").mark("gc__mark__end")
{
}
/**
* probe ruby.gc.sweep.begin - Fired when a GC sweep phase is about to start.
*
* It takes no arguments.
*/
probe ruby.gc.sweep.begin =
process("@LIBRARY_PATH@").mark("gc__sweep__begin")
{
}
/**
* probe ruby.gc.sweep.end - Fired when a GC sweep phase has ended.
*
* It takes no arguments.
*/
probe ruby.gc.sweep.end =
process("@LIBRARY_PATH@").mark("gc__sweep__end")
{
}
/**
* probe ruby.hash.create - Allocation of new hash.
*
* @size: Number of elements (int)
* @file: The file name where the method is being called (string)
* @line: The line number where the method is being called (int)
*/
probe ruby.hash.create =
process("@LIBRARY_PATH@").mark("hash__create")
{
size = $arg1
file = user_string($arg2)
line = $arg3
}
/**
* probe ruby.load.entry - Fired when calls to "load" are made.
*
* @loadedfile: The name of the file to be loaded (string)
* @file: The file name where the method is being called (string)
* @line: The line number where the method is being called (int)
*/
probe ruby.load.entry =
process("@LIBRARY_PATH@").mark("load__entry")
{
loadedfile = user_string($arg1)
file = user_string($arg2)
line = $arg3
}
/**
* probe ruby.load.return - Fired just after require has finished
* search of load path for suitable file to require.
*
* @loadedfile: The name of the file that was loaded (string)
*/
probe ruby.load.return =
process("@LIBRARY_PATH@").mark("load__return")
{
loadedfile = user_string($arg1)
}
/**
* probe ruby.method.entry - Fired just before a method implemented in Ruby is entered.
*
* @classname: Name of the class (string)
* @methodname: The method about bo be executed (string)
* @file: The file name where the method is being called (string)
* @line: The line number where the method is being called (int)
*/
probe ruby.method.entry =
process("@LIBRARY_PATH@").mark("method__entry")
{
classname = user_string($arg1)
methodname = user_string($arg2)
file = user_string($arg3)
line = $arg4
}
/**
* probe ruby.method.return - Fired just after a method implemented in Ruby has returned.
*
* @classname: Name of the class (string)
* @methodname: The executed method (string)
* @file: The file name where the method is being called (string)
* @line: The line number where the method is being called (int)
*/
probe ruby.method.return =
process("@LIBRARY_PATH@").mark("method__return")
{
classname = user_string($arg1)
methodname = user_string($arg2)
file = user_string($arg3)
line = $arg4
}
/**
* probe ruby.object.create - Allocation of new object.
*
* @classname: Name of the class (string)
* @file: The file name where the method is being called (string)
* @line: The line number where the method is being called (int)
*/
probe ruby.object.create =
process("@LIBRARY_PATH@").mark("object__create")
{
classname = user_string($arg1)
file = user_string($arg2)
line = $arg3
}
/**
* probe ruby.parse.begin - Fired just before a Ruby source file is parsed.
*
* @parsedfile: The name of the file to be parsed (string)
* @parsedline: The line number of beginning of parsing (int)
*/
probe ruby.parse.begin =
process("@LIBRARY_PATH@").mark("parse__begin")
{
parsedfile = user_string($arg1)
parsedline = $arg2
}
/**
* probe ruby.parse.end - Fired just after a Ruby source file was parsed.
*
* @parsedfile: The name of parsed the file (string)
* @parsedline: The line number of beginning of parsing (int)
*/
probe ruby.parse.end =
process("@LIBRARY_PATH@").mark("parse__end")
{
parsedfile = user_string($arg1)
parsedline = $arg2
}
/**
* probe ruby.raise - Fired when an exception is raised.
*
* @classname: The class name of the raised exception (string)
* @file: The name of the file where the exception was raised (string)
* @line: The line number in the file where the exception was raised (int)
*/
probe ruby.raise =
process("@LIBRARY_PATH@").mark("raise")
{
classname = user_string($arg1)
file = user_string($arg2)
line = $arg3
}
/**
* probe ruby.require.entry - Fired on calls to rb_require_safe (when a file
* is required).
*
* @requiredfile: The name of the file to be required (string)
* @file: The file that called "require" (string)
* @line: The line number where the call to require was made(int)
*/
probe ruby.require.entry =
process("@LIBRARY_PATH@").mark("require__entry")
{
requiredfile = user_string($arg1)
file = user_string($arg2)
line = $arg3
}
/**
* probe ruby.require.return - Fired just after require has finished
* search of load path for suitable file to require.
*
* @requiredfile: The file that was required (string)
*/
probe ruby.require.return =
process("@LIBRARY_PATH@").mark("require__return")
{
requiredfile = user_string($arg1)
}
/**
* probe ruby.string.create - Allocation of new string.
*
* @size: Number of elements (an int)
* @file: The file name where the method is being called (string)
* @line: The line number where the method is being called (int)
*/
probe ruby.string.create =
process("@LIBRARY_PATH@").mark("string__create")
{
size = $arg1
file = user_string($arg2)
line = $arg3
}

22
macros.ruby Normal file
View File

@ -0,0 +1,22 @@
%ruby_libdir %{_datadir}/%{name}
%ruby_libarchdir %{_libdir}/%{name}
# This is the local lib/arch and should not be used for packaging.
%ruby_sitedir site_ruby
%ruby_sitelibdir %{_prefix}/local/share/%{name}/%{ruby_sitedir}
%ruby_sitearchdir %{_prefix}/local/%{_lib}/%{name}/%{ruby_sitedir}
# This is the general location for libs/archs compatible with all
# or most of the Ruby versions available in the Fedora repositories.
%ruby_vendordir vendor_ruby
%ruby_vendorlibdir %{ruby_libdir}/%{ruby_vendordir}
%ruby_vendorarchdir %{ruby_libarchdir}/%{ruby_vendordir}
# For ruby packages we want to filter out any provides caused by private
# libs in %%{ruby_vendorarchdir}/%%{ruby_sitearchdir}.
#
# Note that this must be invoked in the spec file, preferably as
# "%{?ruby_default_filter}", before any %description block.
%ruby_default_filter %{expand: \
%global __provides_exclude_from %{?__provides_exclude_from:%{__provides_exclude_from}|}^(%{ruby_vendorarchdir}|%{ruby_sitearchdir})/.*\\\\.so$ \
}

185
macros.rubygems Normal file
View File

@ -0,0 +1,185 @@
# The RubyGems root folder.
%gem_dir %{_datadir}/gems
%gem_archdir %{_libdir}/gems
# Common gem locations and files.
%gem_instdir %{gem_dir}/gems/%{gem_name}-%{version}%{?prerelease}
%gem_extdir_mri %{gem_archdir}/%{name}/%{gem_name}-%{version}%{?prerelease}
%gem_libdir %{gem_instdir}/lib
%gem_cache %{gem_dir}/cache/%{gem_name}-%{version}%{?prerelease}.gem
%gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}%{?prerelease}.gemspec
%gem_docdir %{gem_dir}/doc/%{gem_name}-%{version}%{?prerelease}
# %gem_install - Install gem into appropriate directory.
#
# Usage: %gem_install [options]
#
# -n <gem_file> Overrides gem file name for installation.
# -d <install_dir> Set installation directory.
#
%gem_install(d:n:) \
mkdir -p %{-d*}%{!?-d:.%{gem_dir}} \
\
CONFIGURE_ARGS="--with-cflags='%{optflags}' --with-cxxflags='%{optflags}' $CONFIGURE_ARGS" \\\
gem install \\\
-V \\\
--local \\\
--build-root %{-d*}%{!?-d:.} \\\
--force \\\
--document=ri,rdoc \\\
%{-n*}%{!?-n:%{gem_name}-%{version}%{?prerelease}.gem} \
%{nil}
# The 'read' command in %%gemspec_* macros is not essential, but it is usefull
# to make the sript appear in build log.
# %gemspec_add_dep - Add dependency into .gemspec.
#
# Usage: %gemspec_add_dep -g <gem> [options] [requirements]
#
# Add dependency named <gem> to .gemspec file. The macro adds runtime
# dependency by default. The [requirements] argument can be used to specify
# the dependency constraints more precisely. It is expected to be valid Ruby
# code.
#
# -s <gemspec_file> Overrides the default .gemspec location.
# -d Add development dependecy.
#
%gemspec_add_dep(g:s:d) \
read -d '' gemspec_add_dep_script << 'EOR' || : \
gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.gemspec}' \
\
name = '%{-g*}' \
requirements = %{*}%{!?1:nil} \
\
type = :%{!?-d:runtime}%{?-d:development} \
\
spec = Gem::Specification.load(gemspec_file) \
abort("#{gemspec_file} is not accessible.") unless spec \
\
dep = spec.dependencies.detect { |d| d.type == type && d.name == name } \
if dep \
dep.requirement.concat requirements \
else \
spec.public_send "add_#{type}_dependency", name, requirements \
end \
File.write gemspec_file, spec.to_ruby \
EOR\
echo "$gemspec_add_dep_script" | ruby \
unset -v gemspec_add_dep_script \
%{nil}
# %gemspec_remove_dep - Remove dependency from .gemspec.
#
# Usage: %gemspec_remove_dep -g <gem> [options] [requirements]
#
# Remove dependency named <gem> from .gemspec file. The macro removes runtime
# dependency by default. The [requirements] argument can be used to specify
# the dependency constraints more precisely. It is expected to be valid Ruby
# code. The macro fails if these specific requirements can't be removed.
#
# -s <gemspec_file> Overrides the default .gemspec location.
# -d Remove development dependecy.
#
%gemspec_remove_dep(g:s:d) \
read -d '' gemspec_remove_dep_script << 'EOR' || : \
gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.gemspec}' \
\
name = '%{-g*}' \
requirements = %{*}%{!?1:nil} \
\
type = :%{!?-d:runtime}%{?-d:development} \
\
spec = Gem::Specification.load(gemspec_file) \
abort("#{gemspec_file} is not accessible.") unless spec \
\
dep = spec.dependencies.detect { |d| d.type == type && d.name == name } \
if dep \
if requirements \
requirements = Gem::Requirement.create(requirements).requirements \
requirements.each do |r| \
unless dep.requirement.requirements.reject! { |dependency_requirements| dependency_requirements == r } \
abort("Requirement '#{r.first} #{r.last}' was not possible to remove for dependency '#{dep}'!") \
end \
end \
spec.dependencies.delete dep if dep.requirement.requirements.empty? \
else \
spec.dependencies.delete dep \
end \
else \
abort("Dependency '#{name}' was not found!") \
end \
File.write gemspec_file, spec.to_ruby \
EOR\
echo "$gemspec_remove_dep_script" | ruby \
unset -v gemspec_remove_dep_script \
%{nil}
# %%gemspec_add_file - Add files to various files lists in .gemspec.
#
# Usage: %%gemspec_add_file [options] <file>
#
# Add files to .gemspec file. <file> is expected to be valid Ruby code.
# Path to file is expected. Does not check real files in any way.
# By default, `files` list is edited.
#
# -s <gemspec_file> Overrides the default .gemspec location.
# -t Edit test_files only.
# -r Edit extra_rdoc_files only.
#
%gemspec_add_file(s:tr) \
read -d '' gemspec_add_file_script << 'EOR' || : \
gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.gemspec}' \
\
abort("gemspec_add_file: Use only one '-t' or '-r' at a time.") if "%{?-t}%{?-r}" == "-t-r" \
\
filenames = %{*}%{!?1:nil} \
filenames = Array(filenames) \
\
spec = Gem::Specification.load(gemspec_file) \
abort("#{gemspec_file} is not accessible.") unless spec \
\
spec.%{?-t:test_}%{?-r:extra_rdoc_}files += filenames \
File.write gemspec_file, spec.to_ruby \
EOR\
echo "$gemspec_add_file_script" | ruby \
unset -v gemspec_add_file_script \
%{nil}
# %%gemspec_remove_file - Remove files from various files lists in .gemspec.
#
# Usage: %%gemspec_remove_file [options] <file>
#
# Remove files from .gemspec file. <file> is expected to be valid Ruby code.
# Path to file is expected. Does not check/remove real files in any way.
# By default, `files` list is edited. File has to be removed from `test_files`
# first in order to be removable from `files`.
#
# -s <gemspec_file> Overrides the default .gemspec location.
# -t Edit test_files only.
# -r Edit extra_rdoc_files only.
#
%gemspec_remove_file(s:tr) \
read -d '' gemspec_remove_file_script << 'EOR' || : \
gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.gemspec}' \
\
abort("gemspec_remove_file: Use only one '-t' or '-r' at a time.") if "%{?-t}%{?-r}" == "-t-r" \
\
filenames = %{*}%{!?1:nil} \
filenames = Array(filenames) \
\
spec = Gem::Specification.load(gemspec_file) \
abort("#{gemspec_file} is not accessible.") unless spec \
\
spec.%{?-t:test_}%{?-r:extra_rdoc_}files -= filenames \
File.write gemspec_file, spec.to_ruby \
EOR\
echo "$gemspec_remove_file_script" | ruby \
unset -v gemspec_remove_file_script \
%{nil}

148
operating_system.rb Normal file
View File

@ -0,0 +1,148 @@
module Gem
class << self
##
# Returns full path of previous but one directory of dir in path
# E.g. for '/usr/share/ruby', 'ruby', it returns '/usr'
def previous_but_one_dir_to(path, dir)
return unless path
split_path = path.split(File::SEPARATOR)
File.join(split_path.take_while { |one_dir| one_dir !~ /^#{dir}$/ }[0..-2])
end
private :previous_but_one_dir_to
##
# Detects --install-dir option specified on command line.
def opt_install_dir?
@opt_install_dir ||= ARGV.include?('--install-dir') || ARGV.include?('-i')
end
private :opt_install_dir?
##
# Detects --build-root option specified on command line.
def opt_build_root?
@opt_build_root ||= ARGV.include?('--build-root')
end
private :opt_build_root?
##
# Tries to detect, if arguments and environment variables suggest that
# 'gem install' is executed from rpmbuild.
def rpmbuild?
@rpmbuild ||= ENV['RPM_PACKAGE_NAME'] && (opt_install_dir? || opt_build_root?)
end
private :rpmbuild?
##
# Default gems locations allowed on FHS system (/usr, /usr/share).
# The locations are derived from directories specified during build
# configuration.
def default_locations
@default_locations ||= {
:system => previous_but_one_dir_to(RbConfig::CONFIG['vendordir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']),
:local => previous_but_one_dir_to(RbConfig::CONFIG['sitedir'], RbConfig::CONFIG['RUBY_INSTALL_NAME'])
}
end
##
# For each location provides set of directories for binaries (:bin_dir)
# platform independent (:gem_dir) and dependent (:ext_dir) files.
def default_dirs
@libdir ||= case RUBY_PLATFORM
when 'java'
RbConfig::CONFIG['datadir']
else
RbConfig::CONFIG['libdir']
end
@default_dirs ||= default_locations.inject(Hash.new) do |hash, location|
destination, path = location
hash[destination] = if path
{
:bin_dir => File.join(path, RbConfig::CONFIG['bindir'].split(File::SEPARATOR).last),
:gem_dir => File.join(path, RbConfig::CONFIG['datadir'].split(File::SEPARATOR).last, 'gems'),
:ext_dir => File.join(path, @libdir.split(File::SEPARATOR).last, 'gems')
}
else
{
:bin_dir => '',
:gem_dir => '',
:ext_dir => ''
}
end
hash
end
end
##
# Remove methods we are going to override. This avoids "method redefined;"
# warnings otherwise issued by Ruby.
remove_method :operating_system_defaults if method_defined? :operating_system_defaults
remove_method :default_dir if method_defined? :default_dir
remove_method :default_path if method_defined? :default_path
remove_method :default_ext_dir_for if method_defined? :default_ext_dir_for
##
# Regular user installs into user directory, root manages /usr/local.
def operating_system_defaults
unless opt_build_root?
options = if Process.uid == 0
"--install-dir=#{Gem.default_dirs[:local][:gem_dir]} --bindir #{Gem.default_dirs[:local][:bin_dir]}"
else
"--user-install --bindir #{File.join [Dir.home, 'bin']}"
end
{"gem" => options}
else
{}
end
end
##
# RubyGems default overrides.
def default_dir
Gem.default_dirs[:system][:gem_dir]
end
def default_path
path = default_dirs.collect {|location, paths| paths[:gem_dir]}
path.unshift Gem.user_dir if File.exist? Gem.user_home
path
end
def default_ext_dir_for base_dir
dir = if rpmbuild?
build_dir = base_dir.chomp Gem.default_dirs[:system][:gem_dir]
if build_dir != base_dir
File.join build_dir, Gem.default_dirs[:system][:ext_dir]
end
else
dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir}
dirs && dirs.last[:ext_dir]
end
dir && File.join(dir, RbConfig::CONFIG['RUBY_INSTALL_NAME'])
end
# This method should be available since RubyGems 2.2 until RubyGems 3.0.
# https://github.com/rubygems/rubygems/issues/749
if method_defined? :install_extension_in_lib
remove_method :install_extension_in_lib
def install_extension_in_lib
false
end
end
end
end

View File

@ -1,14 +0,0 @@
--- lib/cgi.rb (revision 19665)
+++ lib/cgi.rb (working copy)
@@ -546,6 +546,11 @@
when Hash
options = options.dup
end
+ options.each_value do |value|
+ if /\n(?![ \t])/ === value
+ raise ArgumentError, "potential HTTP header injection detected"
+ end
+ end
unless options.has_key?("type")
options["type"] = "text/html"

View File

@ -1,113 +0,0 @@
diff -ur ruby-1.8.6-p287.orig/ext/openssl/openssl_missing.c ruby-1.8.6-p287/ext/openssl/openssl_missing.c
--- ruby-1.8.6-p287.orig/ext/openssl/openssl_missing.c 2007-02-13 00:01:19.000000000 +0100
+++ ruby-1.8.6-p287/ext/openssl/openssl_missing.c 2009-03-15 05:32:31.000000000 +0100
@@ -43,7 +43,7 @@
{
return CRYPTO_set_ex_data(&str->ex_data, idx, data);
}
-
+
void *X509_STORE_get_ex_data(X509_STORE *str, int idx)
{
return CRYPTO_get_ex_data(&str->ex_data, idx);
@@ -113,7 +113,7 @@
#endif
#if !defined(HAVE_EVP_CIPHER_CTX_COPY)
-/*
+/*
* this function does not exist in OpenSSL yet... or ever?.
* a future version may break this function.
* tested on 0.9.7d.
@@ -182,12 +182,12 @@
(ASN1_STRING *)(*a)->serialNumber,
(ASN1_STRING *)(*b)->serialNumber));
}
-
+
int
X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev)
{
X509_CRL_INFO *inf;
-
+
inf = crl->crl;
if (!inf->revoked)
inf->revoked = sk_X509_REVOKED_new(OSSL_X509_REVOKED_cmp);
@@ -233,54 +233,6 @@
}
#endif
-#if !defined(HAVE_BN_RAND_RANGE) || !defined(HAVE_BN_PSEUDO_RAND_RANGE)
-static int
-bn_rand_range(int pseudo, BIGNUM *r, BIGNUM *range)
-{
- int (*bn_rand)(BIGNUM *, int, int, int) = pseudo ? BN_pseudo_rand : BN_rand;
- int n;
-
- if (range->neg || BN_is_zero(range)) return 0;
-
- n = BN_num_bits(range);
-
- if (n == 1) {
- if (!BN_zero(r)) return 0;
- } else if (!BN_is_bit_set(range, n - 2) && !BN_is_bit_set(range, n - 3)) {
- do {
- if (!bn_rand(r, n + 1, -1, 0)) return 0;
- if (BN_cmp(r ,range) >= 0) {
- if (!BN_sub(r, r, range)) return 0;
- if (BN_cmp(r, range) >= 0)
- if (!BN_sub(r, r, range)) return 0;
- }
- } while (BN_cmp(r, range) >= 0);
- } else {
- do {
- if (!bn_rand(r, n, -1, 0)) return 0;
- } while (BN_cmp(r, range) >= 0);
- }
-
- return 1;
-}
-#endif
-
-#if !defined(HAVE_BN_RAND_RANGE)
-int
-BN_rand_range(BIGNUM *r, BIGNUM *range)
-{
- return bn_rand_range(0, r, range);
-}
-#endif
-
-#if !defined(HAVE_BN_PSEUDO_RAND_RANGE)
-int
-BN_pseudo_rand_range(BIGNUM *r, BIGNUM *range)
-{
- return bn_rand_range(1, r, range);
-}
-#endif
-
#if !defined(HAVE_CONF_GET1_DEFAULT_CONFIG_FILE)
#define OPENSSL_CONF "openssl.cnf"
char *
@@ -315,7 +267,7 @@
{
int i,j;
const char *prompt;
-
+
if (key) {
i = strlen(key);
i = (i > num) ? num : i;
diff -ur ruby-1.8.6-p287.orig/ext/openssl/openssl_missing.h ruby-1.8.6-p287/ext/openssl/openssl_missing.h
--- ruby-1.8.6-p287.orig/ext/openssl/openssl_missing.h 2008-08-04 06:43:34.000000000 +0200
+++ ruby-1.8.6-p287/ext/openssl/openssl_missing.h 2009-03-15 05:33:56.000000000 +0100
@@ -120,8 +120,6 @@
int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, BN_CTX *ctx);
int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, BN_CTX *ctx);
-int BN_rand_range(BIGNUM *r, BIGNUM *range);
-int BN_pseudo_rand_range(BIGNUM *r, BIGNUM *range);
char *CONF_get1_default_config_file(void);
int PEM_def_callback(char *buf, int num, int w, void *key);
Only in ruby-1.8.6-p287/ext/openssl: .openssl_missing.h.swp

View File

@ -1,96 +0,0 @@
diff -pruN ruby-1.8.6-p287.orig/lib/rexml/document.rb ruby-1.8.6-p287/lib/rexml/document.rb
--- ruby-1.8.6-p287.orig/lib/rexml/document.rb 2007-11-04 13:50:15.000000000 +0900
+++ ruby-1.8.6-p287/lib/rexml/document.rb 2008-10-08 22:25:14.000000000 +0900
@@ -32,6 +32,7 @@ module REXML
# @param context if supplied, contains the context of the document;
# this should be a Hash.
def initialize( source = nil, context = {} )
+ @entity_expansion_count = 0
super()
@context = context
return if source.nil?
@@ -200,6 +201,27 @@ module REXML
Parsers::StreamParser.new( source, listener ).parse
end
+ @@entity_expansion_limit = 10_000
+
+ # Set the entity expansion limit. By defualt the limit is set to 10000.
+ def Document::entity_expansion_limit=( val )
+ @@entity_expansion_limit = val
+ end
+
+ # Get the entity expansion limit. By defualt the limit is set to 10000.
+ def Document::entity_expansion_limit
+ return @@entity_expansion_limit
+ end
+
+ attr_reader :entity_expansion_count
+
+ def record_entity_expansion
+ @entity_expansion_count += 1
+ if @entity_expansion_count > @@entity_expansion_limit
+ raise "number of entity expansions exceeded, processing aborted."
+ end
+ end
+
private
def build( source )
Parsers::TreeParser.new( source, self ).parse
diff -pruN ruby-1.8.6-p287.orig/lib/rexml/entity.rb ruby-1.8.6-p287/lib/rexml/entity.rb
--- ruby-1.8.6-p287.orig/lib/rexml/entity.rb 2007-07-28 11:46:08.000000000 +0900
+++ ruby-1.8.6-p287/lib/rexml/entity.rb 2008-10-08 22:25:14.000000000 +0900
@@ -73,6 +73,7 @@ module REXML
# all entities -- both %ent; and &ent; entities. This differs from
# +value()+ in that +value+ only replaces %ent; entities.
def unnormalized
+ document.record_entity_expansion unless document.nil?
v = value()
return nil if v.nil?
@unnormalized = Text::unnormalize(v, parent)
diff -pruN ruby-1.8.6-p287.orig/test/rexml/test_document.rb ruby-1.8.6-p287/test/rexml/test_document.rb
--- ruby-1.8.6-p287.orig/test/rexml/test_document.rb 1970-01-01 09:00:00.000000000 +0900
+++ ruby-1.8.6-p287/test/rexml/test_document.rb 2008-10-08 22:25:14.000000000 +0900
@@ -0,0 +1,42 @@
+require "rexml/document"
+require "test/unit"
+
+class REXML::TestDocument < Test::Unit::TestCase
+ def test_new
+ doc = REXML::Document.new(<<EOF)
+<?xml version="1.0" encoding="UTF-8"?>
+<message>Hello world!</message>
+EOF
+ assert_equal("Hello world!", doc.root.children.first.value)
+ end
+
+ XML_WITH_NESTED_ENTITY = <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE member [
+ <!ENTITY a "&b;&b;&b;&b;&b;&b;&b;&b;&b;&b;">
+ <!ENTITY b "&c;&c;&c;&c;&c;&c;&c;&c;&c;&c;">
+ <!ENTITY c "&d;&d;&d;&d;&d;&d;&d;&d;&d;&d;">
+ <!ENTITY d "&e;&e;&e;&e;&e;&e;&e;&e;&e;&e;">
+ <!ENTITY e "&f;&f;&f;&f;&f;&f;&f;&f;&f;&f;">
+ <!ENTITY f "&g;&g;&g;&g;&g;&g;&g;&g;&g;&g;">
+ <!ENTITY g "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">
+]>
+<member>
+&a;
+</member>
+EOF
+
+ def test_entity_expansion_limit
+ doc = REXML::Document.new(XML_WITH_NESTED_ENTITY)
+ assert_raise(RuntimeError) do
+ doc.root.children.first.value
+ end
+ REXML::Document.entity_expansion_limit = 100
+ assert_equal(100, REXML::Document.entity_expansion_limit)
+ doc = REXML::Document.new(XML_WITH_NESTED_ENTITY)
+ assert_raise(RuntimeError) do
+ doc.root.children.first.value
+ end
+ assert_equal(101, doc.entity_expansion_count)
+ end
+end

View File

@ -1,16 +0,0 @@
diff -pruN ruby-1.8.6-p111.orig/ext/socket/socket.c ruby-1.8.6-p111/ext/socket/socket.c
--- ruby-1.8.6-p111.orig/ext/socket/socket.c 2007-05-23 00:08:43.000000000 +0900
+++ ruby-1.8.6-p111/ext/socket/socket.c 2008-02-19 11:24:22.000000000 +0900
@@ -893,10 +893,10 @@ port_str(port, pbuf, len)
}
#ifndef NI_MAXHOST
-# define 1025
+# define NI_MAXHOST 1025
#endif
#ifndef NI_MAXSERV
-# define 32
+# define NI_MAXSERV 32
#endif
static struct addrinfo*

View File

@ -0,0 +1,25 @@
From 28cc0749d6729aa2444661ee7b411e183fe220b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Mon, 19 Nov 2012 15:14:51 +0100
Subject: [PATCH] Verbose mkmf.
---
lib/mkmf.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index 682eb46..e6b1445 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -1930,7 +1930,7 @@ def configuration(srcdir)
SHELL = /bin/sh
# V=0 quiet, V=1 verbose. other values don't work.
-V = 0
+V = 1
Q1 = $(V:1=)
Q = $(Q1:0=@)
ECHO1 = $(V:1=@ #{CONFIG['NULLCMD']})
--
1.8.3.1

View File

@ -0,0 +1,28 @@
From 07c666ba5c3360dd6f43605a8ac7c85c99c1721f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Tue, 1 Oct 2013 12:22:40 +0200
Subject: [PATCH] Allow to configure libruby.so placement.
---
configure.ac | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/configure.ac b/configure.ac
index d261ea57b5..3c13076b82 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3105,6 +3105,11 @@ AS_IF([test ${multiarch+set}], [
])
archlibdir='${libdir}/${arch}'
+AC_ARG_WITH(archlibdir,
+ AS_HELP_STRING([--with-archlibdir=DIR],
+ [prefix for libruby [[LIBDIR/ARCH]]]),
+ [archlibdir="$withval"])
+
sitearchlibdir='${libdir}/${sitearch}'
archincludedir='${includedir}/${arch}'
sitearchincludedir='${includedir}/${sitearch}'
--
2.22.0

View File

@ -0,0 +1,80 @@
From e24d97c938c481450ed80ec83e5399595946c1ae Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Fri, 8 Feb 2013 22:48:41 +0100
Subject: [PATCH] Prevent duplicated paths when empty version string is
configured.
---
configure.ac | 3 ++-
loadpath.c | 12 ++++++++++++
tool/mkconfig.rb | 2 +-
3 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index c42436c23d..d261ea57b5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3743,7 +3743,8 @@ AS_CASE(["$ruby_version_dir_name"],
ruby_version_dir=/'${ruby_version_dir_name}'
if test -z "${ruby_version_dir_name}"; then
- AC_MSG_ERROR([No ruby version, No place for bundled libraries])
+ unset ruby_version_dir
+ AC_DEFINE(RUBY_LIB_VERSION_BLANK, 1)
fi
rubylibdir='${rubylibprefix}'${ruby_version_dir}
diff --git a/loadpath.c b/loadpath.c
index 9160031..0d4d953 100644
--- a/loadpath.c
+++ b/loadpath.c
@@ -65,21 +65,33 @@ const char ruby_initial_load_paths[] =
RUBY_SEARCH_PATH "\0"
#endif
#ifndef NO_RUBY_SITE_LIB
+#ifdef RUBY_LIB_VERSION_BLANK
+ RUBY_SITE_LIB "\0"
+#else
RUBY_SITE_LIB2 "\0"
+#endif
#ifdef RUBY_THINARCH
RUBY_SITE_ARCH_LIB_FOR(RUBY_THINARCH) "\0"
#endif
RUBY_SITE_ARCH_LIB_FOR(RUBY_SITEARCH) "\0"
+#ifndef RUBY_LIB_VERSION_BLANK
RUBY_SITE_LIB "\0"
#endif
+#endif
#ifndef NO_RUBY_VENDOR_LIB
+#ifdef RUBY_LIB_VERSION_BLANK
+ RUBY_VENDOR_LIB "\0"
+#else
RUBY_VENDOR_LIB2 "\0"
+#endif
#ifdef RUBY_THINARCH
RUBY_VENDOR_ARCH_LIB_FOR(RUBY_THINARCH) "\0"
#endif
RUBY_VENDOR_ARCH_LIB_FOR(RUBY_SITEARCH) "\0"
+#ifndef RUBY_LIB_VERSION_BLANK
RUBY_VENDOR_LIB "\0"
+#endif
#endif
RUBY_LIB "\0"
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
index 07076d4..35e6c3c 100755
--- a/tool/mkconfig.rb
+++ b/tool/mkconfig.rb
@@ -114,7 +114,7 @@
val = val.gsub(/\$(?:\$|\{?(\w+)\}?)/) {$1 ? "$(#{$1})" : $&}.dump
case name
when /^prefix$/
- val = "(TOPDIR || DESTDIR + #{val})"
+ val = "(((TOPDIR && TOPDIR.empty?) ? nil : TOPDIR) || DESTDIR + #{val})"
when /^ARCH_FLAG$/
val = "arch_flag || #{val}" if universal
when /^UNIVERSAL_ARCHNAMES$/
--
1.9.0

View File

@ -0,0 +1,25 @@
From 2089cab72b38d6d5e7ba2b596e41014209acad30 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Mon, 19 Nov 2012 14:37:28 +0100
Subject: [PATCH] Always use i386.
---
configure.ac | 2 ++
1 file changed, 2 insertions(+)
diff --git a/configure.ac b/configure.ac
index 3c13076b82..93af30321d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3807,6 +3807,8 @@ AC_SUBST(vendorarchdir)dnl
AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl
AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl
+target_cpu=`echo $target_cpu | sed s/i.86/i386/`
+
AS_IF([test "${universal_binary-no}" = yes ], [
arch="universal-${target_os}"
AS_IF([test "${rb_cv_architecture_available}" = yes], [
--
1.8.3.1

View File

@ -0,0 +1,97 @@
From 94da59aafacc6a9efe829529eb51385588d6f149 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Fri, 11 Nov 2011 13:14:45 +0100
Subject: [PATCH] Allow to install RubyGems into custom location, outside of
Ruby tree.
---
configure.ac | 5 +++++
loadpath.c | 4 ++++
template/verconf.h.tmpl | 3 +++
tool/rbinstall.rb | 10 ++++++++++
4 files changed, 22 insertions(+)
diff --git a/configure.ac b/configure.ac
index 93af30321d..bc13397e0e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3779,6 +3779,10 @@ AC_ARG_WITH(vendorarchdir,
[vendorarchdir=$withval],
[vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}])
+AC_ARG_WITH(rubygemsdir,
+ AS_HELP_STRING([--with-rubygemsdir=DIR], [custom rubygems directory]),
+ [rubygemsdir=$withval])
+
AS_IF([test "${LOAD_RELATIVE+set}"], [
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
RUBY_EXEC_PREFIX=''
@@ -3803,6 +3807,7 @@ AC_SUBST(sitearchdir)dnl
AC_SUBST(vendordir)dnl
AC_SUBST(vendorlibdir)dnl
AC_SUBST(vendorarchdir)dnl
+AC_SUBST(rubygemsdir)dnl
AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl
AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl
diff --git a/loadpath.c b/loadpath.c
index 623dc9d..74c5d9e 100644
--- a/loadpath.c
+++ b/loadpath.c
@@ -94,6 +94,10 @@ const char ruby_initial_load_paths[] =
#endif
#endif
+#ifdef RUBYGEMS_DIR
+ RUBYGEMS_DIR "\0"
+#endif
+
RUBY_LIB "\0"
#ifdef RUBY_THINARCH
RUBY_ARCH_LIB_FOR(RUBY_THINARCH) "\0"
diff --git a/template/verconf.h.tmpl b/template/verconf.h.tmpl
index 79c003e..34f2382 100644
--- a/template/verconf.h.tmpl
+++ b/template/verconf.h.tmpl
@@ -36,6 +36,9 @@
% if C["RUBY_SEARCH_PATH"]
#define RUBY_SEARCH_PATH "${RUBY_SEARCH_PATH}"
% end
+% if C["rubygemsdir"]
+#define RUBYGEMS_DIR "${rubygemsdir}"
+% end
%
% R = {}
% R["ruby_version"] = '"RUBY_LIB_VERSION"'
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index b47b6e1..0b99408 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -343,6 +343,7 @@ def CONFIG.[](name, mandatory = false)
vendorlibdir = CONFIG["vendorlibdir"]
vendorarchlibdir = CONFIG["vendorarchdir"]
end
+rubygemsdir = CONFIG["rubygemsdir"]
mandir = CONFIG["mandir", true]
docdir = CONFIG["docdir", true]
enable_shared = CONFIG["ENABLE_SHARED"] == 'yes'
@@ -570,7 +571,16 @@ def stub
install?(:local, :comm, :lib) do
prepare "library scripts", rubylibdir
noinst = %w[*.txt *.rdoc *.gemspec]
+ # Bundler carries "rubygems.rb" file, so it must be specialcased :/
+ noinst += %w[rubygems.rb rubygems/ bundler.rb bundler/] if rubygemsdir
install_recursive(File.join(srcdir, "lib"), rubylibdir, :no_install => noinst, :mode => $data_mode)
+ if rubygemsdir
+ noinst = %w[*.txt *.rdoc *.gemspec]
+ install_recursive(File.join(srcdir, "lib", "rubygems"), File.join(rubygemsdir, "rubygems"), :no_install => noinst, :mode => $data_mode)
+ install(File.join(srcdir, "lib", "rubygems.rb"), File.join(rubygemsdir, "rubygems.rb"), :mode => $data_mode)
+ install_recursive(File.join(srcdir, "lib", "bundler"), File.join(rubylibdir, "bundler"), :no_install => noinst, :mode => $data_mode)
+ install(File.join(srcdir, "lib", "bundler.rb"), rubylibdir, :mode => $data_mode)
+ end
end
install?(:local, :comm, :hdr, :'comm-hdr') do
--
1.8.3.1

View File

@ -0,0 +1,288 @@
From 4fc1be3af3f58621bb751c9e63c208b15c0e8d16 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Tue, 31 Mar 2015 16:21:04 +0200
Subject: [PATCH 1/4] Use ruby_version_dir_name for versioned directories.
This disallows changing the ruby_version constant by --with-ruby-version
configuration options. The two places version numbers are disallowed as
well, since there are a lot of places which cannot handle this format
properly.
ruby_version_dir_name now specifies custom version string for versioned
directories, e.g. instead of default X.Y.Z, you can specify whatever
string.
---
configure.ac | 64 ++++++++++++++++++++++++---------------------
template/ruby.pc.in | 1 +
2 files changed, 35 insertions(+), 30 deletions(-)
diff --git a/configure.ac b/configure.ac
index 80b137e380..63cd3b4f8b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3694,9 +3694,6 @@ AS_CASE(["$target_os"],
rubyw_install_name='$(RUBYW_INSTALL_NAME)'
])
-rubylibdir='${rubylibprefix}/${ruby_version}'
-rubyarchdir=${multiarch+'${rubyarchprefix}/${ruby_version}'}${multiarch-'${rubylibdir}/${arch}'}
-
rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}
AC_ARG_WITH(rubyarchprefix,
AS_HELP_STRING([--with-rubyarchprefix=DIR],
@@ -3719,56 +3716,62 @@ AC_ARG_WITH(ridir,
AC_SUBST(ridir)
AC_SUBST(RI_BASE_NAME)
-AC_ARG_WITH(ruby-version,
- AS_HELP_STRING([--with-ruby-version=STR], [ruby version string for version specific directories [[full]] (full|minor|STR)]),
- [ruby_version=$withval],
- [ruby_version=full])
unset RUBY_LIB_VERSION
-unset RUBY_LIB_VERSION_STYLE
-AS_CASE(["$ruby_version"],
- [full], [RUBY_LIB_VERSION_STYLE='3 /* full */'],
- [minor], [RUBY_LIB_VERSION_STYLE='2 /* minor */'])
-AS_IF([test ${RUBY_LIB_VERSION_STYLE+set}], [
- {
- echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE"
- echo '#define STRINGIZE(x) x'
- test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0'
- echo '#include "version.h"'
- echo 'ruby_version=RUBY_LIB_VERSION'
- } > conftest.c
- ruby_version="`$CPP -I. -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`"
- eval $ruby_version
-], [test -z "${ruby_version}"], [
- AC_MSG_ERROR([No ruby version, No place for bundled libraries])
-], [
- RUBY_LIB_VERSION="${ruby_version}"
-])
+RUBY_LIB_VERSION_STYLE='3 /* full */'
+{
+echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE"
+echo '#define STRINGIZE(x) x'
+test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0'
+echo '#include "version.h"'
+echo 'ruby_version=RUBY_LIB_VERSION'
+} > conftest.c
+ruby_version="`$CPP -I. -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`"
+eval $ruby_version
+
+RUBY_LIB_VERSION="${ruby_version}"
+
AC_SUBST(RUBY_LIB_VERSION_STYLE)
AC_SUBST(RUBY_LIB_VERSION)
+AC_ARG_WITH(ruby-version,
+ AS_HELP_STRING([--with-ruby-version=STR], [ruby version string for version specific directories [[full]] (full|STR)]),
+ [ruby_version_dir_name=$withval],
+ [ruby_version_dir_name=full])
+AS_CASE(["$ruby_version_dir_name"],
+ [full], [ruby_version_dir_name='${ruby_version}'])
+
+ruby_version_dir=/'${ruby_version_dir_name}'
+
+if test -z "${ruby_version_dir_name}"; then
+ AC_MSG_ERROR([No ruby version, No place for bundled libraries])
+fi
+
+rubylibdir='${rubylibprefix}'${ruby_version_dir}
+rubyarchdir=${multiarch+'${rubyarchprefix}'${ruby_version_dir}}${multiarch-'${rubylibdir}/${arch}'}
+
AC_ARG_WITH(sitedir,
AS_HELP_STRING([--with-sitedir=DIR], [site libraries in DIR [[RUBY_LIB_PREFIX/site_ruby]], "no" to disable site directory]),
[sitedir=$withval],
[sitedir='${rubylibprefix}/site_ruby'])
-sitelibdir='${sitedir}/${ruby_version}'
+sitelibdir='${sitedir}'${ruby_version_dir}
AC_ARG_WITH(sitearchdir,
AS_HELP_STRING([--with-sitearchdir=DIR],
[architecture dependent site libraries in DIR [[SITEDIR/SITEARCH]], "no" to disable site directory]),
[sitearchdir=$withval],
- [sitearchdir=${multiarch+'${rubysitearchprefix}/site_ruby/${ruby_version}'}${multiarch-'${sitelibdir}/${sitearch}'}])
+ [sitearchdir=${multiarch+'${rubysitearchprefix}/site_ruby'${ruby_version_dir}}${multiarch-'${sitelibdir}/${sitearch}'}])
AC_ARG_WITH(vendordir,
AS_HELP_STRING([--with-vendordir=DIR], [vendor libraries in DIR [[RUBY_LIB_PREFIX/vendor_ruby]], "no" to disable vendor directory]),
[vendordir=$withval],
[vendordir='${rubylibprefix}/vendor_ruby'])
-vendorlibdir='${vendordir}/${ruby_version}'
+vendorlibdir='${vendordir}'${ruby_version_dir}
AC_ARG_WITH(vendorarchdir,
AS_HELP_STRING([--with-vendorarchdir=DIR],
[architecture dependent vendor libraries in DIR [[VENDORDIR/SITEARCH]], "no" to disable vendor directory]),
[vendorarchdir=$withval],
- [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby/${ruby_version}'}${multiarch-'${vendorlibdir}/${sitearch}'}])
+ [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}])
AS_IF([test "${LOAD_RELATIVE+set}"], [
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
@@ -3785,6 +3788,7 @@ AC_SUBST(sitearchincludedir)dnl
AC_SUBST(arch)dnl
AC_SUBST(sitearch)dnl
AC_SUBST(ruby_version)dnl
+AC_SUBST(ruby_version_dir_name)dnl
AC_SUBST(rubylibdir)dnl
AC_SUBST(rubyarchdir)dnl
AC_SUBST(sitedir)dnl
diff --git a/template/ruby.pc.in b/template/ruby.pc.in
index 8a2c066..c81b211 100644
--- a/template/ruby.pc.in
+++ b/template/ruby.pc.in
@@ -9,6 +9,7 @@ MAJOR=@MAJOR@
MINOR=@MINOR@
TEENY=@TEENY@
ruby_version=@ruby_version@
+ruby_version_dir_name=@ruby_version_dir_name@
RUBY_API_VERSION=@RUBY_API_VERSION@
RUBY_PROGRAM_VERSION=@RUBY_PROGRAM_VERSION@
RUBY_BASE_NAME=@RUBY_BASE_NAME@
--
2.1.0
From 518850aba6eee76de7715aae8d37330e34b01983 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Tue, 31 Mar 2015 16:37:26 +0200
Subject: [PATCH 2/4] Add ruby_version_dir_name support for RDoc.
---
lib/rdoc/ri/paths.rb | 2 +-
tool/rbinstall.rb | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb
index 970cb91..5bf8230 100644
--- a/lib/rdoc/ri/paths.rb
+++ b/lib/rdoc/ri/paths.rb
@@ -10,7 +10,7 @@ module RDoc::RI::Paths
#:stopdoc:
require 'rbconfig'
- version = RbConfig::CONFIG['ruby_version']
+ version = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
BASE = if RbConfig::CONFIG.key? 'ridir' then
File.join RbConfig::CONFIG['ridir'], version
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index d4c110e..d39c9a6 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -433,7 +433,7 @@ def CONFIG.[](name, mandatory = false)
install?(:doc, :rdoc) do
if $rdocdir
- ridatadir = File.join(CONFIG['ridir'], CONFIG['ruby_version'], "system")
+ ridatadir = File.join(CONFIG['ridir'], CONFIG['ruby_version_dir_name'] || CONFIG['ruby_version'], "system")
prepare "rdoc", ridatadir
install_recursive($rdocdir, ridatadir, :no_install => rdoc_noinst, :mode => $data_mode)
end
--
2.23.0
From 9f0ec0233f618cbb862629816b22491c3df79578 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Tue, 31 Mar 2015 16:37:44 +0200
Subject: [PATCH 3/4] Add ruby_version_dir_name support for RubyGems.
---
lib/rubygems/defaults.rb | 9 +++++----
test/rubygems/test_gem.rb | 5 +++--
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
index d4ff4a262c..3f9a5bf590 100644
--- a/lib/rubygems/defaults.rb
+++ b/lib/rubygems/defaults.rb
@@ -32,13 +32,13 @@ def self.default_dir
[
File.dirname(RbConfig::CONFIG['sitedir']),
'Gems',
- RbConfig::CONFIG['ruby_version']
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
]
else
[
RbConfig::CONFIG['rubylibprefix'],
'gems',
- RbConfig::CONFIG['ruby_version']
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
]
end
@@ -75,7 +75,8 @@ def self.default_specifications_dir
def self.user_dir
parts = [Gem.user_home, '.gem', ruby_engine]
- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
+ ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
+ parts << ruby_version_dir_name unless ruby_version_dir_name.empty?
File.join parts
end
@@ -158,7 +159,7 @@ def self.vendor_dir # :nodoc:
return nil unless RbConfig::CONFIG.key? 'vendordir'
File.join RbConfig::CONFIG['vendordir'], 'gems',
- RbConfig::CONFIG['ruby_version']
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
end
##
diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
index b25068405d..e9fef4a311 100644
--- a/test/rubygems/test_gem.rb
+++ b/test/rubygems/test_gem.rb
@@ -1378,7 +1378,8 @@ def test_self_use_paths
def test_self_user_dir
parts = [@userhome, '.gem', Gem.ruby_engine]
- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
+ ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
+ parts << ruby_version_dir_name unless ruby_version_dir_name.empty?
assert_equal File.join(parts), Gem.user_dir
end
@@ -1454,7 +1455,7 @@ def test_self_vendor_dir
vendordir(File.join(@tempdir, 'vendor')) do
expected =
File.join RbConfig::CONFIG['vendordir'], 'gems',
- RbConfig::CONFIG['ruby_version']
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
assert_equal expected, Gem.vendor_dir
end
--
2.1.0
From 88c38a030c22dbf9422ece847bdfbf87d6659313 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Wed, 1 Apr 2015 14:55:37 +0200
Subject: [PATCH 4/4] Let headers directories follow the configured version
name.
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index a00f2b6776..999e2d6d5d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -98,7 +98,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`
RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"`
AC_SUBST(RUBY_BASE_NAME)
AC_SUBST(RUBYW_BASE_NAME)
-AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version}')
+AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version_dir_name}')
AC_CANONICAL_TARGET
test x"$target_alias" = x &&
--
2.1.0

View File

@ -0,0 +1,136 @@
From 346e147ba6480839b87046e9a9efab0bf6ed3660 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Wed, 10 Aug 2016 17:35:48 +0200
Subject: [PATCH] Rely on ldd to detect glibc.
This is just workaround, since we know we are quite sure this will be successful
on Red Hat platforms.
This workaround rhbz#1361037
---
test/fiddle/helper.rb | 111 ------------------------------------------
1 file changed, 111 deletions(-)
diff --git a/test/fiddle/helper.rb b/test/fiddle/helper.rb
index 1da3d93..65148a1 100644
--- a/test/fiddle/helper.rb
+++ b/test/fiddle/helper.rb
@@ -6,115 +6,6 @@
libc_so = libm_so = nil
-case RUBY_PLATFORM
-when /cygwin/
- libc_so = "cygwin1.dll"
- libm_so = "cygwin1.dll"
-when /android/
- libdir = '/system/lib'
- if [0].pack('L!').size == 8
- libdir = '/system/lib64'
- end
- libc_so = File.join(libdir, "libc.so")
- libm_so = File.join(libdir, "libm.so")
-when /linux/
- libdir = '/lib'
- case RbConfig::SIZEOF['void*']
- when 4
- # 32-bit ruby
- case RUBY_PLATFORM
- when /armv\w+-linux/
- # In the ARM 32-bit libc package such as libc6:armhf libc6:armel,
- # libc.so and libm.so are installed to /lib/arm-linux-gnu*.
- # It's not installed to /lib32.
- dirs = Dir.glob('/lib/arm-linux-gnu*')
- libdir = dirs[0] if dirs && File.directory?(dirs[0])
- else
- libdir = '/lib32' if File.directory? '/lib32'
- end
- when 8
- # 64-bit ruby
- libdir = '/lib64' if File.directory? '/lib64'
- end
- libc_so = File.join(libdir, "libc.so.6")
- libm_so = File.join(libdir, "libm.so.6")
-when /mingw/, /mswin/
- require "rbconfig"
- crtname = RbConfig::CONFIG["RUBY_SO_NAME"][/msvc\w+/] || 'ucrtbase'
- libc_so = libm_so = "#{crtname}.dll"
-when /darwin/
- libc_so = libm_so = "/usr/lib/libSystem.B.dylib"
-when /kfreebsd/
- libc_so = "/lib/libc.so.0.1"
- libm_so = "/lib/libm.so.1"
-when /gnu/ #GNU/Hurd
- libc_so = "/lib/libc.so.0.3"
- libm_so = "/lib/libm.so.6"
-when /mirbsd/
- libc_so = "/usr/lib/libc.so.41.10"
- libm_so = "/usr/lib/libm.so.7.0"
-when /freebsd/
- libc_so = "/lib/libc.so.7"
- libm_so = "/lib/libm.so.5"
-when /bsd|dragonfly/
- libc_so = "/usr/lib/libc.so"
- libm_so = "/usr/lib/libm.so"
-when /solaris/
- libdir = '/lib'
- case RbConfig::SIZEOF['void*']
- when 4
- # 32-bit ruby
- libdir = '/lib' if File.directory? '/lib'
- when 8
- # 64-bit ruby
- libdir = '/lib/64' if File.directory? '/lib/64'
- end
- libc_so = File.join(libdir, "libc.so")
- libm_so = File.join(libdir, "libm.so")
-when /aix/
- pwd=Dir.pwd
- libc_so = libm_so = "#{pwd}/libaixdltest.so"
- unless File.exist? libc_so
- cobjs=%w!strcpy.o!
- mobjs=%w!floats.o sin.o!
- funcs=%w!sin sinf strcpy strncpy!
- expfile='dltest.exp'
- require 'tmpdir'
- Dir.mktmpdir do |dir|
- begin
- Dir.chdir dir
- %x!/usr/bin/ar x /usr/lib/libc.a #{cobjs.join(' ')}!
- %x!/usr/bin/ar x /usr/lib/libm.a #{mobjs.join(' ')}!
- %x!echo "#{funcs.join("\n")}\n" > #{expfile}!
- require 'rbconfig'
- if RbConfig::CONFIG["GCC"] = 'yes'
- lflag='-Wl,'
- else
- lflag=''
- end
- flags="#{lflag}-bE:#{expfile} #{lflag}-bnoentry -lm"
- %x!#{RbConfig::CONFIG["LDSHARED"]} -o #{libc_so} #{(cobjs+mobjs).join(' ')} #{flags}!
- ensure
- Dir.chdir pwd
- end
- end
- end
-else
- libc_so = ARGV[0] if ARGV[0] && ARGV[0][0] == ?/
- libm_so = ARGV[1] if ARGV[1] && ARGV[1][0] == ?/
- if( !(libc_so && libm_so) )
- $stderr.puts("libc and libm not found: #{$0} <libc> <libm>")
- end
-end
-
-libc_so = nil if !libc_so || (libc_so[0] == ?/ && !File.file?(libc_so))
-libm_so = nil if !libm_so || (libm_so[0] == ?/ && !File.file?(libm_so))
-
-# macOS 11.0+ removed libSystem.B.dylib from /usr/lib. But It works with dlopen.
-if RUBY_PLATFORM =~ /darwin/
- libc_so = libm_so = "/usr/lib/libSystem.B.dylib"
-end
-
if !libc_so || !libm_so
ruby = EnvUtil.rubybin
# When the ruby binary is 32-bit and the host is 64-bit,
--
2.9.2

View File

@ -0,0 +1,77 @@
From eca084e4079c77c061045df9c21b219175b05228 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Mon, 6 Jan 2020 13:56:04 +0100
Subject: [PATCH] Initialize ABRT hook.
The ABRT hook used to be initialized by preludes via patches [[1], [2]].
Unfortunately, due to [[3]] and especially since [[4]], this would
require boostrapping [[5]].
To keep the things simple for now, load the ABRT hook via C.
[1]: https://bugs.ruby-lang.org/issues/8566
[2]: https://bugs.ruby-lang.org/issues/15306
[3]: https://bugs.ruby-lang.org/issues/16254
[4]: https://github.com/ruby/ruby/pull/2735
[5]: https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/LH6L6YJOYQT4Y5ZNOO4SLIPTUWZ5V45Q/
---
abrt.c | 12 ++++++++++++++
common.mk | 3 ++-
ruby.c | 4 ++++
3 files changed, 18 insertions(+), 1 deletion(-)
create mode 100644 abrt.c
diff --git a/abrt.c b/abrt.c
new file mode 100644
index 0000000000..74b0bd5c0f
--- /dev/null
+++ b/abrt.c
@@ -0,0 +1,12 @@
+#include "internal.h"
+
+void
+Init_abrt(void)
+{
+ rb_eval_string(
+ " begin\n"
+ " require 'abrt'\n"
+ " rescue LoadError\n"
+ " end\n"
+ );
+}
diff --git a/common.mk b/common.mk
index b2e5b2b6d0..f39f81da5c 100644
--- a/common.mk
+++ b/common.mk
@@ -81,7 +81,8 @@ ENC_MK = enc.mk
MAKE_ENC = -f $(ENC_MK) V="$(V)" UNICODE_HDR_DIR="$(UNICODE_HDR_DIR)" \
RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(mflags)
-COMMONOBJS = array.$(OBJEXT) \
+COMMONOBJS = abrt.$(OBJEXT) \
+ array.$(OBJEXT) \
ast.$(OBJEXT) \
bignum.$(OBJEXT) \
class.$(OBJEXT) \
diff --git a/ruby.c b/ruby.c
index 60c57d6259..1eec16f2c8 100644
--- a/ruby.c
+++ b/ruby.c
@@ -1451,10 +1451,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt)
void Init_builtin_features(void);
+/* abrt.c */
+void Init_abrt(void);
+
static void
ruby_init_prelude(void)
{
Init_builtin_features();
+ Init_abrt();
rb_const_remove(rb_cObject, rb_intern_const("TMP_RUBY_PREFIX"));
}
--
2.24.1

View File

@ -0,0 +1,32 @@
From 6532dbecf36d1f24dab1f2143afd171e0b7699eb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Wed, 4 Sep 2019 15:07:07 +0200
Subject: [PATCH] Remove RubyGems dependency.
Since `Process::RLIMIT_NOFILE` is platform specific, better to use Ruby
introspection than detecting platform.
---
.../vendor/net-http-persistent/lib/net/http/persistent.rb | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb b/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
index a54be2a..06739f1 100644
--- a/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
+++ b/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
@@ -197,10 +197,10 @@ class Bundler::Persistent::Net::HTTP::Persistent
##
# The default connection pool size is 1/4 the allowed open files.
- if Gem.win_platform? then
- DEFAULT_POOL_SIZE = 256
- else
+ if Process.const_defined? :RLIMIT_NOFILE
DEFAULT_POOL_SIZE = Process.getrlimit(Process::RLIMIT_NOFILE).first / 4
+ else
+ DEFAULT_POOL_SIZE = 256
end
##
--
2.23.0

View File

@ -0,0 +1,34 @@
From 9b42fce32bff25e0569581f76f532b9d57865aef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Mon, 27 Jul 2020 14:56:05 +0200
Subject: [PATCH] Timeout the test_bug_reporter_add witout raising error.
While timeouting the threads might be still good idea, it does not seems
the timeout impacts the TestBugReporter#test_bug_reporter_add result,
because the output of the child process has been already collected
earlier.
It seems that when the system is under heavy load, the thread might not
be sheduled to finish its processing. Even finishing the child process
might take tens of seconds and therefore the test case finish might take
a while.
---
test/-ext-/bug_reporter/test_bug_reporter.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/-ext-/bug_reporter/test_bug_reporter.rb b/test/-ext-/bug_reporter/test_bug_reporter.rb
index 628fcd0340..2c677cc8a7 100644
--- a/test/-ext-/bug_reporter/test_bug_reporter.rb
+++ b/test/-ext-/bug_reporter/test_bug_reporter.rb
@@ -19,7 +19,7 @@ def test_bug_reporter_add
args = ["--disable-gems", "-r-test-/bug_reporter",
"-C", tmpdir]
stdin = "register_sample_bug_reporter(12345); Process.kill :SEGV, $$"
- assert_in_out_err(args, stdin, [], expected_stderr, encoding: "ASCII-8BIT")
+ assert_in_out_err(args, stdin, [], expected_stderr, encoding: "ASCII-8BIT", timeout_error: nil)
ensure
FileUtils.rm_rf(tmpdir) if tmpdir
end
--
2.27.0

View File

@ -0,0 +1,22 @@
From 0689147586c6cb56b91bf0f368890f19d630ece1 Mon Sep 17 00:00:00 2001
From: nobletrout <nobletrout@gmail.com>
Date: Tue, 5 Feb 2019 08:14:02 -0500
Subject: [PATCH] remove unneeded gem require for ipaddr
ipaddr is a builtin class for ruby, that is occasionally merged. If the version isn't specified by the runtime dependency, then it will default to needing the latest gem rather than the version that ships with that version of ruby. That will lead to all kinds of potential dependency fails that are most likely unneeded since this gem already requires ruby > 2.3.0
---
ext/openssl/openssl.gemspec | 1 -
1 file changed, 1 deletion(-)
diff --git a/ext/openssl/openssl.gemspec b/ext/openssl/openssl.gemspec
index 7c17cd54..f721f247 100644
--- a/ext/openssl/openssl.gemspec
+++ b/ext/openssl/openssl.gemspec
@@ -21,7 +21,6 @@ Gem::Specification.new do |spec|
s.rubygems_version = "3.0.0.beta1"
s.summary = "OpenSSL provides SSL, TLS and general purpose cryptography."
- s.add_runtime_dependency("ipaddr", [">= 0"])
s.add_development_dependency("rake", [">= 0"])
s.add_development_dependency("rake-compiler", [">= 0"])
s.add_development_dependency("test-unit", ["~> 3.0"])

View File

@ -0,0 +1,178 @@
From c5806d668f84a86e9e6a522f84b8aa6cb4cdaae9 Mon Sep 17 00:00:00 2001
From: Ali Saidi <alisaidi@amazon.com>
Date: Wed, 5 Aug 2020 20:46:28 -0500
Subject: [PATCH 1/3] Enable unaligned accesses on arm64
64-bit Arm platforms support unaligned accesses.
Running the string benchmarks this change improves performance
by an average of 1.04x, min .96x, max 1.21x, median 1.01x
---
include/ruby/defines.h | 2 +-
regint.h | 2 +-
siphash.c | 2 +-
st.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/ruby/defines.h b/include/ruby/defines.h
index 49f673ef936a..0193275e8b78 100644
--- a/include/ruby/defines.h
+++ b/include/ruby/defines.h
@@ -485,7 +485,7 @@
#ifndef UNALIGNED_WORD_ACCESS
# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \
- defined(__powerpc64__) || \
+ defined(__powerpc64__) || defined(__aarch64__) || \
defined(__mc68020__)
# define UNALIGNED_WORD_ACCESS 1
# else
diff --git a/regint.h b/regint.h
index a2f5bbba1d1f..0740429688bc 100644
--- a/regint.h
+++ b/regint.h
@@ -52,7 +52,7 @@
#ifndef UNALIGNED_WORD_ACCESS
# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \
- defined(__powerpc64__) || \
+ defined(__powerpc64__) || defined(__aarch64__) || \
defined(__mc68020__)
# define UNALIGNED_WORD_ACCESS 1
# else
diff --git a/siphash.c b/siphash.c
index 153d2c690ab9..ddf8ee245d81 100644
--- a/siphash.c
+++ b/siphash.c
@@ -30,7 +30,7 @@
#ifndef UNALIGNED_WORD_ACCESS
# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \
- defined(__powerpc64__) || \
+ defined(__powerpc64__) || defined(__aarch64__) || \
defined(__mc68020__)
# define UNALIGNED_WORD_ACCESS 1
# endif
diff --git a/st.c b/st.c
index c11535ef9779..8be466bf733f 100644
--- a/st.c
+++ b/st.c
@@ -1815,7 +1815,7 @@ st_values_check(st_table *tab, st_data_t *values, st_index_t size,
#ifndef UNALIGNED_WORD_ACCESS
# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \
- defined(__powerpc64__) || \
+ defined(__powerpc64__) || defined(__aarch64__) || \
defined(__mc68020__)
# define UNALIGNED_WORD_ACCESS 1
# endif
From 79b7b9143fda0f33fc9375980cecc61eb42c6f66 Mon Sep 17 00:00:00 2001
From: Ali Saidi <alisaidi@amazon.com>
Date: Wed, 5 Aug 2020 21:04:37 -0500
Subject: [PATCH 2/3] arm64 enable gc optimizations
Similar to x86 and powerpc optimizations.
| |compare-ruby|built-ruby|
|:------|-----------:|---------:|
|hash1 | 0.225| 0.237|
| | -| 1.05x|
|hash2 | 0.110| 0.110|
| | 1.00x| -|
---
gc.c | 13 +++++++++++++
gc.h | 2 ++
2 files changed, 15 insertions(+)
diff --git a/gc.c b/gc.c
index 22972dfc806c..788f06f1586e 100644
--- a/gc.c
+++ b/gc.c
@@ -1153,6 +1153,19 @@ tick(void)
return val;
}
+#elif defined(__aarch64__) && defined(__GNUC__)
+typedef unsigned long tick_t;
+#define PRItick "lu"
+
+static __inline__ tick_t
+tick(void)
+{
+ unsigned long val;
+ __asm__ __volatile__ ("mrs %0, cntvct_el0", : "=r" (val));
+ return val;
+}
+
+
#elif defined(_WIN32) && defined(_MSC_VER)
#include <intrin.h>
typedef unsigned __int64 tick_t;
diff --git a/gc.h b/gc.h
index 6568079c54e5..47a4ca19a0c5 100644
--- a/gc.h
+++ b/gc.h
@@ -8,6 +8,8 @@
#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("movl\t%%esp, %0" : "=r" (*(p)))
#elif defined(__powerpc64__) && defined(__GNUC__)
#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("mr\t%0, %%r1" : "=r" (*(p)))
+#elif defined(__aarch64__) && defined(__GNUC__)
+#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("mov\t%0, sp" : "=r" (*(p)))
#else
NOINLINE(void rb_gc_set_stack_end(VALUE **stack_end_p));
#define SET_MACHINE_STACK_END(p) rb_gc_set_stack_end(p)
From c985b8c6868a380e44e285368af4a4f414ce3309 Mon Sep 17 00:00:00 2001
From: Ali Saidi <alisaidi@amazon.com>
Date: Wed, 5 Aug 2020 21:15:55 -0500
Subject: [PATCH 3/3] vm_exec.c: improve performance for arm64
| |compare-ruby|built-ruby|
|:------------------------------|-----------:|---------:|
|vm_array | 26.501M| 27.959M|
| | -| 1.06x|
|vm_attr_ivar | 21.606M| 31.429M|
| | -| 1.45x|
|vm_attr_ivar_set | 21.178M| 26.113M|
| | -| 1.23x|
|vm_backtrace | 6.621| 6.668|
| | -| 1.01x|
|vm_bigarray | 26.205M| 29.958M|
| | -| 1.14x|
|vm_bighash | 504.155k| 479.306k|
| | 1.05x| -|
|vm_block | 16.692M| 21.315M|
| | -| 1.28x|
|block_handler_type_iseq | 5.083| 7.004|
| | -| 1.38x|
---
vm_exec.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/vm_exec.c b/vm_exec.c
index ce2e053ee745..7aa56f6ad620 100644
--- a/vm_exec.c
+++ b/vm_exec.c
@@ -27,6 +27,9 @@ static void vm_insns_counter_count_insn(int insn) {}
#elif defined(__GNUC__) && defined(__powerpc64__)
#define DECL_SC_REG(type, r, reg) register type reg_##r __asm__("r" reg)
+#elif defined(__GNUC__) && defined(__aarch64__)
+#define DECL_SC_REG(type, r, reg) register type reg_##r __asm__("x" reg)
+
#else
#define DECL_SC_REG(type, r, reg) register type reg_##r
#endif
@@ -74,6 +77,11 @@ vm_exec_core(rb_execution_context_t *ec, VALUE initial)
DECL_SC_REG(rb_control_frame_t *, cfp, "15");
#define USE_MACHINE_REGS 1
+#elif defined(__GNUC__) && defined(__aarch64__)
+ DECL_SC_REG(const VALUE *, pc, "19");
+ DECL_SC_REG(rb_control_frame_t *, cfp, "20");
+#define USE_MACHINE_REGS 1
+
#else
register rb_control_frame_t *reg_cfp;
const VALUE *reg_pc;

View File

@ -1,11 +0,0 @@
--- ruby-1.8.6-p287/configure.in.i386 2009-03-16 00:55:15.000000000 +0900
+++ ruby-1.8.6-p287/configure.in 2009-03-16 01:42:41.000000000 +0900
@@ -1662,6 +1662,8 @@
configure_args=$ac_configure_args
AC_SUBST(configure_args)dnl
+target_cpu=`echo $target_cpu | sed s/i.86/i386/`
+
if test "$fat_binary" != no ; then
arch="fat-${target_os}"

View File

@ -1,72 +0,0 @@
diff -pruN ruby-1.8.6.orig/ext/bigdecimal/bigdecimal.c ruby-1.8.6/ext/bigdecimal/bigdecimal.c
--- ruby-1.8.6.orig/ext/bigdecimal/bigdecimal.c 2007-02-27 20:51:55.000000000 +0900
+++ ruby-1.8.6/ext/bigdecimal/bigdecimal.c 2007-03-15 21:14:32.000000000 +0900
@@ -2167,12 +2167,14 @@ VpGetDoubleNegZero(void) /* Returns the
return nzero;
}
+#if 0
VP_EXPORT int
VpIsNegDoubleZero(double v)
{
double z = VpGetDoubleNegZero();
return MemCmp(&v,&z,sizeof(v))==0;
}
+#endif
VP_EXPORT int
VpException(unsigned short f, const char *str,int always)
diff -pruN ruby-1.8.6.orig/parse.y ruby-1.8.6/parse.y
--- ruby-1.8.6.orig/parse.y 2007-03-03 16:30:46.000000000 +0900
+++ ruby-1.8.6/parse.y 2007-03-15 21:15:58.000000000 +0900
@@ -4511,6 +4511,7 @@ rb_node_newnode(type, a0, a1, a2)
return n;
}
+#if 0
static enum node_type
nodetype(node) /* for debug */
NODE *node;
@@ -4524,6 +4525,7 @@ nodeline(node)
{
return nd_line(node);
}
+#endif
static NODE*
newline_node(node)
diff -pruN ruby-1.8.6.orig/regex.c ruby-1.8.6/regex.c
--- ruby-1.8.6.orig/regex.c 2007-02-27 20:51:55.000000000 +0900
+++ ruby-1.8.6/regex.c 2007-03-15 21:16:52.000000000 +0900
@@ -998,6 +998,7 @@ print_partial_compiled_pattern(start, en
}
+#if 0
static void
print_compiled_pattern(bufp)
struct re_pattern_buffer *bufp;
@@ -1006,6 +1007,7 @@ print_compiled_pattern(bufp)
print_partial_compiled_pattern(buffer, buffer + bufp->used);
}
+#endif
static char*
calculate_must_string(start, end)
@@ -2586,6 +2588,7 @@ insert_jump_n(op, from, to, current_end,
If you call this function, you must zero out pending_exact. */
+#if 0
static void
insert_op(op, there, current_end)
int op;
@@ -2599,6 +2602,7 @@ insert_op(op, there, current_end)
there[0] = (char)op;
}
+#endif
/* Open up space at location THERE, and insert operation OP followed by

View File

@ -1,51 +0,0 @@
diff -ruN ruby-1.8.4.orig/configure.in ruby-1.8.4/configure.in
--- ruby-1.8.4.orig/configure.in 2006-04-20 12:53:38.000000000 +0900
+++ ruby-1.8.4/configure.in 2006-04-20 13:06:07.000000000 +0900
@@ -1472,12 +1472,16 @@
esac
RUBY_SITE_LIB_PATH3="${RUBY_SITE_LIB_PATH2}/${MAJOR}.${MINOR}"
RUBY_SITE_LIB_PATH2="${RUBY_SITE_LIB_PATH}/${MAJOR}.${MINOR}"
+RUBY_DEPRECATED_SITE_LIB_PATH="${SITE_DIR2}/${MAJOR}.${MINOR}"
AC_DEFINE_UNQUOTED(RUBY_LIB, "${RUBY_LIB_PATH}")
AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, "${RUBY_SITE_LIB_PATH}")
AC_DEFINE_UNQUOTED(RUBY_SITE_LIB2, "${RUBY_SITE_LIB_PATH2}")
AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_OLD_SITE_LIB, "${libdir}/site_ruby")
AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_OLD_SITE_LIB2, "${libdir}/site_ruby/${MAJOR}.${MINOR}")
+AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_LIB, "${RUBY_LIB_PATH2}")
+AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_SITE_LIB, "${SITE_DIR2}")
+AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_SITE_LIB2, "${RUBY_DEPRECATED_SITE_LIB_PATH}")
AC_SUBST(arch)dnl
AC_SUBST(sitearch)dnl
diff -ruN ruby-1.8.4.orig/ruby.c ruby-1.8.4/ruby.c
--- ruby-1.8.4.orig/ruby.c 2005-12-12 09:36:52.000000000 +0900
+++ ruby-1.8.4/ruby.c 2006-04-20 12:59:50.000000000 +0900
@@ -292,11 +292,17 @@
#endif
incpush(RUBY_RELATIVE(RUBY_SITE_LIB2));
+#ifdef RUBY_DEPRECATED_SITE_LIB
+ incpush(RUBY_RELATIVE(RUBY_DEPRECATED_SITE_LIB2));
+#endif
#ifdef RUBY_SITE_THIN_ARCHLIB
incpush(RUBY_RELATIVE(RUBY_SITE_THIN_ARCHLIB));
#endif
incpush(RUBY_RELATIVE(RUBY_SITE_ARCHLIB));
incpush(RUBY_RELATIVE(RUBY_SITE_LIB));
+#ifdef RUBY_DEPRECATED_SITE_LIB
+ incpush(RUBY_RELATIVE(RUBY_DEPRECATED_SITE_LIB));
+#endif
#ifdef RUBY_DEPRECATED_OLD_SITE_LIB2
incpush(RUBY_RELATIVE(RUBY_DEPRECATED_OLD_SITE_LIB2));
#endif
@@ -308,6 +314,9 @@
#endif
incpush(RUBY_RELATIVE(RUBY_LIB));
+#ifdef RUBY_DEPRECATED_LIB
+ incpush(RUBY_RELATIVE(RUBY_DEPRECATED_LIB));
+#endif
#ifdef RUBY_THIN_ARCHLIB
incpush(RUBY_RELATIVE(RUBY_THIN_ARCHLIB));
#endif

View File

@ -1,39 +0,0 @@
diff -ruN ruby-1.8.4.orig/configure.in ruby-1.8.4/configure.in
--- ruby-1.8.4.orig/configure.in 2006-06-07 13:58:03.000000000 +0900
+++ ruby-1.8.4/configure.in 2006-06-07 15:54:36.000000000 +0900
@@ -1476,6 +1476,8 @@
AC_DEFINE_UNQUOTED(RUBY_LIB, "${RUBY_LIB_PATH}")
AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, "${RUBY_SITE_LIB_PATH}")
AC_DEFINE_UNQUOTED(RUBY_SITE_LIB2, "${RUBY_SITE_LIB_PATH2}")
+AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_OLD_SITE_LIB, "${libdir}/site_ruby")
+AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_OLD_SITE_LIB2, "${libdir}/site_ruby/${MAJOR}.${MINOR}")
AC_SUBST(arch)dnl
AC_SUBST(sitearch)dnl
@@ -1506,6 +1508,7 @@
AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH2}/${arch}")
AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, "${RUBY_SITE_LIB_PATH3}/${sitearch}")
+AC_DEFINE_UNQUOTED(RUBY_DEPRECATED_OLD_SITE_ARCHLIB, "${libdir}/site_ruby/${MAJOR}.${MINOR}/${sitearch}")
AC_ARG_WITH(search-path,
[ --with-search-path=DIR specify the additional search path],
diff -ruN ruby-1.8.4.orig/ruby.c ruby-1.8.4/ruby.c
--- ruby-1.8.4.orig/ruby.c 2005-12-12 09:36:52.000000000 +0900
+++ ruby-1.8.4/ruby.c 2006-06-07 15:56:14.000000000 +0900
@@ -297,6 +297,15 @@
#endif
incpush(RUBY_RELATIVE(RUBY_SITE_ARCHLIB));
incpush(RUBY_RELATIVE(RUBY_SITE_LIB));
+#ifdef RUBY_DEPRECATED_OLD_SITE_LIB2
+ incpush(RUBY_RELATIVE(RUBY_DEPRECATED_OLD_SITE_LIB2));
+#endif
+#ifdef RUBY_DEPRECATED_OLD_SITE_ARCHLIB
+ incpush(RUBY_RELATIVE(RUBY_DEPRECATED_OLD_SITE_ARCHLIB));
+#endif
+#ifdef RUBY_DEPRECATED_OLD_SITE_LIB
+ incpush(RUBY_RELATIVE(RUBY_DEPRECATED_OLD_SITE_LIB));
+#endif
incpush(RUBY_RELATIVE(RUBY_LIB));
#ifdef RUBY_THIN_ARCHLIB

39
ruby-exercise.stp Normal file
View File

@ -0,0 +1,39 @@
/* Example tapset file.
*
* You can execute the tapset using following command (please adjust the path
* prior running the command, if needed):
*
* stap /usr/share/doc/ruby-2.0.0.0/ruby-exercise.stp -c "ruby -e \"puts 'test'\""
*/
probe ruby.cmethod.entry {
printf("%d -> %s::%s %s:%d\n", tid(), classname, methodname, file, line);
}
probe ruby.cmethod.return {
printf("%d <- %s::%s %s:%d\n", tid(), classname, methodname, file, line);
}
probe ruby.method.entry {
printf("%d -> %s::%s %s:%d\n", tid(), classname, methodname, file, line);
}
probe ruby.method.return {
printf("%d <- %s::%s %s:%d\n", tid(), classname, methodname, file, line);
}
probe ruby.gc.mark.begin { printf("%d gc.mark.begin\n", tid()); }
probe ruby.gc.mark.end { printf("%d gc.mark.end\n", tid()); }
probe ruby.gc.sweep.begin { printf("%d gc.sweep.begin\n", tid()); }
probe ruby.gc.sweep.end { printf("%d gc.sweep.end\n", tid()); }
probe ruby.object.create{
printf("%d obj.create %s %s:%d\n", tid(), classname, file, line);
}
probe ruby.raise {
printf("%d raise %s %s:%d\n", tid(), classname, file, line);
}

View File

@ -1,20 +0,0 @@
;; ruby-mode-init.el
;; Created: 2002-02-01
;;
(if (featurep 'xemacs)
(setq load-path (cons "/usr/lib/xemacs/xemacs-packages/lisp/ruby-mode" load-path))
(setq load-path (cons "/usr/share/emacs/site-lisp/ruby-mode" load-path)))
(autoload 'ruby-mode "ruby-mode" "Mode for editing ruby source files" t)
(setq auto-mode-alist
(cons '("\\.rb$" . ruby-mode) auto-mode-alist))
(setq interpreter-mode-alist
(cons '("ruby" . ruby-mode) interpreter-mode-alist))
(autoload 'run-ruby "inf-ruby" "Run an inferior Ruby process")
(autoload 'inf-ruby-keys "inf-ruby" "Set local key defs for inf-ruby in ruby-mode")
(add-hook 'ruby-mode-hook
'(lambda ()
(inf-ruby-keys)))

View File

@ -1,12 +0,0 @@
diff -ruN ruby-1.8.3.orig/mkconfig.rb ruby-1.8.3/mkconfig.rb
--- ruby-1.8.3.orig/mkconfig.rb 2005-09-21 15:10:57.000000000 +0900
+++ ruby-1.8.3/mkconfig.rb 2005-09-21 15:17:32.000000000 +0900
@@ -74,7 +74,7 @@
drive = File::PATH_SEPARATOR == ';'
-prefix = '/lib/ruby/' + RUBY_VERSION.sub(/\.\d+$/, '') + '/' + RUBY_PLATFORM
+prefix = '/lib64/ruby/' + RUBY_VERSION.sub(/\.\d+$/, '') + '/' + RUBY_PLATFORM
print " TOPDIR = File.dirname(__FILE__).chomp!(#{prefix.dump})\n"
print " DESTDIR = ", (drive ? "TOPDIR && TOPDIR[/\\A[a-z]:/i] || " : ""), "'' unless defined? DESTDIR\n"
print " CONFIG = {}\n"

View File

@ -1,94 +0,0 @@
diff -pruN ruby-1.8.6-p287.orig/configure.in ruby-1.8.6-p287/configure.in
--- ruby-1.8.6-p287.orig/configure.in 2008-07-13 00:03:28.000000000 +0900
+++ ruby-1.8.6-p287/configure.in 2008-08-14 01:08:00.000000000 +0900
@@ -1608,6 +1608,13 @@ case "$target_os" in
rubyw_install_name="$RUBYW_INSTALL_NAME"
;;
esac
+
+AC_ARG_WITH(ruby-prefix,
+ AC_HELP_STRING([--with-ruby-prefix], [build ruby with the special library prefix.])
+ ,,
+ with_ruby_prefix=no)
+
+if test "x$with_ruby_prefix" = "x"; then
case "$target_os" in
cygwin*|mingw*|*djgpp*|os2-emx*)
RUBY_LIB_PREFIX="/lib/ruby"
@@ -1616,20 +1623,29 @@ case "$target_os" in
RUBY_LIB_PREFIX="${prefix}/lib/ruby"
;;
esac
+else
+ RUBY_LIB_PREFIX="${with_ruby_prefix}/ruby"
+fi
RUBY_LIB_PATH="${RUBY_LIB_PREFIX}/${MAJOR}.${MINOR}"
+RUBY_LIB_PATH2="${libdir}/ruby/${MAJOR}.${MINOR}"
AC_ARG_WITH(sitedir,
[ --with-sitedir=DIR site libraries in DIR [PREFIX/lib/ruby/site_ruby]],
[sitedir=$withval],
[sitedir='${prefix}/lib/ruby/site_ruby'])
-SITE_DIR=`eval echo \\"${sitedir}\\"`
+SITE_DIR=`eval echo \\"${sitedir}\\" | sed -e "s/lib64/lib/"`
+_fc_sitedir="\$(DESTDIR)${sitedir}"
+SITE_DIR2=`eval echo \\"${_fc_sitedir}\\"`
+sitedir=`eval echo \\"${sitedir}\\" | sed -e "s/lib64/lib/"`
case "$target_os" in
cygwin*|mingw*|*djgpp*|os2-emx*)
RUBY_SITE_LIB_PATH="`expr "$SITE_DIR" : "$prefix\(/.*\)"`" ||
RUBY_SITE_LIB_PATH="$SITE_DIR";;
*)
- RUBY_SITE_LIB_PATH="$SITE_DIR";;
+ RUBY_SITE_LIB_PATH="$SITE_DIR";
+ RUBY_SITE_LIB_PATH2="$SITE_DIR2";;
esac
+RUBY_SITE_LIB_PATH3="${RUBY_SITE_LIB_PATH2}/${MAJOR}.${MINOR}"
RUBY_SITE_LIB_PATH2="${RUBY_SITE_LIB_PATH}/${MAJOR}.${MINOR}"
AC_DEFINE_UNQUOTED(RUBY_LIB, "${RUBY_LIB_PATH}")
@@ -1639,6 +1655,7 @@ AC_DEFINE_UNQUOTED(RUBY_SITE_LIB2, "${RU
AC_SUBST(arch)dnl
AC_SUBST(sitearch)dnl
AC_SUBST(sitedir)dnl
+AC_SUBST(_fc_sitedir)dnl
configure_args=$ac_configure_args
AC_SUBST(configure_args)dnl
@@ -1647,7 +1664,7 @@ if test "$fat_binary" != no ; then
arch="fat-${target_os}"
AC_DEFINE_UNQUOTED(RUBY_THIN_ARCHLIB,
- "${RUBY_LIB_PATH}/" __ARCHITECTURE__ "-${target_os}")
+ "${RUBY_LIB_PATH2}/" __ARCHITECTURE__ "-${target_os}")
AC_DEFINE_UNQUOTED(RUBY_SITE_THIN_ARCHLIB,
"${RUBY_SITE_LIB_PATH}/" __ARCHITECTURE__ "-${target_os}")
@@ -1662,8 +1679,8 @@ case "$target_os" in
*) sitearch="${arch}" ;;
esac
-AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH}/${arch}")
-AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, "${RUBY_SITE_LIB_PATH2}/${sitearch}")
+AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, "${RUBY_LIB_PATH2}/${arch}")
+AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, "${RUBY_SITE_LIB_PATH3}/${sitearch}")
AC_ARG_WITH(search-path,
[ --with-search-path=DIR specify the additional search path],
diff -pruN ruby-1.8.6-p287.orig/mkconfig.rb ruby-1.8.6-p287/mkconfig.rb
--- ruby-1.8.6-p287.orig/mkconfig.rb 2008-06-08 01:37:10.000000000 +0900
+++ ruby-1.8.6-p287/mkconfig.rb 2008-08-14 01:08:00.000000000 +0900
@@ -139,10 +139,10 @@ print(*v_fast)
print(*v_others)
print <<EOS
CONFIG["ruby_version"] = "$(MAJOR).$(MINOR)"
- CONFIG["rubylibdir"] = "$(libdir)/ruby/$(ruby_version)"
- CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
+ CONFIG["rubylibdir"] = "$(prefix)/lib/ruby/$(ruby_version)"
+ CONFIG["archdir"] = "$(libdir)/ruby/$(ruby_version)/$(arch)"
CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
- CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
+ CONFIG["sitearchdir"] = "$(_fc_sitedir)/$(ruby_version)/$(sitearch)"
CONFIG["topdir"] = File.dirname(__FILE__)
MAKEFILE_CONFIG = {}
CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup}

2437
ruby.spec

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,167 @@
From 912d141a351053d0f6d915b5e7807f6a8f4c0631 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Tue, 4 Feb 2020 17:25:56 +0100
Subject: [PATCH 1/2] Make non "test_" method private
---
test/rubygems/test_require.rb | 2 ++
1 file changed, 2 insertions(+)
diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb
index aa2675af5d..d618a93473 100644
--- a/test/rubygems/test_require.rb
+++ b/test/rubygems/test_require.rb
@@ -532,6 +532,8 @@ def test_require_bundler_with_bundler_version
end
end
+ private
+
def silence_warnings
old_verbose, $VERBOSE = $VERBOSE, false
yield
From b3944384f44b869985051863d8b05b545d09a585 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Tue, 4 Feb 2020 17:26:28 +0100
Subject: [PATCH 2/2] Fix require issue with file extension priority
If `require "a"` is run when two folders have been specified in the -I
option including a "a.rb" file and a "a.so" file respectively, the ruby
spec says that the ".rb" file should always be preferred. However, the
logic we added in https://github.com/rubygems/rubygems/commit/6b81076d9
to make the -I option always beat default gems does not respect this
spec, creating a difference from the original ruby-core's require.
[the ruby spec says]: https://github.com/ruby/spec/blob/d80a6e2b221d4f17a8cadcac75ef950c59cba901/core/kernel/shared/require.rb#L234-L246
---
lib/rubygems/core_ext/kernel_require.rb | 28 +++++------
test/rubygems/test_require.rb | 62 +++++++++++++++++++++++++
2 files changed, 74 insertions(+), 16 deletions(-)
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index 60f4d18712..369f2c743e 100644
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -43,18 +43,18 @@ def require(path)
# https://github.com/rubygems/rubygems/pull/1868
resolved_path = begin
rp = nil
- $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp|
- safe_lp = lp.dup.tap(&Gem::UNTAINT)
- begin
- if File.symlink? safe_lp # for backward compatibility
- next
+ Gem.suffixes.each do |s|
+ $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp|
+ safe_lp = lp.dup.tap(&Gem::UNTAINT)
+ begin
+ if File.symlink? safe_lp # for backward compatibility
+ next
+ end
+ rescue SecurityError
+ RUBYGEMS_ACTIVATION_MONITOR.exit
+ raise
end
- rescue SecurityError
- RUBYGEMS_ACTIVATION_MONITOR.exit
- raise
- end
- Gem.suffixes.each do |s|
full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
if File.file?(full_path)
rp = full_path
@@ -67,12 +67,8 @@ def require(path)
end
if resolved_path
- begin
- RUBYGEMS_ACTIVATION_MONITOR.exit
- return gem_original_require(resolved_path)
- rescue LoadError
- RUBYGEMS_ACTIVATION_MONITOR.enter
- end
+ RUBYGEMS_ACTIVATION_MONITOR.exit
+ return gem_original_require(resolved_path)
end
if spec = Gem.find_unresolved_default_spec(path)
diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb
index d618a93473..7cffbfa7fe 100644
--- a/test/rubygems/test_require.rb
+++ b/test/rubygems/test_require.rb
@@ -120,6 +120,24 @@ def test_dash_i_beats_default_gems
Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
end
+ def test_dash_i_respects_default_library_extension_priority
+ skip "extensions don't quite work on jruby" if Gem.java_platform?
+
+ dash_i_ext_arg = util_install_extension_file('a')
+ dash_i_lib_arg = util_install_ruby_file('a')
+
+ lp = $LOAD_PATH.dup
+
+ begin
+ $LOAD_PATH.unshift dash_i_lib_arg
+ $LOAD_PATH.unshift dash_i_ext_arg
+ assert_require 'a'
+ assert_match(/a\.rb$/, $LOADED_FEATURES.last)
+ ensure
+ $LOAD_PATH.replace lp
+ end
+ end
+
def test_concurrent_require
Object.const_set :FILE_ENTERED_LATCH, Latch.new(2)
Object.const_set :FILE_EXIT_LATCH, Latch.new(1)
@@ -541,4 +559,48 @@ def silence_warnings
$VERBOSE = old_verbose
end
+ def util_install_extension_file(name)
+ spec = quick_gem name
+ util_build_gem spec
+
+ spec.extensions << "extconf.rb"
+ write_file File.join(@tempdir, "extconf.rb") do |io|
+ io.write <<-RUBY
+ require "mkmf"
+ create_makefile("#{name}")
+ RUBY
+ end
+
+ write_file File.join(@tempdir, "#{name}.c") do |io|
+ io.write <<-C
+ #include <ruby.h>
+ void Init_#{name}() { }
+ C
+ end
+
+ spec.files += ["extconf.rb", "#{name}.c"]
+
+ so = File.join(spec.gem_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}")
+ refute_path_exists so
+
+ path = Gem::Package.build spec
+ installer = Gem::Installer.at path
+ installer.install
+ assert_path_exists so
+
+ spec.gem_dir
+ end
+
+ def util_install_ruby_file(name)
+ dir_lib = Dir.mktmpdir("test_require_lib", @tempdir)
+ dash_i_lib_arg = File.join dir_lib
+
+ a_rb = File.join dash_i_lib_arg, "#{name}.rb"
+
+ FileUtils.mkdir_p File.dirname a_rb
+ File.open(a_rb, 'w') { |f| f.write "# #{name}.rb" }
+
+ dash_i_lib_arg
+ end
+
end

View File

@ -0,0 +1,324 @@
From 00d98eb8a3245fb93a475ecbbbc4c7ec7e6704cd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Tue, 19 May 2020 14:00:00 +0200
Subject: [PATCH 1/5] Fix performance regression in `require`
Our check for `-I` paths should not go through all activated gems.
---
lib/rubygems.rb | 10 ++++++++++
lib/rubygems/core_ext/kernel_require.rb | 2 +-
lib/rubygems/test_case.rb | 1 +
test/rubygems/test_require.rb | 11 +++++++++++
4 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/lib/rubygems.rb b/lib/rubygems.rb
index 843cb49e4a..d1a9a1c7e1 100644
--- a/lib/rubygems.rb
+++ b/lib/rubygems.rb
@@ -662,10 +662,20 @@ def self.load_path_insert_index
index
end
+ ##
+ # The number of paths in the `$LOAD_PATH` from activated gems. Used to
+ # prioritize `-I` and `ENV['RUBYLIB`]` entries during `require`.
+
+ def self.activated_gem_paths
+ @activated_gem_paths ||= 0
+ end
+
##
# Add a list of paths to the $LOAD_PATH at the proper place.
def self.add_to_load_path(*paths)
+ @activated_gem_paths = activated_gem_paths + paths.size
+
insert_index = load_path_insert_index
if insert_index
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index ed24111bd5..7625ce1bee 100644
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -47,7 +47,7 @@ def require(path)
load_path_insert_index = Gem.load_path_insert_index
break unless load_path_insert_index
- $LOAD_PATH[0...load_path_insert_index].each do |lp|
+ $LOAD_PATH[0...load_path_insert_index - Gem.activated_gem_paths].each do |lp|
safe_lp = lp.dup.tap(&Gem::UNTAINT)
begin
if File.symlink? safe_lp # for backward compatibility
diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb
index a05a2898d1..53dd495aef 100644
--- a/lib/rubygems/test_case.rb
+++ b/lib/rubygems/test_case.rb
@@ -385,6 +385,7 @@ def setup
Gem::Security.reset
Gem.loaded_specs.clear
+ Gem.instance_variable_set(:@activated_gem_paths, 0)
Gem.clear_default_specs
Bundler.reset!
diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb
index f36892f8cc..9f2fe3439a 100644
--- a/test/rubygems/test_require.rb
+++ b/test/rubygems/test_require.rb
@@ -382,6 +382,17 @@ def test_default_gem_require_activates_just_once
assert_equal 0, times_called
end
+ def test_second_gem_require_does_not_resolve_path_manually_before_going_through_standard_require
+ a1 = util_spec "a", "1", nil, "lib/test_gem_require_a.rb"
+ install_gem a1
+
+ assert_require "test_gem_require_a"
+
+ stub(:gem_original_require, ->(path) { assert_equal "test_gem_require_a", path }) do
+ require "test_gem_require_a"
+ end
+ end
+
def test_realworld_default_gem
testing_ruby_repo = !ENV["GEM_COMMAND"].nil?
skip "this test can't work under ruby-core setup" if testing_ruby_repo || java_platform?
From ae95885dff6189c5ac59bbdf685cb4ec4751fdef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Tue, 19 May 2020 14:08:19 +0200
Subject: [PATCH 2/5] Refactor `Gem.load_path_insert_index`
---
lib/rubygems.rb | 13 +++----------
lib/rubygems/core_ext/kernel_require.rb | 5 +----
2 files changed, 4 insertions(+), 14 deletions(-)
diff --git a/lib/rubygems.rb b/lib/rubygems.rb
index d1a9a1c7e1..ca80326459 100644
--- a/lib/rubygems.rb
+++ b/lib/rubygems.rb
@@ -659,7 +659,7 @@ def self.load_path_insert_index
index = $LOAD_PATH.index RbConfig::CONFIG['sitelibdir']
- index
+ index || 0
end
##
@@ -676,15 +676,8 @@ def self.activated_gem_paths
def self.add_to_load_path(*paths)
@activated_gem_paths = activated_gem_paths + paths.size
- insert_index = load_path_insert_index
-
- if insert_index
- # gem directories must come after -I and ENV['RUBYLIB']
- $LOAD_PATH.insert(insert_index, *paths)
- else
- # we are probably testing in core, -I and RUBYLIB don't apply
- $LOAD_PATH.unshift(*paths)
- end
+ # gem directories must come after -I and ENV['RUBYLIB']
+ $LOAD_PATH.insert(Gem.load_path_insert_index, *paths)
end
@yaml_loaded = false
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index 7625ce1bee..decf4829f1 100644
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -44,10 +44,7 @@ def require(path)
resolved_path = begin
rp = nil
Gem.suffixes.each do |s|
- load_path_insert_index = Gem.load_path_insert_index
- break unless load_path_insert_index
-
- $LOAD_PATH[0...load_path_insert_index - Gem.activated_gem_paths].each do |lp|
+ $LOAD_PATH[0...Gem.load_path_insert_index - Gem.activated_gem_paths].each do |lp|
safe_lp = lp.dup.tap(&Gem::UNTAINT)
begin
if File.symlink? safe_lp # for backward compatibility
From da1492e9d7b28d068fbfbb0ba1cafcc516681567 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Tue, 19 May 2020 14:32:12 +0200
Subject: [PATCH 3/5] Extract a local outside the loop
---
lib/rubygems/core_ext/kernel_require.rb | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index decf4829f1..6a7faaf2d1 100644
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -43,8 +43,9 @@ def require(path)
# https://github.com/rubygems/rubygems/pull/1868
resolved_path = begin
rp = nil
+ load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
Gem.suffixes.each do |s|
- $LOAD_PATH[0...Gem.load_path_insert_index - Gem.activated_gem_paths].each do |lp|
+ $LOAD_PATH[0...load_path_check_index].each do |lp|
safe_lp = lp.dup.tap(&Gem::UNTAINT)
begin
if File.symlink? safe_lp # for backward compatibility
From 22ad5717c38feda2375b53628d15ae3db2195684 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Thu, 21 May 2020 15:20:57 +0200
Subject: [PATCH 4/5] Fix `$LOADED_FEATURES` cache sometimes not respected
In the cases where the initial manually `-I` path resolution succeeded,
we were passing a full path to the original require effectively skipping
the `$LOADED_FEATURES` cache. With this change, we _only_ do the
resolution when a matching requirable path is found in a default gem. In
that case, we skip activation of the default gem if we detect that the
required file will be picked up for a `-I` path.
---
lib/rubygems/core_ext/kernel_require.rb | 53 +++++++++++--------------
test/rubygems/test_require.rb | 29 ++++++++++++++
2 files changed, 53 insertions(+), 29 deletions(-)
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index 6a7faaf2d1..81e37b98bf 100644
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -39,46 +39,41 @@ def require(path)
path = path.to_path if path.respond_to? :to_path
- # Ensure -I beats a default gem
- # https://github.com/rubygems/rubygems/pull/1868
- resolved_path = begin
- rp = nil
- load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
- Gem.suffixes.each do |s|
- $LOAD_PATH[0...load_path_check_index].each do |lp|
- safe_lp = lp.dup.tap(&Gem::UNTAINT)
- begin
- if File.symlink? safe_lp # for backward compatibility
- next
+ if spec = Gem.find_unresolved_default_spec(path)
+ # Ensure -I beats a default gem
+ # https://github.com/rubygems/rubygems/pull/1868
+ resolved_path = begin
+ rp = nil
+ load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
+ Gem.suffixes.each do |s|
+ $LOAD_PATH[0...load_path_check_index].each do |lp|
+ safe_lp = lp.dup.tap(&Gem::UNTAINT)
+ begin
+ if File.symlink? safe_lp # for backward compatibility
+ next
+ end
+ rescue SecurityError
+ RUBYGEMS_ACTIVATION_MONITOR.exit
+ raise
end
- rescue SecurityError
- RUBYGEMS_ACTIVATION_MONITOR.exit
- raise
- end
- full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
- if File.file?(full_path)
- rp = full_path
- break
+ full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
+ if File.file?(full_path)
+ rp = full_path
+ break
+ end
end
+ break if rp
end
- break if rp
+ rp
end
- rp
- end
- if resolved_path
- RUBYGEMS_ACTIVATION_MONITOR.exit
- return gem_original_require(resolved_path)
- end
-
- if spec = Gem.find_unresolved_default_spec(path)
begin
Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease)
rescue Exception
RUBYGEMS_ACTIVATION_MONITOR.exit
raise
- end
+ end unless resolved_path
end
# If there are no unresolved deps, then we can use just try
diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb
index 9f2fe3439a..2b11e26dfe 100644
--- a/test/rubygems/test_require.rb
+++ b/test/rubygems/test_require.rb
@@ -45,6 +45,35 @@ def refute_require(path)
refute require(path), "'#{path}' was not yet required"
end
+ def test_respect_loaded_features_caching_like_standard_require
+ dir = Dir.mktmpdir("test_require", @tempdir)
+
+ lp1 = File.join dir, 'foo1'
+ foo1 = File.join lp1, 'foo.rb'
+
+ FileUtils.mkdir_p lp1
+ File.open(foo1, 'w') { |f| f.write "class Object; HELLO = 'foo1' end" }
+
+ lp = $LOAD_PATH.dup
+
+ $LOAD_PATH.unshift lp1
+ assert_require 'foo'
+ assert_equal "foo1", ::Object::HELLO
+
+ lp2 = File.join dir, 'foo2'
+ foo2 = File.join lp2, 'foo.rb'
+
+ FileUtils.mkdir_p lp2
+ File.open(foo2, 'w') { |f| f.write "class Object; HELLO = 'foo2' end" }
+
+ $LOAD_PATH.unshift lp2
+ refute_require 'foo'
+ assert_equal "foo1", ::Object::HELLO
+ ensure
+ $LOAD_PATH.replace lp
+ Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
+ end
+
# Providing -I on the commandline should always beat gems
def test_dash_i_beats_gems
a1 = util_spec "a", "1", {"b" => "= 1"}, "lib/test_gem_require_a.rb"
From db872c7a18d616f4447bdcca3130be6db9e5cb03 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Sat, 23 May 2020 20:18:41 +0200
Subject: [PATCH 5/5] Remove direct reference to PR
The code is quite different now, so I think the link might be even
confusing. If you want to know more, use git history.
---
lib/rubygems/core_ext/kernel_require.rb | 1 -
1 file changed, 1 deletion(-)
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index 81e37b98bf..115ae0cb50 100644
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -41,7 +41,6 @@ def require(path)
if spec = Gem.find_unresolved_default_spec(path)
# Ensure -I beats a default gem
- # https://github.com/rubygems/rubygems/pull/1868
resolved_path = begin
rp = nil
load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths

View File

@ -0,0 +1,92 @@
From c5197b2ab35ba389f48918e0c773b43b6dca2fa5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Fri, 7 Feb 2020 17:16:05 +0100
Subject: [PATCH 1/3] Tweaks to get test passing more reliably
---
test/rubygems/test_require.rb | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb
index 7cffbfa7fe..67c55416d4 100644
--- a/test/rubygems/test_require.rb
+++ b/test/rubygems/test_require.rb
@@ -567,18 +567,20 @@ def util_install_extension_file(name)
write_file File.join(@tempdir, "extconf.rb") do |io|
io.write <<-RUBY
require "mkmf"
+ CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
create_makefile("#{name}")
RUBY
end
write_file File.join(@tempdir, "#{name}.c") do |io|
io.write <<-C
- #include <ruby.h>
void Init_#{name}() { }
C
end
- spec.files += ["extconf.rb", "#{name}.c"]
+ write_file File.join(@tempdir, "depend")
+
+ spec.files += ["extconf.rb", "depend", "#{name}.c"]
so = File.join(spec.gem_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}")
refute_path_exists so
From 7bfd7319cd751837c3ccaf1d97b02846eaaf39d5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Tue, 11 Feb 2020 11:56:06 +0100
Subject: [PATCH 2/3] Fix bug bug calculating $LOAD_PATH's to check in
`require`
In `Gem.load_path_insert_index` is not set, we end up having
`$LOAD_PATH[0...-1]`, unintentionally skipping the last $LOAD_PATH entry
from the check.
The correct thing to do in that case is to not even try since we have no
way of distinguisng default LOAD_PATH entries from those added with -I.
---
lib/rubygems/core_ext/kernel_require.rb | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index 369f2c743e..a8d170f13a 100644
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -44,7 +44,10 @@ def require(path)
resolved_path = begin
rp = nil
Gem.suffixes.each do |s|
- $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp|
+ load_path_insert_index = Gem.load_path_insert_index
+ break unless load_path_insert_index
+
+ $LOAD_PATH[0...load_path_insert_index].each do |lp|
safe_lp = lp.dup.tap(&Gem::UNTAINT)
begin
if File.symlink? safe_lp # for backward compatibility
From 4fc0ab21c0f7713829abb522ce3b6d8e24c126b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Fri, 14 Feb 2020 02:03:04 +0100
Subject: [PATCH 3/3] Exclude empty suffix from `-I` require loop
---
lib/rubygems/core_ext/kernel_require.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index a8d170f13a..9712fb6ac0 100644
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -43,7 +43,7 @@ def require(path)
# https://github.com/rubygems/rubygems/pull/1868
resolved_path = begin
rp = nil
- Gem.suffixes.each do |s|
+ Gem.suffixes[1..-1].each do |s|
load_path_insert_index = Gem.load_path_insert_index
break unless load_path_insert_index

View File

@ -0,0 +1,29 @@
From 301e30bf97dd603ca81d52b90186908575c4ddf8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
Date: Tue, 25 Feb 2020 15:01:44 +0100
Subject: [PATCH] Revert "Exclude empty suffix from `-I` require loop"
This reverts commit 4fc0ab21c0f7713829abb522ce3b6d8e24c126b3.
Technically, extensionless ruby files are valid ruby files that can be
required. For example, `bin/bundle` is sometimes required from other
binstubs even if it's also runnable directly.
So, we should technically consider this kind of files too.
---
lib/rubygems/core_ext/kernel_require.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
index 9712fb6ac0..a8d170f13a 100644
--- a/lib/rubygems/core_ext/kernel_require.rb
+++ b/lib/rubygems/core_ext/kernel_require.rb
@@ -43,7 +43,7 @@ def require(path)
# https://github.com/rubygems/rubygems/pull/1868
resolved_path = begin
rp = nil
- Gem.suffixes[1..-1].each do |s|
+ Gem.suffixes.each do |s|
load_path_insert_index = Gem.load_path_insert_index
break unless load_path_insert_index

6
rubygems.attr Normal file
View File

@ -0,0 +1,6 @@
%__rubygems_requires %{_rpmconfigdir}/rubygems.req
%__rubygems_provides %{_rpmconfigdir}/rubygems.prov
%__rubygems_conflicts %{_rpmconfigdir}/rubygems.con
# In non-gem packages, the %%{gem_name} macro is not available and the macro
# stays unexpanded which leads to "invalid regex" error (rhbz#1154067).
%__rubygems_path ^%{?gem_name:%{gem_spec}}%{!?gem_name:this_should_never_match_anything}$

52
rubygems.con Normal file
View File

@ -0,0 +1,52 @@
#!/usr/bin/ruby
require 'rubygems/package'
module RubyGemsReq
module Helpers
# Keep only '!=' requirements.
def self.conflicts(requirements)
conflicts = requirements.select {|r| r.first == '!='}
end
# Converts Gem::Requirement into array of requirements strings compatible
# with RPM .spec file.
def self.requirement_versions_to_rpm(requirement)
self.conflicts(requirement.requirements).map do |op, version|
version == Gem::Version.new(0) ? "" : "= #{version}"
end
end
end
# Report conflicting gem dependencies including their version.
def self.gem_depenencies(specification)
specification.runtime_dependencies.each do |dependency|
conflict_strings = Helpers::requirement_versions_to_rpm(dependency.requirement).map do |requirement|
requirement_string = "rubygem(#{dependency.name}) #{requirement}"
end
if conflict_strings.length > 0
conflict_string = conflict_strings.join(' with ')
conflict_string.prepend('(').concat(')') if conflict_strings.length > 1
puts conflict_string
end
end
end
# Reports all conflicts specified by all provided .gemspec files.
def self.conflicts
while filename = gets
filename.strip!
begin
specification = Gem::Specification.load filename
gem_depenencies(specification)
rescue => e
# Ignore all errors.
end
end
end
end
if __FILE__ == $0
RubyGemsReq::conflicts
end

36
rubygems.prov Normal file
View File

@ -0,0 +1,36 @@
#!/usr/bin/ruby
require 'rubygems/package'
module RubyGemsProv
module Helpers
# If there is some prelease version files, such as rc1 (i.e. non-numeric
# field), prepend this field by tilde instead of dot.
def self.normalize_prerelease(version)
if version.prerelease?
prerelease = version.version.sub /^#{version.release}\./, ''
"#{version.release}~#{prerelease}"
else
version.release
end
end
end
# Reports all functionality gem provides.
def self.provides
while filename = gets
filename.strip!
begin
specification = Gem::Specification.load filename
puts "rubygem(#{specification.name}) = #{Helpers::normalize_prerelease(specification.version)}"
rescue => e
# Ignore all errors.
end
end
end
end
if __FILE__ == $0
RubyGemsProv::provides
end

88
rubygems.req Normal file
View File

@ -0,0 +1,88 @@
#!/usr/bin/ruby
require 'rubygems/package'
module RubyGemsReq
module Helpers
# Expands '~>' and '!=' gem requirements.
def self.expand_requirement(requirements)
requirements.inject([]) do |output, r|
output.concat case r.first
when '~>'
expand_pessimistic_requirement(r)
when '!='
# If there is only the conflict requirement, we still need to depend
# on the specified gem.
if requirements.size == 1
Gem::Requirement.default.requirements
else
[]
end
else
[r]
end
end.reject {|r| r.empty? }
end
# Expands the pessimistic version operator '~>' into equivalent '>=' and
# '<' pair.
def self.expand_pessimistic_requirement(requirement)
next_version = Gem::Version.create(requirement.last).bump
return ['>=', requirement.last], ['<', next_version]
end
# Converts Gem::Requirement into array of requirements strings compatible
# with RPM .spec file.
def self.requirement_versions_to_rpm(requirement)
self.expand_requirement(requirement.requirements).map do |op, version|
version == Gem::Version.new(0) ? "" : " #{op} #{version}"
end
end
# Compose dependency together with its requirements in RPM rich dependency
# string.
def self.compose_dependency_string(name, requirements)
dependency_strings = requirements.map { |requirement| name + requirement }
dependency_string = dependency_strings.join(' with ')
dependency_string.prepend('(').concat(')') if dependency_strings.length > 1
dependency_string
end
end
# Report RubyGems dependency, versioned if required.
def self.rubygems_dependency(specification)
dependency_name = "ruby(rubygems)"
requirements = Helpers::requirement_versions_to_rpm(specification.required_rubygems_version)
puts Helpers::compose_dependency_string(dependency_name, requirements)
end
# Report all gem dependencies including their version.
def self.gem_depenencies(specification)
specification.runtime_dependencies.each do |dependency|
dependency_name = "rubygem(#{dependency.name})"
requirements = Helpers::requirement_versions_to_rpm(dependency.requirement)
puts Helpers::compose_dependency_string(dependency_name, requirements)
end
end
# Reports all requirements specified by all provided .gemspec files.
def self.requires
while filename = gets
filename.strip!
begin
specification = Gem::Specification.load filename
rubygems_dependency(specification)
gem_depenencies(specification)
rescue => e
# Ignore all errors.
end
end
end
end
if __FILE__ == $0
RubyGemsReq::requires
end

View File

@ -1,5 +1 @@
80b5f3db12531d36e6c81fac6d05dda9 ruby-1.8.6-p287.tar.bz2
d65e3a216d6d345a2a6f1aa8758c2f75 ruby-refm-rdp-1.8.1-ja-html.tar.gz
634c25b14e19925d10af3720d72e8741 rubyfaq-990927.tar.gz
4fcec898f51d8371cc42d0a013940469 rubyfaq-jp-990927.tar.gz
b6dd396f513efeb7864685c840f9643a ruby-refm-rdp-1.8.2-ja-html.tar.gz
SHA512 (ruby-2.7.2.tar.xz) = 7972278b096aa768c7adf2befd26003e18781a29ca317640317d30d93d6e963ded197724c8e2f1dfe1e838c5647176d414a74732a62e931fb50d6f2e0f777349

7
test_abrt.rb Normal file
View File

@ -0,0 +1,7 @@
if !!$LOADED_FEATURES.detect { |f| f =~ /abrt\.rb/ }
exit true
else
puts 'ERROR: ABRT hook was not loaded.'
exit false
end

65
test_systemtap.rb Normal file
View File

@ -0,0 +1,65 @@
require 'set'
LIBRUBY_SO = 'libruby.so'
PROBES_D = 'probes.d'
# These probes are excluded by VM_COLLECT_USAGE_DETAILS ifdef.
EXCLUDE_PROBES = Set.new %w(insn insn__operand)
## Detect SystemTap section headers presence
stap_headers = [
'\.stapsdt\.base',
'\.note\.stapsdt'
]
header_regexp = %r{ (#{stap_headers.join('|')}) }
section_headers = `readelf -S "#{LIBRUBY_SO}"`
detected_stap_headers = section_headers.scan(header_regexp).flatten
# Assume there are both headers until this is proven wrong ;)
unless detected_stap_headers.size == 2
puts 'ERROR: SystemTap (DTrace) headers were not detected in resulting library.'
exit false
end
## Find if every declared probe is propagated to resulting library
# Colect probes specified in probes.d file.
probes_declared = []
File.open(PROBES_D) do |file|
file.each_line do |line|
if probe = line[/probe (\S+)\(.*\);/, 1]
probes_declared << probe
end
end
end
probes_declared = Set.new probes_declared
unless EXCLUDE_PROBES.subset? probes_declared
puts 'ERROR: Change in SystemTap (DTrace) probes definition file detected.'
exit false
end
probes_declared -= EXCLUDE_PROBES
# Detect probes in resulting library.
get_probes_detected = %r{
^\s*Provider:\s+ruby,\s+Name:\s+(\S+),\s+.*$
}
probes_detected = `eu-readelf -n "#{LIBRUBY_SO}"`
probes_detected = Set.new probes_detected.scan(get_probes_detected).flatten
# Both sets must be equal, otherwise something is wrong.
unless probes_declared == probes_detected
puts 'ERROR: SystemTap (DTrace) probes were not correctly propagated into resulting library.'
puts " Undetected probes: #{(probes_declared - probes_detected).sort.join(', ')}\n",
" Additional detected probes: #{(probes_detected - probes_declared).sort.join(', ')}"
exit false
end