Compare commits

...
Sign in to create a new pull request.

532 commits

Author SHA1 Message Date
Vít Ondruch
deb89378b5 Upgrade to Ruby 4.0.1.
Resolves: rhbz#2428861
2026-01-13 16:51:38 +01:00
Vít Ondruch
ed5fc66af7 Remove unused rubygems_plugin.rb
The use was dropped with introduction of Ruby 4.0 in
c670682a97
2026-01-13 16:51:31 +01:00
Vít Ondruch
95c21e5775 Use correct CC0-1.0 SPDX identifier
`CC0` is not valid license identifier anymore:

~~~
$ license-validate -v CC0
No terminal matches 'C' in the current parser context, at line 1 col 1

CC0
^
Expected one of:
	* __ANON_202

... snip ...

	* __ANON_163

Not a valid license string
Please check https://docs.fedoraproject.org/en-US/legal/all-allowed/
~~~
2026-01-12 17:03:00 +01:00
Jarek Prokop
916dd3e4c2 Fix rdoc error when installing multiple document kinds.
Sourced from Fedora: https://src.fedoraproject.org/rpms/rubygem-rdoc/pull-request/3
and deleted the portion of the patch that edited the rdoc's tests, because the upstream
Ruby tar does not contain tests for rdoc.

Fixes case where installling multiple documents: `gem install -V hocon --document=ri,rdoc`
can result in an exception:
~~~
$ gem install -V hocon --document=ri,rdoc
....
....
Successfully installed hocon-1.4.0
Parsing documentation for hocon-1.4.0
Parsing sources...
100% [88/88]  lib/hocon/version.rb
Installing ri documentation for hocon-1.4.0
Installing aliki documentation for hocon-1.4.0
ERROR:  While executing gem ... (NoMethodError)
    undefined method 'empty?' for an instance of RDoc::Markup::Paragraph

    return '' unless first_comment && !first_comment.empty?
                                                    ^^^^^^^
<...snip...>
~~~
See: https://github.com/ruby/rdoc/issues/1530
2026-01-07 18:55:55 +01:00
Jarek Prokop
bc07cae127 Remove obsoletes & provides from Ruby < 3.0.
We have carried obsoletes and provides around merged or removed packages
from Fedora versions that are EOL for quite some time.
Similarly to re-numbering the SourceN: declaration to be in proper sequence,
Ruby 4.0.0 is a good break point to finally remove these old obsoletes/provides.

However, to be careful since RHEL 9 might be a destination for Ruby 4.0,
do not remove obsoletes for Ruby >= 3.0, RHEL 9 still has Ruby 3.0
which motivates the bottom version constraint on where to end.
On that distro someone might enable a ruby:4.0 module after installing system
ruby and then just run dnf update to get the new contents.
That is not recommended nor supported, but let's not check who uses
that approach by potentially breaking it.
2026-01-07 18:55:55 +01:00
Jarek Prokop
4c3cde9ed2 Enable both zjit and yjit.
Since upstream's 029a48176c
we can build both without the necessity of cargo or new rust
dependencies if we only care about the JITs.

Introduce `bcond_without rust`. Parts of Ruby are in Rust, which necessitates
dependencies such as the compiler, macros and so on.
Since both YJIT and ZJIT are in rust but can be built independently of
each other but not independently of present Rust support in the
buildroot, it is better to bring in rust bits when we build ruby `with_rust`.

The %%{build_rustflags} macro lives in different
packages, depending on if we are in EL or Fedora.

RUSTFLAGS could affect too much at the same time and only apply to
cargo.
The approach merged in upstream PR https://github.com/ruby/ruby/pull/15695
is to instead have a specific flag on configure script to instrument the
`rustc` compilation flags specifically when building JITs.
This ensures that we are properly providing the %%{build_rustflags} macro for rustc.

The downcased version in the configure script appends to upstream's
defaults. This way we preserve upstream's flags and overwrite any flags
that differ in Fedora from upstream, since the flag specified later on
the CLI will be taken.

For example if we have:
~~~
$ rustc -C opt-level=3 -C opt-level=2 foo.rs
~~~
Then the latter value is used, so the file is compiled with opt-level=2,
not 3, because it was specified later.

So we should always end up with Distro compliant compiler flags.

Also fixup the doc referring to supported JIT architectures in the links
in the comment near the JIT bconds.
2026-01-07 18:55:10 +01:00
Jarek Prokop
5d8c8b3fb5 Compress SourceN and PatchN numbering to be in proper sequence.
Over the time, sources and patches are added and removed, some are
removed sooner than the source after them.

That makes it possible for us to end up in situation where the
`SourceN:` or `PatchN:` are not in sequence.
(where N is a number from the set of Natural numbers starting with 0)

After an offline discussion, it has come to attention that the numbering
was always appended and never compressed partly due to inertia, and
partly to not try to differ for RHELs, make backports/diffs between Ruby
versions easier and smaller.

At the same time, we concurred that this new Ruby version is a good
breakpoint for this type of changes.

Therefore, the Source and Patch numbering was brought back into sequence
on this break point.
2026-01-07 18:01:48 +01:00
Jarek Prokop
c670682a97 Upgrade to Ruby 4.0.0.
* Define different expected archives macros for development.

When revision was defined, there was also timestamp appended.
That does not seem necessary for preview tarballs from upstream.

Instead split it into their own separate conditionals.

* irb and rdoc are now a bundled gem
Don't ship the %ruby_libdir parts and the symlinking for irb and rdoc.
The rdoc rubygems plugin should now be correctly present. Remove the
additional source.

* Multiple gems are now bundled gems.
Add them to ruby-bundled-gems subpackage instead of their own separate
packages.

* Split the rdoc support for ruby version directory from
  ruby-2.3.0-ruby_version.patch.
After Ruby moved RDoc to bundled gems from default gems, the directory
in which RDoc is in the upstream tarball is not in the upstream source,
necessitating a patch split for the Ruby version patch.
It cannot be fully re-created including the rdoc part in a single patch
with upstream ruby/ruby github.

Instead the part is created from ruby/rdoc github.

Add bundled provides for rubygem-json + the source into comments.
Source is as described in upstream commits and in the LEGAL file
upstream. Add the respective licenses for the subpackage.

RDoc includes a new doc generator that is under the MIT license,
update the license to reflect it.

Resolves: rhbz#2425358
2026-01-07 18:01:48 +01:00
Vít Ondruch
4034e3e02c Update to Ruby 3.4.8.
Resolves: rhbz#2422963
Resolves: rhbz#2412227
2025-12-17 12:44:52 +01:00
Jun Aruga
9dc850b911 Fix REXML denial of service.
Upgrade to rexml gem 3.4.4.
https://www.ruby-lang.org/en/news/2025/09/18/dos-rexml-cve-2025-58767/

Resolves: CVE-2025-58767
2025-10-23 18:24:32 +01:00
Jun Aruga
6b81f1b80f Upgrade to Ruby 3.4.7.
- Fix URI Credential Leakage Bypass previous fixes.

Resolves: rhbz#2402422
Resolves: CVE-2025-61594
2025-10-23 17:29:51 +01:00
Jarek Prokop
aa9dd7be5f Enable parallel 'make check'.
Use a build condition to turn the parallelization on and off when
needed. The output is slightly different from the previous approach.
The way results are collected and displayed remains the same.

This allows us to scale down build time on multiple cores better.

Chose to introduce a bcond explicitly for tests for debugging purposes.
Running tests in parallel could hide issues that would show if
everything was done in a single test-unit process.
Limiting the number of cores available to RPM via a macro would also
hinder parallelization of the compilation, which might not be desired
in the case of only wanting to serializing the tests.

Table from the associated ticket:
The time represents total seconds that a full RPM build inside mock
took from start to finish.

PARALLEL TESTS
------------------------------------------------------------------------
Cores        |   Runs |    Avg (s) |    Min (s) |    Max (s) | Speedup
------------------------------------------------------------------------
2_core       |      5 |     3196.0 |     3175.0 |     3218.0 |   1.00x
4_core       |      5 |     3166.6 |     2949.0 |     3598.0 |   1.01x
8_core       |      5 |     1129.2 |     1090.0 |     1257.0 |   2.83x
16_core      |      5 |      807.4 |      794.0 |      820.0 |   3.96x

SEQUENTIAL TESTS
------------------------------------------------------------------------
Cores        |   Runs |    Avg (s) |    Min (s) |    Max (s) | Speedup
------------------------------------------------------------------------
2_core       |      5 |     3749.6 |     3728.0 |     3772.0 |   1.00x
4_core       |      5 |     3368.8 |     3128.0 |     3539.0 |   1.11x
8_core       |      5 |     1810.6 |     1764.0 |     1912.0 |   2.07x
16_core      |      5 |     1612.8 |     1571.0 |     1646.0 |   2.32x

PARALLEL vs SEQUENTIAL COMPARISON
-------------------------------------------------------------------------
Cores        |  Sequential Avg |    Parallel Avg |   Difference
-------------------------------------------------------------------------
2_core       |       3749.6 s |         3196.0 s |      +17.3%
4_core       |       3368.8 s |         3166.6 s |       +6.4%
8_core       |       1810.6 s |         1129.2 s |      +60.3%
16_core      |       1612.8 s |          807.4 s |      +99.8%

Resolves: rhbz#2401230
2025-10-15 15:38:03 +02:00
Vít Ondruch
97eeae3d75 Update IETF license information after legal review
https://gitlab.com/fedora/legal/fedora-license-data/-/issues/506
2025-10-06 09:55:45 +02:00
Vít Ondruch
f50637ef39 Add missing bundled tsort provide. 2025-10-06 09:55:45 +02:00
Jarek Prokop
84309be01e Rebase versions of bundled libraries.
Add `## BUNDLED_GEMS_VERSIONS` and the symmetric
`## BUNDLED_GEMS_VERSIONS_END` for a script from ferut
'bundled_lib_versions.rb'. These tags are used to easily tell the
beginning and end of the section we can and want to edit by the
automation.

Remove duplicate syslog entry.

Move out default gemified libraries out into their place
into either the bundled gems section or the default gems section.
Reducing special cases helps lower complexity and length of the script.

In this case, there does not seem a big case to have these gems
specially handled in this section.

Properly sort sections alphabetically using the ruby's `Array#sort`
method.
2025-08-18 17:45:03 +02:00
Jarek Prokop
563fb688b3 Upgrade to Ruby 3.4.5.
Resolves: rhbz#2380246
2025-08-18 17:23:34 +02:00
Fedora Release Engineering
1aeb02030c Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 12:11:35 +00:00
Jarek Prokop
43d2363c1e Upgrade to ruby 3.4.4.
Resolves: rhbz#2359563
2025-06-13 12:41:51 +02:00
Jun Aruga
e7395a7d22 Fix the tests using SHA-1 Probabilistic Signature Scheme (PSS) parameters.
Fedora OpenSSL 3.5 on rawhide stopped accepting SHA-1 PSS[1] parameters.
This is different from the SHA-1 signatures which Fedora OpenSSL stopped
accepting since Fedora 41.[2]

This commit fixes the following test failures related to the SHA-1 PSS
parameters with Fedora OpenSSL 3.5.
Note these failures are the downstream Fedora OpenSSL RPM specific.

```
184) Error:
OpenSSL::TestPKeyRSA#test_sign_verify_options:
OpenSSL::PKey::PKeyError: EVP_PKEY_CTX_ctrl_str(ctx, "rsa_mgf1_md", "SHA1"): digest not allowed (digest=SHA1)
    /builddir/build/BUILD/ruby-3.4.2-build/ruby-3.4.2/test/openssl/test_pkey_rsa.rb:113:in 'Hash#each'
    /builddir/build/BUILD/ruby-3.4.2-build/ruby-3.4.2/test/openssl/test_pkey_rsa.rb:113:in 'OpenSSL::PKey::PKey#sign'
    /builddir/build/BUILD/ruby-3.4.2-build/ruby-3.4.2/test/openssl/test_pkey_rsa.rb:113:in 'OpenSSL::TestPKeyRSA#test_sign_verify_options'
185) Error:
OpenSSL::TestPKeyRSA#test_sign_verify_pss:
OpenSSL::PKey::RSAError: digest not allowed (digest=SHA1)
    /builddir/build/BUILD/ruby-3.4.2-build/ruby-3.4.2/test/openssl/test_pkey_rsa.rb:191:in 'OpenSSL::PKey::RSA#sign_pss'
    /builddir/build/BUILD/ruby-3.4.2-build/ruby-3.4.2/test/openssl/test_pkey_rsa.rb:191:in 'OpenSSL::TestPKeyRSA#test_sign_verify_pss'
Finished tests in 1152.595208s, 27.9812 tests/s, 5697.0278 assertions/s.
32251 tests, 6566367 assertions, 0 failures, 2 errors, 183 skips
```

According to a maintainer of the rpms/openssl, Dmitry Belyavskiy
<dbelyavs@redhat.com>, the following patch is disabling SHA-1 PSS parameters.
5f41d6a8f5/f/0018-RH-Allow-disabling-of-SHA1-signatures.patch

Resolves: rhbz#2358256
2025-04-08 18:36:18 +02:00
Vít Ondruch
a38fdce3da Upgrade to Ruby 3.4.2.
Resolves: rhbz#2345875
2025-02-19 12:28:44 +01:00
Björn Esser
da900b8789
Add explicit BR: libxcrypt-devel
Signed-off-by: Björn Esser <besser82@fedoraproject.org>
2025-02-01 19:57:15 +01:00
Jarek Prokop
3541190791 Stop including <cstdbool> C++ header, it is deprecated since C++17.
The header is useless in C++ and it is throwing a warning when it is
being included since GCC 15. libdnf5 uses -Werror which turns the
warning into an error making it fail to build.

Delete the include in ruby sources to allow such libraries to build
again with Ruby.

https://bugs.ruby-lang.org/issues/21024
https://github.com/ruby/ruby/pull/12628

Resolves: rhbz#2336567
2025-01-24 15:38:06 +01:00
Fedora Release Engineering
7262ed4066 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-18 22:53:00 +00:00
Vít Ondruch
e3690ac430 Revert "Temporary disable FIPS OpenSSL test cases."
This reverts commit 5f10b7c93e.

Related: rhbz#2335414
2025-01-08 17:23:17 +01:00
Vít Ondruch
5f10b7c93e Temporary disable FIPS OpenSSL test cases.
These seems to be cause by OpenSSL being broken by change in debugedit:

https://bugzilla.redhat.com/show_bug.cgi?id=2335414
2025-01-07 12:44:03 +01:00
Vít Ondruch
74a9a07c69 Fix gem install to generate documentation 2025-01-07 12:43:07 +01:00
Vít Ondruch
7b420c76e8 Upgrade to Ruby 3.4.1.
Resolves: rhbz#2334047
2025-01-07 12:43:03 +01:00
Vít Ondruch
4ccd95e387 Include ruby-{default,bundled}-gems in ruby by default.
When installing `ruby` package, Users are expecting to have those
available, because that is what upstream does.
2025-01-07 10:14:37 +01:00
Vít Ondruch
037b0a34f2 Extract %gem_version and %gem_prerelease for independent use
These macros are useful independently and makes the `%gem_name_version`
macro more comprehensive.
2025-01-07 09:59:06 +01:00
Jun Aruga
da4a9f4b88 Fix Ruby OpenSSL to respect crypto-policies TLS minimal version.
This issue was identified at the ticket RHEL-21019.
https://issues.redhat.com/browse/RHEL-21019
2024-12-16 17:16:12 +01:00
David Abdurachmanov
186be743be Add riscv64 information for checksec 2024-11-22 12:24:21 +08:00
Vít Ondruch
19423ee8d9 Fix version in changelog 2024-11-19 17:46:34 +01:00
Vít Ondruch
f241947e6c Upgrade to Ruby 3.3.6. 2024-11-12 00:33:53 +01:00
Vít Ondruch
8daf7ccb72 Fix Bundler --local option
Resolves: rhbz#2311898
2024-09-13 16:33:48 +02:00
Vít Ondruch
b7e197fb88 Upgrade to Ruby 3.3.5.
Resolves: rhbz#2309364
2024-09-03 15:19:20 +02:00
Mikolaj Izdebski
6bed1e3bd5 Generate RPM dependencies with RPM 4.20 API
Use new RPM 4.20 API to generate RPM dependencies instead of relying
on rpm-local-generator-support.

See: https://rpm-software-management.github.io/rpm/manual/dependency_generators.html#using-file-attributes-in-their-own-package
2024-08-22 15:34:03 +00:00
Jarek Prokop
2e6762df8d Test RPM dependency generators for rubygems.
Add tests for RPM dependency generators that execute during build.
The tests make use of methods available in tools present in the
upstream ruby tar archive to find and set up the ruby executable.
This is then used to execute the dependency generator script with
a given test input passed into the subprocess and collect the output
given out by the generator for testing.

Skip "test_generator_on_gem_with_multiple_conflict_constraints" for
now. rubygems.req is currently only capable of filtering out a single
conflict requirement that is specified on a given dependency.

Execute it in the %check section before the long-running
Ruby test suite starts. If testing the generators fails it means there
is the possibility of generating bogus requires,
which is a valuable information to get sooner rather than later.
2024-08-22 13:06:15 +00:00
Vít Ondruch
c4e686c716 Fix typo
Credits goes to @ekohl for noticing this:

https://src.fedoraproject.org/rpms/ruby/pull-request/186#comment-214161
2024-08-22 13:21:17 +02:00
Vít Ondruch
f11fa48d8f Revert "Remove systemtap-sdt-dtrace dependency including dtrace command."
This reverts commit 0d81c8b95a. As it
turns out, both requires are needed after \[[1]\].

[1]: https://src.fedoraproject.org/rpms/systemtap/pull-request/30
2024-08-21 10:05:37 +02:00
Vít Ondruch
bd711c9036 Use newly introduced Ruby-pty license identifier 2024-08-08 14:21:53 +00:00
Iveta Wiedermann
fde0aac8f9 Adding fmf plan 2024-08-01 18:31:30 +00:00
Jun Aruga
0d81c8b95a Remove systemtap-sdt-dtrace dependency including dtrace command.
This commit is an improvement for the past commit
<d03ac3403a>.
According to the following part at the commit[1] on systemtap rawhide,
systemtap-sdt-devel RPM requires systemtap-sdt-dtrace RPM including the
`dtrace` command. We can remove the systemtap-sdt-dtrace build dependency.

```
%package sdt-devel
...
Requires: systemtap-sdt-dtrace = %{version}-%{release}
```

[1] https://src.fedoraproject.org/rpms/systemtap/c/93948388bc54cd7a4efb1806d9787291d26b33d6?branch=rawhide
2024-08-01 10:49:29 +02:00
Lumir Balhar
d03ac3403a Add systemtap-sdt-devel to build Ruby with systemtap sdt header files.
Add systemtap-sdt-devel as BuildRequires to build Ruby with systemtap sdt header
files.

The commit[1] on systemtap rawhide by the change[2] on
systemtap-5.2~pre17206355g1a07290a-2.fc41 or later versions caused the
following error in the `test_systemtap.rb`.

Because the `readelf -S "#{LIBRUBY_SO}"` in the `test_systemtap.rb` failed to
find the systemtap section headers in the `libruby.so` file.

We relied on the `BuildRequires: %{_bindir}/dtrace` BuildRequires to bring in
all required files for systemtap support. However, after the change[1] that the
systemtap package was split, now we need to require systemtap sdt header files
on top of the dtrace executable to build Ruby with systemtap support to fix the
error.

```
+ make -C redhat-linux-build runruby TESTRUN_SCRIPT=/builddir/build/SOURCES/test_systemtap.rb
make: Entering directory '/builddir/build/BUILD/ruby-3.3.4-build/ruby-3.3.4/redhat-linux-build'
RUBY_ON_BUG='gdb -x /builddir/build/BUILD/ruby-3.3.4-build/ruby-3.3.4/.gdbinit -p' ./miniruby -I/builddir/build/BUILD/ruby-3.3.4-build/ruby-3.3.4/lib -I. -I.ext/common  /builddir/build/BUILD/ruby-3.3.4-build/ruby-3.3.4/tool/runruby.rb --extout=.ext  -- --disable-gems  /builddir/build/SOURCES/test_systemtap.rb
ERROR: SystemTap (DTrace) headers were not detected in resulting library.
```

Co-authored-by: Lumír Balhar <lbalhar@redhat.com>

[1] https://src.fedoraproject.org/rpms/systemtap/c/93948388bc54cd7a4efb1806d9787291d26b33d6?branch=rawhide
[2] https://fedoraproject.org/wiki/Changes/Separate_dtrace_package
2024-07-30 11:32:46 +02:00
Fedora Release Engineering
55661b64e9 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-19 18:58:13 +00:00
Vít Ondruch
ca13a51589 Upgrade to Ruby 3.3.4.
Resolves: rhbz#2292052
2024-07-10 11:17:20 +02:00
Vít Ondruch
7724c2d703 Make sure hardening configuration flags are correctly applied.
Previously, upstream flags were overriding our configuration flags,
therefore we had two workarounds in place. This commit replaces these
workarounds by upstream solution. While it should not result in any
functional changes, it is be better to have this patch in place to make
easier to spot when it is not needed anymore.
2024-06-18 12:56:21 +02:00
Vít Ondruch
42b0e43e5a Fix generators for RPM 4.20 compatibility
RPM 4.20 introduce per-build directory. However, this also brings some
issues where `%{_builddir}` might have different value in different
context, leading to issues such as:

~~~
Processing files: ruby-default-gems-3.3.1-8.fc41.noarch
make: *** /builddir/build/BUILD/ruby-3.3.1/redhat-linux-build: No such file or directory.  Stop.
~~~

Therefore the generators are not executed properly. Use `%define`
instead of `%global`, because those are laze evaluated and actually
suggested by RPM upstream:

https://github.com/rpm-software-management/rpm/issues/3151
2024-06-07 12:25:48 +02:00
Vít Ondruch
c913e4326c Drop patch which was needed for alexandria
It seems it build just fine now.
2024-06-06 19:13:11 +02:00
Vít Ondruch
93638d9e58 Upgrade to Ruby 3.3.2.
Resolves: rhbz#2284020
2024-06-06 16:07:59 +02:00
Vít Ondruch
677893973e Make sure fortification flags are applied
This is example of current build options:

~~~
gcc -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fPIC -m64 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -I. -I.ext/include/x86_64-linux -I/builddir/build/BUILD/ruby-3.3.1-build/ruby-3.3.1/include -I/builddir/build/BUILD/ruby-3.3.1-build/ruby-3.3.1 -I/builddir/build/BUILD/ruby-3.3.1-build/ruby-3.3.1/prism -I/builddir/build/BUILD/ruby-3.3.1-build/ruby-3.3.1/enc/unicode/15.0.0      -o dmyext.o -c /builddir/build/BUILD/ruby-3.3.1-build/ruby-3.3.1/dmyext.c
~~~

Please note that there are included Fedora options:

~~~
-Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3
~~~

as well as upstream options:

~~~
-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
~~~

The problem is that the configure script cannot properly detect
`_FORTIFY_SOURCE=3` and instead of replacing that option, it includes
new definition \[[1]\]. This happens since Fedora started to use
`_FORTIFY_SOURCE=3` option. To mitigate this issue, upstream
fortification was disabled (this might or might not stay disabled
"forever").

These are the build options with this change applied for comparison:

~~~
gcc -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fPIC -m64 -fstack-protector-strong -fno-strict-overflow -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -I. -I.ext/include/x86_64-linux -I/builddir/build/BUILD/ruby-3.3.1-build/ruby-3.3.1/include -I/builddir/build/BUILD/ruby-3.3.1-build/ruby-3.3.1 -I/builddir/build/BUILD/ruby-3.3.1-build/ruby-3.3.1/prism -I/builddir/build/BUILD/ruby-3.3.1-build/ruby-3.3.1/enc/unicode/15.0.0      -o dmyext.o -c /builddir/build/BUILD/ruby-3.3.1-build/ruby-3.3.1/dmyext.c
~~~

[1]: https://bugs.ruby-lang.org/issues/20520
2024-06-05 16:29:24 +02:00
Vít Ondruch
d9051618e3 Adjust the test to updated checksec output.
`checksec` output since v2.7.0 become more nuanced. Previously, the
`FORTIFY` could become just `Yes` / `No`. Now it can have also `Partial`
state, which better describe our situation.

Currently if e.g. `Fortifiable=28` and `Fortified=11`, that means that the
fortification is just partial and another 17 functions could be
fortified.

Also, check the numbers specifically, because this seems to be the
interesting information. Unfortunatelly, the results differ between
platforms.

Last but not least, use `sed` to analyze the output, because this allows to
always display the processed text. The trick comes from \[[1]\].

On top of this, use XML formatted output, which provides more context to
reader.

[1]: https://unix.stackexchange.com/questions/366/convince-grep-to-output-all-lines-not-just-those-with-matches

Resolves: rhbz#2282953
2024-06-05 09:45:17 +02:00
Vít Ondruch
ff5301a5f3 Fix patch to apply cleanly. 2024-04-24 17:35:38 +02:00
Vít Ondruch
c649282efb Upgrade to Ruby 3.3.1. 2024-04-24 12:31:33 +02:00
Vít Ondruch
4ff7de7007 License review and clarification 2024-04-12 17:28:42 +02:00
Vít Ondruch
5da6a15c57 Ruby bundled NKF, add appropriate bundled provide and test 2024-04-12 17:26:16 +02:00
Vít Ondruch
a34f33bc50 Fix FTBFS caused by OpenSSL 3.2.1 update. 2024-03-06 15:14:30 +01:00
Vít Ondruch
3008410463 Merge #169 Use gem macros for rubygem-rbs subpackage. 2024-01-26 15:04:52 +00:00
Vít Ondruch
ac77c2a354 Use gem macros for rubygem-rbs subpackage.
This were apparenlyt overlooked previously.
2024-01-26 14:16:50 +01:00
Jarek Prokop
aa7e8debee Revert adding AI_ADDRCONFIG flag to getaddrinfo(3) calls.
It is causing problems when network is in certain, valid, configuration.
The point of it is to workaround a glibc bug that is not present for us.
https://bugs.ruby-lang.org/issues/20208

To reproduce, have IPv6 enabled localhost but only IPv4
interfaces (such as eth0, name and count of them may vary based on system)
to disable public interfaces via sysctl:
`$ sysctl "net.ipv6.conf.<interface>.disable_ipv6=1"`
Where <interface> is NOT lo but can be eth0 or other.

Confirm with command `$ ip addr` command that only `lo`
interface has IPv6 address.

and run the following with Ruby 3.3:
~~~
$ ruby -rnet/http -e 'http = Net::HTTP.new("localhost", 8080); http.local_host = Addrinfo.tcp("localhost", 8080).ip_address; p http.get("/")'
~~~
The error is then related to EAFNOSUPPORT:
```
Errno::EAFNOSUPPORT: Failed to open TCP connection to localhost:37337 (Address family not supported by protocol - bind(2) for "::1" port 45395)
```

running above Ruby command with `strace` suggest that
there is an attempt to bind with AF_INET6
using an AF_INET socket, however, only if the reproducer above
attempts to set the `http.local_host` with Addrinfo.

From upstream issue #20208:
"This is calling getaddrinfo to resolve "localhost" for us to use
it as the local side of the connection. Because Ruby does not know
what you intend to do with this IP address, it does not make the request
with AI_ADDRCONFIG. Thus, you get an IPv6 result returned,
since there is an IPv6 addres for localhost!"
2024-01-26 13:54:20 +01:00
Fedora Release Engineering
066e0a3d6d Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-22 12:17:40 +00:00
Jarek Prokop
308b2c0ab2 Fix compiling coroutines with aarch64's branch protection.
Armv8.3+ capable CPUs might segfault with incorrect compilation options.
See related upstream report: https://bugs.ruby-lang.org/issues/20085

We have hit this on COPR which uses [0] c7g.xlarge AWS flavor for aarch64
architecture builds. This machine flavor seems to fall into the ARMv8.3+
range.

Fedora CFLAGS come with `-mbranch-protection=standard` which means that
both BTI and the PAC protections are used. The option is equivalent
to `-mbranch-protection=pac-ret+bti`.

However, since the upstream configure.ac automatically appends
`-mbranch-protection=pac-ret`, the BTI protection is not used
as the last used option seems to overwrite [1] the Fedora
default for this.

To resolve both of these issues, of BTI being skipped and the potential
segfaults a patch is applied.

To fix segfaults an upstream patch was applied [2].

To fix the issue of overridden option I have patched the
configure.ac file to check for the `=standard` first when searching for a usable
`-mbranch-protection` option.

The overriding of our options was reported upstream:
<https://bugs.ruby-lang.org/issues/20154>
In the same issue I provided the extension of compilation option as an
attachment, to showcase a workaround that fixes the situation in Fedora.

[0] <https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/Y4GPCGQAZT2LJ5CE7MTIEFKGAPP6O2DW/>
[1] <https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/QWLEBS4YQH73HJNNLKCCGIIOU3SSXAYK/>
[2] <02973b78f4>
2024-01-15 16:38:51 +01:00
Vít Ondruch
05a6c9c8f3 Upgrade to Ruby 3.3.0.
Resolves: rhbz#2255918
2024-01-02 18:52:33 +01:00
Vít Ondruch
f195b6a3c8 Drop attempt to disable JIT test on i686
The was renamed test_jit.rb → test_mjit.rb in Ruby 3.2:

ead96e7b44

Therefore this is alread no-op and we can just drop it.
2023-12-07 13:22:00 +01:00
Jarek Prokop
321ed23c22 Update ticket reference for disabled tests on x86.
Tests fail with a LANG=C environment. A new investigation into the
failing tests on x86 revealed exact commits which introduced the issue
and the commits that fixed the situation. Fix is not yet present in Ruby
3.2, therefore the conditional disabling the tests was left in.
A new re-reported ticket replaced the old one. The new upstream ticket
includes better detailed description of the environment causing the
issue.

The tests pass in Rawhide mock (F40), as the LANG there is C.UTF-8
that does not suffer from the issue.

Upstream ticket: https://bugs.ruby-lang.org/issues/20045
2023-12-07 12:01:03 +01:00
Jarek Prokop
ba498ce48c armv7hl is no longer one of arches we build on.
No point in keeping dead conditional around.
2023-11-29 20:11:24 +01:00
Jun Aruga
8d5b538747 ssl: use ffdhe2048 from RFC 7919 as the default DH group parameter
When the dependant openssl-libs was upgraded from 1:3.1.1-4.fc40 to
1:3.1.4-1.fc40, Fedora rawhide started to fail on Koschei.

This commit fixes the following failures in OpenSSL FIPS.

```
+ make -C redhat-linux-build runruby 'TESTRUN_SCRIPT=   -I/builddir/build/BUILD/ruby-3.2.2/tool/lib --enable-gems   /builddir/build/SOURCES/test_openssl_fips.rb /builddir/build/BUILD/ruby-3.2.2 --verbose'
...
  1) Failure:
OpenSSL::TestFIPS#test_fips_mode_get_with_fips_mode_set [/builddir/build/BUILD/ruby-3.2.2/test/openssl/test_fips.rb:38]:
assert_separately failed with error message
pid 93968 exit 1
| /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl/pkey.rb:132:in `initialize': could not parse pkey (OpenSSL::PKey::DHError)
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl/pkey.rb:132:in `new'
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl/pkey.rb:132:in `new'
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl/ssl.rb:37:in `<class:SSLContext>'
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl/ssl.rb:23:in `<module:SSL>'
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl/ssl.rb:22:in `<module:OpenSSL>'
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl/ssl.rb:21:in `<top (required)>'
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl.rb:21:in `require_relative'
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl.rb:21:in `<top (required)>'
| >-from -:in `require'
  2) Failure:
OpenSSL::TestFIPS#test_fips_mode_get_is_true_on_fips_mode_enabled [/builddir/build/BUILD/ruby-3.2.2/test/openssl/test_fips.rb:12]:
assert_separately failed with error message
pid 93969 exit 1
| /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl/pkey.rb:132:in `initialize': could not parse pkey (OpenSSL::PKey::DHError)
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl/pkey.rb:132:in `new'
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl/pkey.rb:132:in `new'
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl/ssl.rb:37:in `<class:SSLContext>'
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl/ssl.rb:23:in `<module:SSL>'
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl/ssl.rb:22:in `<module:OpenSSL>'
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl/ssl.rb:21:in `<top (required)>'
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl.rb:21:in `require_relative'
| >-from /builddir/build/BUILD/ruby-3.2.2/redhat-linux-build/.ext/common/openssl.rb:21:in `<top (required)>'
| >-from -:in `require'
Finished tests in 0.166449s, 72.0941 tests/s, 342.4468 assertions/s.
12 tests, 57 assertions, 2 failures, 0 errors, 1 skips
```

The commit was ported from CentOS Stream rpms/ruby stream-ruby-3.1-rhel-9.4.0 branch:
<59242d8ce8>.
2023-11-09 17:58:10 +01:00
Vít Ondruch
5fd12c42e7 Cache Gem.default_dir
RubyGems do internally the same \[[1]\]. This should help with:

1) Performance (not tested)
2) Running RubyGems test suite (main motivation), which actually
   overrides the `@default_dir` \[[2]\] to be able to place test content
   into dedicated directory.

[1]: f8e87eba76/lib/rubygems/defaults.rb (L38)
[2]: f8e87eba76/test/rubygems/helper.rb (L372)
2023-11-03 17:12:13 +01:00
Vít Ondruch
d432c95c15 Remove spaces from changelog NVR. 2023-11-03 12:24:38 +01:00
Jarek Prokop
393e74f1e0 Fix bundled provide net-http-persistent typo. 2023-11-02 16:06:07 +01:00
Jun Aruga
1f35109c5e Fix OpenSSL.fips_mode and OpenSSL::PKey.read in OpenSSL 3 FIPS. 2023-09-22 12:54:53 +02:00
Fedora Release Engineering
64dc6dd3e4 Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-21 17:14:32 +00:00
Jarek Prokop
814eaf5324 Re-enable FFI related tests.
libffi since NVR libffi-3.4.4-3.fc39 builds with static trampolines
enabled. This fixes the failures which were the reason for disabling
the tests.

Since it recently landed in Rawhide, we can re-enable the tests.
2023-07-12 10:30:51 +02:00
Pavel Valena
da8822cd33 Use new %patch macro
instead of %patchN, as advised by warning:

%patchN is deprecated (11 usages found), use %patch N (or %patch -P N)
2023-05-03 11:11:47 +02:00
Vít Ondruch
9e39fd242a Upgrade to Ruby 3.2.2.
Resolves: rhbz#2183284
2023-03-31 15:27:47 +02:00
Vít Ondruch
31778c5ebd Use %{_fileattsdir} for RPM macro generator. 2023-03-08 13:11:49 +01:00
Vít Ondruch
8f9fe41ba6 Use %{_rpmmacrodir} for RPM macros. 2023-03-08 13:09:30 +01:00
Vít Ondruch
59f62d6bc9 Upgrade to Ruby 3.2.1.
Resolves: rhbz#2168292
2023-02-10 10:45:13 +01:00
Vít Ondruch
65acd291de yaml and libffi sources are not bundled anymore.
https://bugs.ruby-lang.org/issues/18571
2023-02-09 14:22:39 +01:00
Miro Hrončok
9c8400d99a Don't Suggest rubypick when built without rubypick 2023-01-25 12:06:23 +01:00
Fedora Release Engineering
d46ef9bbf3 Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-20 20:05:46 +00:00
Vít Ondruch
ff0f48acd6 Fix ELN FTBFS due to stronger crypto settings. 2023-01-05 10:30:24 +01:00
Vít Ondruch
22597b6039 Fix compatibilty with rpmlint 2.0+
Revert "ruby.rpmlintrc: Add a filter for "E: shared-lib-without-dependency-information"."

This reverts commit aee17a2180.

This is not needed anymore, because Zuul runs rpmlint 2.0+ already.
2023-01-02 18:20:46 +01:00
Vít Ondruch
c4043528c1 The missing-call-to-chdir-with-chroot test was removed in rpmlint 2.0
83f915a54d
2023-01-02 18:16:58 +01:00
Vít Ondruch
be9fcec798 gem.build_complete is corectly recognized by rpmlint 2.0+ 2023-01-02 18:13:01 +01:00
Vít Ondruch
f2899ee090 Upgrade to Ruby 3.2.0.
For details of the evolution please check `private-ruby-3.2` branch.
2023-01-02 18:09:09 +01:00
Yaakov Selkowitz
25858e766a Add upstream patches to avoid SHA1 usage in ossl 2022-12-22 11:37:52 -05:00
Vít Ondruch
f8ef5964d0 Fix for tzdata-2022g. 2022-12-21 16:11:40 +01:00
Vít Ondruch
b1748af87f Fix CGI causing issue with leading '.' in domain names.
The original issue broke rubygem-actionpack:

https://github.com/rails/rails/issues/46578
https://github.com/rails/rails/pull/46595

rubygem-rack:

https://github.com/rack/rack/pull/1988

And rack-test (where I have not checked details).
2022-12-08 18:06:47 +01:00
Vít Ondruch
2cdb051166 Disable MJIT test cases on i686 due to issues with PCH. 2022-12-08 18:06:11 +01:00
Vít Ondruch
9819174c8d Use --enable-mkmf-verbose configuration opiton instead of patch.
https://github.com/ruby/ruby/pull/5879
2022-11-28 12:20:25 +01:00
Vít Ondruch
649a6e3083 Upgrade to Ruby 3.1.3. 2022-11-28 12:20:25 +01:00
Vít Ondruch
1d0c071aeb Revert "Re-enable package notes."
This reverts commit 588a4ae9f0, because it
causes additional issues:

https://bugzilla.redhat.com/show_bug.cgi?id=2043092#c67
2022-11-22 18:24:53 +01:00
Jun Aruga
79d75fdcdd Bypass git submodule test failure on Git >= 2.38.1. 2022-11-03 10:59:34 +01:00
Vít Ondruch
588a4ae9f0 Re-enable package notes.
The rhbz#2043092 is not resolved. Nevertheless, the generation of
package notes should not break builds of rubygem- packages anymore.
Nevertheless, the additional linker options will keep making issues for
`gem install`ed gems. Nothing new here unfortunately.
2022-09-29 09:27:19 +02:00
Jarek Prokop
c2026da175 Disable Fiddle test cases making use of FFI closure.
Fiddle::Closure object is making use of FFI closure
from libffi. When such object is created (instantiated) in Ruby,
and then the process forks on an SELinux-enabled system, the memory
will become corrupted. That is usually not a problem until the
The garbage collector sweeps the object and tries to free it, in which case the
Ruby process will fail with signal SIGABRT.

Tests in test/fiddle/test_closure.rb, test/fiddle/test_func.rb,
and test/fiddle/test_function.rb use the `Fiddle::Closure` class
directly and fiddle/test_import.rb use the class indirectly through
`bind_function` method, therefore they are disabled to prevent
introducing the problematic object into the Ruby GC during test suite
execution instead of relying on that fork and subsequent
garbage collection will not happen.

If an FFI closure object is allocated in Ruby
and the `fork` function is used afterward, the memory
pointing to the closure gets corrupted, and if Ruby GC
tries to collect the object in that state, a SIGABRT
error occurs.

The minimal Ruby reproducer for the issue is the following:
~~~
$ cat fiddle_fork.rb
require 'fiddle/closure'
require 'fiddle/struct'

Fiddle::Closure.new(Fiddle::TYPE_VOID, [])

fork { }

GC.start
~~~

We allocate an unused Closure object,
so it is free for the GC to pick up. Before we call `GC.start`
we fork the process as that corrupts the memory.

Running this with ruby-3.1.2-167.fc37.x86_64 on SELinux enabled system:
~~~
$ ruby fiddle_fork.rb
Aborted (core dumped)
~~~

Such issues may appear at random (depending on the use of forking and GC)
in larger applications that use Fiddle::Closure but can be spotted by the
following functions appearing in the coredump backtrace:
~~~
0x00007f6284d3e5b3 in dlfree (mem=<optimized out>) at ../src/dlmalloc.c:4350
0x00007f6284d6d0b1 in dealloc () from /usr/lib64/ruby/fiddle.so
0x00007f6295e432ec in finalize_list () from /lib64/libruby.so.3.1
0x00007f6295e43420 in finalize_deferred.lto_priv () from /lib64/libruby.so.3.1
0x00007f6295e4ff1c in gc_start_internal.lto_priv () from /lib64/libruby.so.3.1
~~~

Possible solutions to prevent Ruby from crashing:
* Do not use Fiddle::Closure.
* Use the Fiddle::Closure object only in isolated subprocess that
  will not fork further.
* Enable static trampolines in libffi as noted in bugzilla comment:
  <https://bugzilla.redhat.com/show_bug.cgi?id=2040380#c9>

See related discussion on
<https://bugzilla.redhat.com/show_bug.cgi?id=2040380>

Ruby upstream ticket:
<https://bugs.ruby-lang.org/issues/18914>

Ruby Fiddle ticket:
<https://github.com/ruby/fiddle/issues/102>
2022-09-02 14:54:35 +02:00
Jun Aruga
3f106c188e Add IRB to ruby-bundled-gems recommends.
Resolves: rhbz#2120562
2022-08-29 15:11:15 +02:00
Jun Aruga
bf921512e2 Make RDoc soft dependnecy in IRB.
Resolves: rhbz#2119964
2022-08-29 15:05:44 +02:00
Jun Aruga
ad7f78b5c8 Fix tests with Europe/Amsterdam pre-1970 time on tzdata version 2022b.
Resolves: rhbz#2120354
2022-08-24 15:58:40 +02:00
Jarek Prokop
f93afdebdd Fix Ruby build failing due to unremovable tmp subdirectory.
RPM 4.18.0-beta1 or later versions remove the build directory
automatically, the build fails on removing temporary directories with
the missing 'w' bit.

RubyGems contain this patch since version 3.3.8.
This was merged to ruby_3_1 branch in upstream ruby, but it is not
included in the v3_1_2 tag, so new Ruby 3.1 release should contain this
change.

Relevant RPM upstream PR: https://github.com/rpm-software-management/rpm/pull/2080
Relevant bug: https://bugzilla.redhat.com/show_bug.cgi?id=2105393
2022-07-25 11:55:57 +02:00
Fedora Release Engineering
e2951e6856 Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-23 01:10:40 +00:00
Jarek Prokop
ca94aff023 Define the GC compaction support during run time.
Previous commit changed GC compaction methods to not be implemented
when not supported. However, that commit only does compile time checks,
but there are additional compaction support checks during run time.

This commit changes it so that GC compaction methods aren't defined
also during run time if the platform does not support GC compaction.

The patch is manually backported from following change set:
https://github.com/ruby/ruby/pull/6019
2c19086323

To apply the patch included with this commit,
first apply `ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch`
and then apply the `ruby-3.2.0-detect_compaction_support_during_runtime.patch`.

Related upstream issue: https://bugs.ruby-lang.org/issues/18829
2022-06-24 14:09:42 +02:00
Jarek Prokop
b7b5473796 Define compaction methods as rb_f_notimplement on unsupported platforms.
The patch implements the methods as rb_f_notimplement.
To test for compaction users can now use `GC.respond_to?(:compact)`.

The upstream patch relies on the macro `GC_COMPACTION_SUPPORTED`
that is defined when the `__wasi__` is false. The define is defined by
an arch conditional in the specfile, which is not optimal but works in our case.
663833b08f
https://bugs.ruby-lang.org/issues/18829

This also requires regenerating the gc.rbinc and miniprelude.c
since the patch touches gc.rb. This patch is available in
ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch.

To regenerate the gc.rbinc and miniprelude.c files patch:
~~~
tar -Jxvf ./ruby-3.1.2.tar.xz
git clone https://github.com/ruby/ruby.git
cd ruby && git checkout v3_1_2
patch -p1 < ../ruby-3.2.0-define-unsupported-gc-compaction-methods-as-rb_f_notimplement.patch
./autogen.sh && ./configure
make gc.rbinc miniprelude.c
cd ..
diff -u {ruby-3.1.2,ruby}/gc.rbinc > ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch
diff -u {ruby-3.1.2,ruby}/miniprelude.c >> ruby-3.2.0-define-unsupported-gc-compaction-methods_generated-files.patch
~~~

Uptream bug: https://bugs.ruby-lang.org/issues/18779
Upstream PR: https://github.com/ruby/ruby/pull/5934
2022-06-14 12:59:25 +02:00
Jun Aruga
2c91b113bb Update a comment about make verbose option, dropping Q= explanation.
According to the <https://bugs.ruby-lang.org/issues/18756>, the `Q=` is not
recommended. The `V=1` is recommended to output for the verbose mode.
The `make V=1` suppresses some logs that `make` without `V=1` outputs rather
than just adding verbose logs.

While the `V=1 ECHO0=echo` is more equivalent with `Q=`, the
`make V=1 ECHO0=echo` doesn't really output meaningful logs additionally.
So, the `make V=1` is the best option for us to check the compiler flags.
2022-05-12 11:50:01 +02:00
Jun Aruga
03e8cec9fe Drop Q= in make options.
Because the `%make_build` macro includes the `V=1`. Note there is no actual
difference of build.log between before and after this commit.

```
$ rpm --eval %make_build
/usr/bin/make -O -j8 V=1 VERBOSE=1
```
2022-04-29 16:01:56 +02:00
Vít Ondruch
c2061af620 Use upstream patch for correct build of gem extensions. 2022-04-14 13:50:23 +02:00
Vít Ondruch
09d0e79c2b Upgrade to Ruby 3.1.2. 2022-04-14 13:50:23 +02:00
Vít Ondruch
22d91a0910 Properly build binary gem extensions.
Because the gem extensions were built in `%{buildroot}` they referred
`BUILDROOT` directory, which would be under normal circumstances
reported by RPM, but there was a bug in RPM due to changes in grep:

https://github.com/rpm-software-management/rpm/issues/1968
2022-04-04 12:30:05 +02:00
Jun Aruga
796a198176 Add Bundler tests.
* Add `make test-bundler-parallel` executed on the upstream CI.
  See <41a48535d1/.github/workflows/ubuntu.yml (L22)>.
* The tests are disabled as a default, as it requires the internet.
  Run the Bundler tests as follows.
  ```
  $ mock --with bundler_tests ruby-3.1.0-161.fc37.src.rpm
  ```
* Fix a test for `bin/bundle update --bundler` in `make test-bundler`.
2022-03-22 19:10:01 +01:00
Jun Aruga
aee17a2180 ruby.rpmlintrc: Add a filter for "E: shared-lib-without-dependency-information".
Add a filter for "E: shared-lib-without-dependency-information" for
rpmlint 1.11 compatibility in Zuul CI.
2022-03-15 23:15:53 +01:00
Jun Aruga
df8cc89df4 ruby.rpmlintrc: Recover the filter to ignore a false positive missing-call-to-chdir-with-chroot error.
The filter was deleted at the b0ce095f6d . But it
is still needed to pass Zuul CI.
2022-03-15 23:15:49 +01:00
Jun Aruga
9e774fba70 ruby.rpmlintrc: Ignore zero-length error for gem.build_complete file.
This error is gone as false positive in rpmlint 2.0+. However the rpmlint
version on Zuul CI running on the Fedora 34 container is still 1.11. After Zuul
CI is upgraded to Fedora 35+ container, and uses the rpmlint 2, we can notice
this filter is not used by "E: unused-rpmlintrc-filter" error, and remove it.
2022-03-15 23:15:44 +01:00
Vít Ondruch
74983bcd56 Upgrade to Ruby 3.1.1. 2022-03-15 13:26:14 +01:00
Jun Aruga
67d5a7b3c6 Revert "Remove colon from load call."
This is for a compatibility of Zuul CI still using RPM 4.16 on F34.

This reverts commit 46ee70614f.
2022-03-14 11:28:52 +01:00
Vít Ondruch
204bab4f7f Prevent segfaults running with SystemTap. 2022-02-10 14:14:12 +01:00
Vít Ondruch
8157cd4820 Revert "Temporary bump rubygem-json release."
This reverts commit 1ff09bed2b.
2022-01-26 15:33:43 +01:00
Vít Ondruch
1ff09bed2b 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.
2022-01-26 09:54:45 +01:00
Vít Ondruch
b0ce095f6d Upgrade to Ruby 3.1.0.
For details of the evolution please check `private-ruby-3.1` branch.
2022-01-26 09:54:13 +01:00
Vít Ondruch
a51a61214c Drop Puma workaround.
This is considered as Puma issue which should be addressed in latest
release:

https://github.com/puma/puma/issues/2753
2022-01-25 18:25:09 +01:00
Vít Ondruch
2da7a540e7 Update OpenSSL 3 compatibility patches.
This replaces the parts of the original PR with official patches which
landed in [ruby/openssl](https://github.com/ruby/openssl) repository and
should reflect the state of OpenSSL 3 support in Ruby 3.1.
2022-01-25 18:24:19 +01:00
Vít Ondruch
a0bcb33eaa Disable package notes to prevent rubygem- build breakage.
The embedded linker flags breaks build of rubygem- packages with binary
extension:

~~~
gcc -shared -o nio4r_ext.so bytebuffer.o monitor.o nio4r_ext.o selector.o -L. -L/usr/lib64 -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -Wl,--build-id=sha1 -Wl,-dT,/builddir/build/BUILD/.package_note-rubygem-nio4r-2.5.2-6.fc36.x86_64.ld -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -Wl,--build-id=sha1 -Wl,-dT,/builddir/build/BUILD/.package_note-ruby-0.15.2-157.fc36.x86_64.ld  -m64  -lruby  -lm   -lc
/usr/bin/ld: cannot open linker script file /builddir/build/BUILD/.package_note-ruby-0.15.2-157.fc36.x86_64.ld: No such file or directory
~~~
2022-01-20 17:27:08 +01:00
Vít Ondruch
a28556f684 Fix segfault in TestArray#test_sample on s390x.
~~~
... snip ...

[ 3104/21226] TestArray#test_sample/builddir/build/BUILD/ruby-3.0.3/test/ruby/test_array.rb:2871: [BUG] Segmentation fault at 0x00000000c04fb000
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [s390x-linux]
-- Control frame information -----------------------------------------------
c:0031 p:---- s:0176 e:000175 CFUNC  :srand
c:0030 p:0011 s:0171 e:000170 METHOD /builddir/build/BUILD/ruby-3.0.3/test/ruby/test_array.rb:2871
c:0029 p:0052 s:0165 e:000164 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:1283
c:0028 p:0065 s:0159 e:000158 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:1330
c:0027 p:0013 s:0150 e:000149 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit/testcase.rb:18
c:0026 p:0077 s:0145 e:000144 BLOCK  /builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:979 [FINISH]
c:0025 p:---- s:0138 e:000137 CFUNC  :map
c:0024 p:0006 s:0134 E:0012c8 BLOCK  /builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:972
c:0023 p:0186 s:0130 E:000ba0 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:999
c:0022 p:0042 s:0118 E:000888 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:1136
c:0021 p:0010 s:0111 E:0007a0 BLOCK  /builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:627 [FINISH]
c:0020 p:---- s:0105 e:000104 CFUNC  :each
c:0019 p:0054 s:0101 E:001588 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:625
c:0018 p:0008 s:0094 E:001eb8 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:662
c:0017 p:0140 s:0087 E:0011a8 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:908
c:0016 p:0016 s:0074 E:001ca8 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:1073
c:0015 p:0005 s:0069 E:000710 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:1147
c:0014 p:0006 s:0065 E:000438 BLOCK  /builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:1134 [FINISH]
c:0013 p:---- s:0061 e:000060 CFUNC  :each
c:0012 p:0047 s:0057 E:0022b8 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:1133
c:0011 p:0013 s:0052 E:000288 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:1121
c:0010 p:0008 s:0047 E:000c70 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:847
c:0009 p:0008 s:0041 E:0008d0 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:695
c:0008 p:0015 s:0035 E:001f08 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:34
c:0007 p:0006 s:0030 E:0003c8 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:1175
c:0006 p:0032 s:0025 E:000e80 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:1245
c:0005 p:0009 s:0021 E:0018b8 METHOD /builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:1249
c:0004 p:0172 s:0016 E:0001b8 TOP    /builddir/build/BUILD/ruby-3.0.3/tool/test/runner.rb:23 [FINISH]
c:0003 p:---- s:0011 e:000010 CFUNC  :require_relative
c:0002 p:0092 s:0006 E:001bf0 EVAL   ./test/runner.rb:11 [FINISH]
c:0001 p:0000 s:0003 E:0004f0 (none) [FINISH]
-- Ruby level backtrace information ----------------------------------------
./test/runner.rb:11:in `<main>'
./test/runner.rb:11:in `require_relative'
/builddir/build/BUILD/ruby-3.0.3/tool/test/runner.rb:23:in `<top (required)>'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:1249:in `run'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:1245:in `run'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:1175:in `run'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:34:in `run'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:695:in `run'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:847:in `run'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:1121:in `run'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:1133:in `_run'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:1133:in `each'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:1134:in `block in _run'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:1147:in `run_tests'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:1073:in `_run_anything'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:908:in `_run_anything'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:662:in `_run_suites'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:625:in `_run_suites'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:625:in `each'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:627:in `block in _run_suites'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:1136:in `_run_suite'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:999:in `_run_suite'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:972:in `block in _run_suite'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:972:in `map'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:979:in `block (2 levels) in _run_suite'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit/testcase.rb:18:in `run'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/minitest/unit.rb:1330:in `run'
/builddir/build/BUILD/ruby-3.0.3/tool/lib/test/unit.rb:1283:in `run_test'
/builddir/build/BUILD/ruby-3.0.3/test/ruby/test_array.rb:2871:in `test_sample'
/builddir/build/BUILD/ruby-3.0.3/test/ruby/test_array.rb:2871:in `srand'
-- C level backtrace information -------------------------------------------
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_print_backtrace+0x1c) [0x3ffab964c5c] vm_dump.c:758
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_vm_bugreport.constprop.0+0x4ba) [0x3ffab977f0a] vm_dump.c:998
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_bug_for_fatal_signal+0xb2) [0x3ffab7b2252] error.c:786
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(sigsegv+0x58) [0x3ffab8d2fb8] signal.c:963
[0x3ffabb7e490]
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_free_tmp_buffer+0x4) [0x3ffab7d1114] gc.c:11047
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rand_init+0x122) [0x3ffab896892] random.c:387
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_f_srand+0x6e) [0x3ffab8975fe] random.c:873
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_call_cfunc_with_frame+0x170) [0x3ffab9421f0] vm_insnhelper.c:2931
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_sendish+0x53a) [0x3ffab94659a] vm_insnhelper.c:4532
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_exec_core.lto_priv.0+0xe6) [0x3ffab947d16] insns.def:789
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_vm_exec+0x1ee) [0x3ffab96129e] vm.c:2172
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_yield+0xaa) [0x3ffab951a6a] vm.c:1398
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_ary_collect.lto_priv.0+0x6a) [0x3ffab742d6a] array.c:3635
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_call_cfunc_with_frame+0x170) [0x3ffab9421f0] vm_insnhelper.c:2931
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_sendish+0x53a) [0x3ffab94659a] vm_insnhelper.c:4532
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_exec_core.lto_priv.0+0x21c0) [0x3ffab949df0] insns.def:770
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_vm_exec+0x1ee) [0x3ffab96129e] vm.c:2172
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_yield+0xaa) [0x3ffab951a6a] vm.c:1398
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_ary_each+0x4c) [0x3ffab742aac] array.c:2523
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_call_cfunc_with_frame+0x170) [0x3ffab9421f0] vm_insnhelper.c:2931
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_call_method_each_type+0x530) [0x3ffab942d20] vm_insnhelper.c:3400
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_sendish+0x53a) [0x3ffab94659a] vm_insnhelper.c:4532
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_exec_core.lto_priv.0+0x21c0) [0x3ffab949df0] insns.def:770
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_vm_exec+0x1ee) [0x3ffab96129e] vm.c:2172
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_yield+0xaa) [0x3ffab951a6a] vm.c:1398
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_ary_each+0x4c) [0x3ffab742aac] array.c:2523
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_call_cfunc_with_frame+0x170) [0x3ffab9421f0] vm_insnhelper.c:2931
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_call_method_each_type+0x530) [0x3ffab942d20] vm_insnhelper.c:3400
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_sendish+0x53a) [0x3ffab94659a] vm_insnhelper.c:4532
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_exec_core.lto_priv.0+0x21c0) [0x3ffab949df0] insns.def:770
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_vm_exec+0x1ee) [0x3ffab96129e] vm.c:2172
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(require_internal.lto_priv.0+0xbc6) [0x3ffab809be6] load.c:1109
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_require_string+0x48) [0x3ffab809db8] load.c:1186
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_call_cfunc_with_frame+0x170) [0x3ffab9421f0] vm_insnhelper.c:2931
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_sendish+0x53a) [0x3ffab94659a] vm_insnhelper.c:4532
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(vm_exec_core.lto_priv.0+0xe6) [0x3ffab947d16] insns.def:789
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_vm_exec+0x1ee) [0x3ffab96129e] vm.c:2172
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(rb_ec_exec_node+0x10c) [0x3ffab7b71ac] eval.c:317
/builddir/build/BUILD/ruby-3.0.3/libruby.so.3.0.3(ruby_run_node+0x70) [0x3ffab7b72c0] eval.c:375
[0x2aa26e811f0]
[0x3ffab4b3872]
[0x3ffab4b3950]
[0x2aa26e81250]

... snip ...
~~~
2022-01-20 11:20:01 +01:00
Vít Ondruch
b6d9b2acd1 Disable some Fiddle test by libffi-3.4.2. 2022-01-19 17:08:19 +01:00
Vít Ondruch
46ee70614f Remove colon from load call.
This is not needed by RPM 4.17+ and might improve backwared compatibilty
with RHEL 7, where the original LUA implementation of `load` macro was
used.
2022-01-19 17:07:44 +01:00
Jun Aruga
b24ebf5ec1 Remove the patch applied to pass the test/fiddle/test_import.rb on PPC.
In Ruby 3.0.3, a new logic with the hard-coded "libc.so.6" to detect glibc
works on PPC, both Power 8 and 9.
See <https://bugs.ruby-lang.org/issues/12666#note-13>.

Note the logic also fixes the following error on a Power 9 environment where
the path is `/lib64/glibc-hwcaps/power9/libc-2.28.so`.

```
/builddir/build/BUILD/ruby-2.6.9/.ext/common/fiddle/import.rb:299:in `import_function': cannot find the function: strcpy() (Fiddle::DLError)
    from /builddir/build/BUILD/ruby-2.6.9/.ext/common/fiddle/import.rb:172:in `extern'
    from /builddir/build/BUILD/ruby-2.6.9/test/fiddle/test_import.rb:17:in `<module:LIBC>'
    from /builddir/build/BUILD/ruby-2.6.9/test/fiddle/test_import.rb:10:in `<module:Fiddle>'
    from /builddir/build/BUILD/ruby-2.6.9/test/fiddle/test_import.rb:9:in `<top (required)>'
    from /builddir/build/BUILD/ruby-2.6.9/test/lib/test/unit.rb:958:in `require'
    from /builddir/build/BUILD/ruby-2.6.9/test/lib/test/unit.rb:958:in `block in non_options'
    from /builddir/build/BUILD/ruby-2.6.9/test/lib/test/unit.rb:952:in `each'
    from /builddir/build/BUILD/ruby-2.6.9/test/lib/test/unit.rb:952:in `non_options'
    from /builddir/build/BUILD/ruby-2.6.9/test/lib/test/unit.rb:64:in `process_args'
    from /builddir/build/BUILD/ruby-2.6.9/test/lib/test/unit.rb:130:in `process_args'
    from /builddir/build/BUILD/ruby-2.6.9/test/lib/test/unit.rb:1136:in `process_args'
    from /builddir/build/BUILD/ruby-2.6.9/test/lib/test/unit.rb:1141:in `run'
    from /builddir/build/BUILD/ruby-2.6.9/test/lib/test/unit.rb:1148:in `run'
    from ./test/runner.rb:33:in `<main>'
```
2022-01-11 11:50:01 +01:00
Miro Hrončok
08a1249d7f Rebuilt for https://fedoraproject.org/wiki/Changes/LIBFFI34 2022-01-10 11:55:34 +01:00
Vít Ondruch
5d3688479a Fix loading of default gems.
Resolves: rhbz#2027099
2021-12-10 17:06:26 +01:00
Vít Ondruch
dbe75d1cb5 Fix wrong version in changelog. 2021-12-08 12:10:25 +01:00
Vít Ondruch
d584a5bfb3 Upgrade to Ruby 3.0.3. 2021-11-25 17:46:48 +01:00
Vít Ondruch
c4f8814a93 Fix OpenSSL 3.0 compatibility.
Resolves: rhbz#2021922
2021-11-22 18:21:04 +01:00
Jun Aruga
78a9fbc351 Add AC_PROG_CC to make C++ compiler dependency optional on autoconf >= 2.70.
Resolves: rhbz#1999479
2021-10-04 12:23:30 +02:00
Sahana Prasad
d75a6c86f9 Rebuilt with OpenSSL 3.0.0 2021-09-14 19:13:53 +02:00
Vít Ondruch
11a27766bd Load user installed RubyGems plugins. 2021-08-24 18:23:20 +02:00
Vít Ondruch
1170d812fe Enable LTO. 2021-08-24 17:37:08 +02:00
Fedora Release Engineering
089c0a1928 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-23 11:43:38 +00:00
Jarek Prokop
63065e7db7 Upgrade to Ruby 3.0.2.
- Fix command injection vulnerability in RDoc.
  Resolves: CVE-2021-31799
- Fix FTP PASV command response can cause Net::FTP to connect to arbitrary host.
  Resolves: CVE-2021-31810
- Fix StartTLS stripping vulnerability in Net::IMAP.
  Resolves: CVE-2021-32066
- Fix dependencies of gems with explicit source installed from a different
  source.
  Resolves: CVE-2020-36327
2021-07-15 14:02:23 +02:00
Timm Bäder
6b2ff68f33 Pass ldflags to gem install
We have them, so we may as well pass them. This also fixes building ruby
gems with clang.
2021-05-31 10:25:26 +00:00
Jun Aruga
e6a3dff909 ruby.rpmlintrc: Remove prefix match.
A result of ruby.spec file depends on how the spec file is called by rpmlint.

```
$ rpmlint ruby.spec
ruby.spec:20: E: use-of-RPM_SOURCE_DIR
..
0 packages and 1 specfiles checked; 3 errors, 4 warnings.

$ rpmlint ./ruby.spec
./ruby.spec:20: E: use-of-RPM_SOURCE_DIR
..
0 packages and 1 specfiles checked; 3 errors, 4 warnings.
```
2021-05-18 15:40:11 +02:00
Jun Aruga
a09dbbec17 ruby.rpmlintrc: Ignore a shared-lib-without-dependency-information error.
Nothing referred and no dependency information should be no problem.

Ignore the following error.

```
ruby-libs.x86_64: E: shared-lib-without-dependency-information /usr/lib64/ruby/enc/gb2312.so
```
2021-05-18 15:40:05 +02:00
Jun Aruga
882d68b75c ruby.rpmlintrc: Ignore a false positive missing-call-to-chdir-with-chroot error.
The `chroot` in the `dir.c` is just used as a Ruby binding `Dir.chroot`
for the function.

Ignore the following error.

```
ruby-libs.x86_64: E: missing-call-to-chdir-with-chroot /usr/lib64/libruby.so.3.0.1
```
2021-05-18 15:40:00 +02:00
Jun Aruga
26bc979446 ruby.rpmlintrc: Ignore the non-executable-script errors in bundled gems.
The bundled gem files permissions are overridden as 644 by `make install`.
Ignore following errors in bundled gems.

```
rubygem-power_assert.noarch: E: non-executable-script /usr/share/gems/gems/power_assert-1.2.0/bin/console 644 /usr/bin/env ruby
rubygem-power_assert.noarch: E: non-executable-script /usr/share/gems/gems/power_assert-1.2.0/bin/setup 644 /usr/bin/env bash
rubygem-rake.noarch: E: non-executable-script /usr/share/gems/gems/rake-13.0.3/bin/bundle 644 /usr/bin/env ruby
rubygem-rake.noarch: E: non-executable-script /usr/share/gems/gems/rake-13.0.3/bin/console 644 /usr/bin/env ruby
rubygem-rake.noarch: E: non-executable-script /usr/share/gems/gems/rake-13.0.3/bin/rake 644 /usr/bin/env ruby
rubygem-rake.noarch: E: non-executable-script /usr/share/gems/gems/rake-13.0.3/bin/rdoc 644 /usr/bin/env ruby
rubygem-rake.noarch: E: non-executable-script /usr/share/gems/gems/rake-13.0.3/bin/rubocop 644 /usr/bin/env ruby
rubygem-rake.noarch: E: non-executable-script /usr/share/gems/gems/rake-13.0.3/bin/setup 644 /usr/bin/env bash
rubygem-rbs.noarch: E: non-executable-script /usr/share/gems/gems/rbs-1.0.4/bin/annotate-with-rdoc 644 /usr/bin/env ruby
rubygem-rbs.noarch: E: non-executable-script /usr/share/gems/gems/rbs-1.0.4/bin/console 644 /usr/bin/env ruby
rubygem-rbs.noarch: E: non-executable-script /usr/share/gems/gems/rbs-1.0.4/bin/query-rdoc 644 /usr/bin/env ruby
rubygem-rbs.noarch: E: non-executable-script /usr/share/gems/gems/rbs-1.0.4/bin/rbs-prof 644 /usr/bin/env ruby
rubygem-rbs.noarch: E: non-executable-script /usr/share/gems/gems/rbs-1.0.4/bin/setup 644 /usr/bin/env bash
rubygem-rbs.noarch: E: non-executable-script /usr/share/gems/gems/rbs-1.0.4/bin/sort 644 /usr/bin/env ruby
rubygem-rbs.noarch: E: non-executable-script /usr/share/gems/gems/rbs-1.0.4/bin/steep 644 /bin/sh
rubygem-rbs.noarch: E: non-executable-script /usr/share/gems/gems/rbs-1.0.4/bin/test_runner.rb 644 /usr/bin/env ruby
rubygem-test-unit.noarch: E: non-executable-script /usr/share/gems/gems/test-unit-3.3.7/test/run-test.rb 644 /usr/bin/env ruby
```
2021-05-18 15:39:53 +02:00
Jun Aruga
fbaee91204 ruby.rpmlintrc: Ignore non executable template files for Bundler.
The template files do not have to have executable bits.
Ignore the following errors.

```
rubygem-bundler.noarch: E: non-executable-script /usr/share/gems/gems/bundler-2.2.15/lib/bundler/templates/Executable 644 /usr/bin/env <%= Bundler.settings[:shebang] || RbConfig::CONFIG["ruby_install_name"] %>
rubygem-bundler.noarch: E: non-executable-script /usr/share/gems/gems/bundler-2.2.15/lib/bundler/templates/Executable.bundler 644 /usr/bin/env <%= Bundler.settings[:shebang] || RbConfig::CONFIG["ruby_install_name"] %>
rubygem-bundler.noarch: E: non-executable-script /usr/share/gems/gems/bundler-2.2.15/lib/bundler/templates/Executable.standalone 644 /usr/bin/env <%= Bundler.settings[:shebang] || RbConfig::CONFIG["ruby_install_name"] %>
rubygem-bundler.noarch: E: non-executable-script /usr/share/gems/gems/bundler-2.2.15/lib/bundler/templates/newgem/bin/console.tt 644 /usr/bin/env ruby
rubygem-bundler.noarch: E: non-executable-script /usr/share/gems/gems/bundler-2.2.15/lib/bundler/templates/newgem/bin/setup.tt 644 /usr/bin/env bash
rubygem-bundler.noarch: E: non-executable-script /usr/share/gems/gems/bundler-2.2.15/lib/bundler/templates/newgem/exe/newgem.tt 644 /usr/bin/env ruby
```
2021-05-18 15:39:38 +02:00
Jun Aruga
1b641ac57f Fix FTBFS due to an incompatible load.
The FTBFS has started to happen with rpm-4.16.90-0.git15395.2.fc35.

root.log

```
DEBUG util.py:444:  error: line 116: Unknown tag: /chroot_tmpdir/srpm_unpacked/SOURCES/macros.ruby
```

As the `%{?load:...}` is undocumented, it is gone.

https://github.com/rpm-software-management/rpm/issues/1669
2021-05-05 14:15:31 +02:00
Vít Ondruch
9e656cf658 Upgrade to Ruby 3.0.1. 2021-04-06 12:57:56 +02:00
Vít Ondruch
fd8c8ee765 Remove IRB dependency from rubygem-rdoc.
The IRB dependency was dropped in RDoc 6.0.0 already, but nobody
noticed:

https://github.com/ruby/rdoc/pull/512
2021-04-01 13:10:34 +02:00
Jun Aruga
4108f57be7 Ignore the rpmlint "W: unversioned-explicit-provides".
Ignore the following warnings for bundled ccan-* libraries.

```
ruby.spec:231: W: unversioned-explicit-provides bundled(ccan-build_assert)
ruby.spec:232: W: unversioned-explicit-provides bundled(ccan-check_type)
ruby.spec:233: W: unversioned-explicit-provides bundled(ccan-container_of)
ruby.spec:234: W: unversioned-explicit-provides bundled(ccan-list)
ruby.src:231: W: unversioned-explicit-provides bundled(ccan-build_assert)
ruby.src:232: W: unversioned-explicit-provides bundled(ccan-check_type)
ruby.src:233: W: unversioned-explicit-provides bundled(ccan-container_of)
ruby.src:234: W: unversioned-explicit-provides bundled(ccan-list)
```
2021-03-24 14:33:39 +01:00
Jun Aruga
b65d1d3090 Ignore the rpmlint "E: use-of-RPM_SOURCE_DIR".
Ignore the following errors.

```
ruby.spec:20: E: use-of-RPM_SOURCE_DIR
ruby.src:20: E: use-of-RPM_SOURCE_DIR
```
2021-03-24 14:33:24 +01:00
Jun Aruga
303495d1bf Add ruby.rpmlintrc.
Ignore the false positive errors and warnings by the
`rpmlint --file ruby.rpmlintrc`, that is executed by Zuul CI.

You can run the command on your local like this.

```
$ rpmlint --file ruby.rpmlintrc ruby.spec /var/lib/mock/fedora-rawhide-x86_64/result/*.rpm
```

The `rpmlint` without `--file` option shows the original result.
2021-03-24 14:19:53 +01:00
Vít Ondruch
dae90ef93d Summary should not end with . 2021-03-22 10:10:27 +01:00
Vít Ondruch
cb0039f53c Remove excesive space. 2021-03-05 14:06:28 +01:00
Vít Ondruch
9b149e59e4 Properly support DWARF5 debug information.
Resolves: rhbz#1920533
2021-03-03 11:26:27 +01:00
Vít Ondruch
2bc8b3d5d5 Apply patch fixing flaky excon test suite. 2021-03-02 11:05:16 +01:00
Vít Ondruch
3210f66fb1 Avoid ruby-spec to be stuck in "C-API Kernel function rb_rescue2". 2021-02-16 10:00:33 +01:00
Vít Ondruch
35f28c9a68 Use proper path for plugin wrappers. 2021-01-27 14:03:19 +01:00
Vít Ondruch
b7229da165 Disable test which started to fail presumably after move to DWARF5
https://bugzilla.redhat.com/show_bug.cgi?id=1920533

Unfortunately, these used to be problematic already before:
https://bugs.ruby-lang.org/issues/13758
2021-01-27 14:03:19 +01:00
Vít Ondruch
b3e2d7fc60 Add missing rubygem- prefix for bundled provide.
The `bundled()` provide name must corresponded with package name. This
was omited due to mistake probably.
2021-01-26 12:32:40 +01:00
Vít Ondruch
c7513cd67c Bundle OpenSSL into StdLib.
Symlinks to StdLib provided to preserve `--disable-gems` functionality
together with `require_relative` cause double loading issues [1], e.g.:

~~~
$ ruby --disable-gems -e 'require "openssl"; require "openssl/digest"'
/usr/share/ruby/openssl/digest.rb:45: warning: already initialized constant OpenSSL::Digest::MD4
/usr/share/gems/gems/openssl-2.2.0/lib/openssl/digest.rb:45: warning: previous definition of MD4 was here
/usr/share/ruby/openssl/digest.rb:45: warning: already initialized constant OpenSSL::Digest::MD5
/usr/share/gems/gems/openssl-2.2.0/lib/openssl/digest.rb:45: warning: previous definition of MD5 was here
/usr/share/ruby/openssl/digest.rb:45: warning: already initialized constant OpenSSL::Digest::RIPEMD160
/usr/share/gems/gems/openssl-2.2.0/lib/openssl/digest.rb:45: warning: previous definition of RIPEMD160 was here
/usr/share/ruby/openssl/digest.rb:45: warning: already initialized constant OpenSSL::Digest::SHA1
/usr/share/gems/gems/openssl-2.2.0/lib/openssl/digest.rb:45: warning: previous definition of SHA1 was here
/usr/share/ruby/openssl/digest.rb:45: warning: already initialized constant OpenSSL::Digest::SHA224
/usr/share/gems/gems/openssl-2.2.0/lib/openssl/digest.rb:45: warning: previous definition of SHA224 was here
/usr/share/ruby/openssl/digest.rb:45: warning: already initialized constant OpenSSL::Digest::SHA256
/usr/share/gems/gems/openssl-2.2.0/lib/openssl/digest.rb:45: warning: previous definition of SHA256 was here
/usr/share/ruby/openssl/digest.rb:45: warning: already initialized constant OpenSSL::Digest::SHA384
/usr/share/gems/gems/openssl-2.2.0/lib/openssl/digest.rb:45: warning: previous definition of SHA384 was here
/usr/share/ruby/openssl/digest.rb:45: warning: already initialized constant OpenSSL::Digest::SHA512
/usr/share/gems/gems/openssl-2.2.0/lib/openssl/digest.rb:45: warning: previous definition of SHA512 was here
/usr/share/ruby/openssl/digest.rb:52:in `<class:Digest>': superclass mismatch for class Digest (TypeError)
	from /usr/share/ruby/openssl/digest.rb:16:in `<module:OpenSSL>'
	from /usr/share/ruby/openssl/digest.rb:15:in `<top (required)>'
	from -e:1:in `require'
	from -e:1:in `<main>'
~~~

We could maintain a downstream patch reverting the `require_relative`,
but given that how much troubles the extracted gems cause, it'll be
better to keep them bundled. This will provide similar experience to
upstream and prevent similar issues.

[1]: https://bugs.ruby-lang.org/issues/16978#note-11
2021-01-26 11:57:47 +01:00
Jun Aruga
cdeff9e00a Refactor small issues. 2021-01-18 19:03:49 +01:00
Vít Ondruch
1e72602218 Fix SEGFAULT in rubygem-shoulda-matchers test suite. 2021-01-16 11:44:56 +01:00
Vít Ondruch
0256efd992 Provide gem.build_complete file for binary gems.
When the `gem.build_complete` file is not present, Bundler treats the
package as uninstalled, therefore leaves it out from the dependency
resolution with error such as:

~~~
Could not find gem 'openssl', which is required by gem 'net-ssh', in any of the sources.
~~~

[1] 1969e8adfc/bundler/lib/bundler/source/rubygems.rb (L353-L384)
2021-01-12 18:20:07 +01:00
Vít Ondruch
64975231d1 Re-enable test suite.
It was disabled by mistake in fcc584306b
when I was trying to come up with fix for armv7hl.
2021-01-11 10:19:35 +01:00
Vít Ondruch
f63d6e5cd4 Remove time from changelog
It makes some tools to complain about changelog ordering.
2021-01-11 09:27:24 +01:00
Vít Ondruch
0e7ccf2b47 ruby-default-gems have to depend on rubygem(io-console) due to reline.
This fixes IRB failures:

~~~
$ irb
/usr/share/rubygems/rubygems/specification.rb:1398:in `rescue in block in activate_dependencies': Could not find 'io-console' (~> 0.5) among 76 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/builddir/.local/share/gem/ruby:/usr/share/gems:/usr/local/share/gems' at: /usr/share/gems/specifications/reline-0.2.0.gemspec, execute `gem env` for more information
	from /usr/share/rubygems/rubygems/specification.rb:1395:in `block in activate_dependencies'
	from /usr/share/rubygems/rubygems/specification.rb:1384:in `each'
	from /usr/share/rubygems/rubygems/specification.rb:1384:in `activate_dependencies'
	from /usr/share/rubygems/rubygems/specification.rb:1366:in `activate'
	from /usr/share/rubygems/rubygems/specification.rb:1402:in `block in activate_dependencies'
	from /usr/share/rubygems/rubygems/specification.rb:1384:in `each'
	from /usr/share/rubygems/rubygems/specification.rb:1384:in `activate_dependencies'
	from /usr/share/rubygems/rubygems/specification.rb:1366:in `activate'
	from /usr/share/rubygems/rubygems.rb:302:in `block in activate_bin_path'
	from /usr/share/rubygems/rubygems.rb:301:in `synchronize'
	from /usr/share/rubygems/rubygems.rb:301:in `activate_bin_path'
	from /usr/bin/irb:23:in `<main>'
/usr/share/rubygems/rubygems/dependency.rb:307:in `to_specs': Could not find 'io-console' (~> 0.5) among 76 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/builddir/.local/share/gem/ruby:/usr/share/gems:/usr/local/share/gems' , execute `gem env` for more information
	from /usr/share/rubygems/rubygems/specification.rb:1396:in `block in activate_dependencies'
	from /usr/share/rubygems/rubygems/specification.rb:1384:in `each'
	from /usr/share/rubygems/rubygems/specification.rb:1384:in `activate_dependencies'
	from /usr/share/rubygems/rubygems/specification.rb:1366:in `activate'
	from /usr/share/rubygems/rubygems/specification.rb:1402:in `block in activate_dependencies'
	from /usr/share/rubygems/rubygems/specification.rb:1384:in `each'
	from /usr/share/rubygems/rubygems/specification.rb:1384:in `activate_dependencies'
	from /usr/share/rubygems/rubygems/specification.rb:1366:in `activate'
	from /usr/share/rubygems/rubygems.rb:302:in `block in activate_bin_path'
	from /usr/share/rubygems/rubygems.rb:301:in `synchronize'
	from /usr/share/rubygems/rubygems.rb:301:in `activate_bin_path'
	from /usr/bin/irb:23:in `<main>'
~~~
2021-01-08 18:49:16 +01:00
Vít Ondruch
071cbd0906 Rename patch to the correct name. 2021-01-08 16:14:30 +01:00
Vít Ondruch
fcc584306b Fix SEGFAULT preventing rubygem-unicode to build on armv7hl. 2021-01-08 15:38:01 +01:00
Vít Ondruch
9a03f61609 Add %{gem_plugin} convenience macro.
This allows easy plugin stub ownership for RubyGems plugin packages.
2021-01-06 14:26:09 +01:00
Vít Ondruch
15d70f8b4a Properly own RubyGems plugin directory.
RubyGems 3.2.0 rewored their plugins system for improvement performance
[[1]]. Each RubyGems plugins has now generated loader stub during
installation. This directory needs to have proper ownership.

[1]: https://github.com/rubygems/rubygems/pull/3108
2021-01-06 14:26:09 +01:00
Vít Ondruch
f11a9b4fe3 Upgrade to Ruby 3.0.0.
* Extract RSS and REXML into separate subpackages, because they were moved from
  default gems to bundled gems.

* Obsolete Net::Telnet and XMLRPC packages, because they were dropped from Ruby.

The detailed changelog leading to this release is preserved in
private-ruby-3.0 branch.
2021-01-04 16:42:55 +01:00
Pavel Valena
2a352348bd Add Recommends: redhat-rpm-config to devel subpackage
as it's needed for building (gem install ...) gems with binary extensions.

This is a workaround to have /usr/lib/rpm/redhat/redhat-hardened-cc1
on the system, as same CFLAGS are reused from when Ruby was built.

Resolves: rhbz#1905222
2020-12-17 02:53:30 +01:00
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.
https://src.fedoraproject.org/rpms/redhat-rpm-config/c/5baaf4a99cc77572d3496a7000674098bef7ed68?branch=master
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
45 changed files with 4792 additions and 1586 deletions

1
.fmf/version Normal file
View file

@ -0,0 +1 @@
1

24
.gitignore vendored
View file

@ -1,18 +1,6 @@
ruby-1.8.7-p299.tar.bz2
ruby-rev415a3ef9ab82c65a7abc-ext_tk.tar.gz
/ruby-1.8.7-p302.tar.bz2
/ruby-rev54f344095916f83a2755a177f94e65a1c390a612-ext_tk.tar.gz
/ruby-1.8.7-p330.tar.bz2
/ruby-revf30eca26639ce538339bc488c7ed1fd397b0c13f-ext_tk.tar.gz
/ruby-1.8.7-p334.tar.bz2
/ruby-1.8.7-p352.tar.bz2
/ruby-revc2dfaa7d40531aef3706bcc16f38178b0c6633ee-ext_tk.tar.gz
/ruby-1.8.7-p357.tar.bz2
/ruby-1.9.3-p0.tar.gz
/ruby-1.9.3-p125.tar.gz
/ruby-1.9.3-p194.tar.gz
/ruby-1.9.3-p286.tar.gz
/ruby-1.9.3-p327.tar.gz
/ruby-1.9.3-p362.tar.gz
/ruby-1.9.3-p374.tar.gz
/ruby-1.9.3-p385.tar.gz
/*/
/ruby-*.tar.xz
/rexml-*.gem
/*.rpm
!/plans/

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$ \
}

227
macros.rubygems Normal file
View file

@ -0,0 +1,227 @@
# The RubyGems root folder.
%gem_dir %{_datadir}/gems
%gem_archdir %{_libdir}/gems
# %gem_prerelease - Provides prerelease string if available.
#
# Usage: %gem_prerelease [custom_gem_name]
#
# If avilable, prints prerelease string, which is a %prerelease macro by
# default. When [custom_gem_name] is provided, the custom_gem_name is used to
# derive %custom_gem_name_prerelease macro, which can be predefined.
#
# Please note that for the prerelease macros are the dashes in
# [custom_gem_name] replaced by underscores.
#
%gem_prerelease() %{?1:%{expand:%%{?%{gsub %{1} - _}_prerelease}}}%{!?1:%{?prerelease}}
# %gem_version - Provides version string (including prerelease if available).
#
# Usage: %gem_version [custom_gem_name]
#
# Prints version (including prerelease string), that is %version macro by
# default. When [custom_gem_name] is provided, the custom_gem_name is used to
# derive %custom_gem_name_version macro which needs to be predefined.
#
# Please note that for the version macros are the dashes in [custom_gem_name]
# replaced by underscores.
#
%gem_version() %{?1:%{expand:%{%{gsub %{1} - _}_version}}}%{!?1:%{version}}%{gem_prerelease %{?1}}
# %gem_name_version - Provides gem_name-version string.
#
# Usage: %gem_name_version [custom_gem_name]
#
# Prints gem_name-version string, by default joining %gem_name, %version and
# %prerelease macros. When [custom_gem_name] is provided, the
# custom_gem_name is joined with version as provided by %gem_version macro.
#
%gem_name_version() %{?1}%{!?1:%{gem_name}}-%{gem_version %{?1}}
# Common gem locations and files.
#
# These macros leverages %gem_name_version macro and accepts custom gem_name.
#
# -d Use default gem install location.
#
%gem_instdir() %{gem_dir}/gems/%{gem_name_version %{?1}}
%gem_extdir_mri() %{gem_archdir}/%{name}/%{gem_name_version %{?1}}
%gem_libdir() %{gem_instdir %{?1}}/lib
%gem_cache() %{gem_dir}/cache/%{gem_name_version %{?1}}.gem
%gem_spec(d) %{gem_dir}/specifications%{?-d:/default}/%{gem_name_version %{?1}}.gemspec
%gem_docdir() %{gem_dir}/doc/%{gem_name_version %{?1}}
%gem_plugin() %{gem_dir}/plugins/%{?1}%{!?1:%{gem_name}}_plugin.rb
# %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}' --with-ldflags='%{build_ldflags}' $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}

View file

@ -2,15 +2,41 @@ module Gem
class << self
##
# Returns a string representing that part or the directory tree that is
# common to all specified directories.
# Returns full path of previous but one directory of dir in path
# E.g. for '/usr/share/ruby', 'ruby', it returns '/usr'
def common_path(dirs)
paths = dirs.collect {|dir| dir.split(File::SEPARATOR)}
uncommon_idx = paths.transpose.each_with_index.find {|dirnames, idx| dirnames.uniq.length > 1}.last
paths[0][0 ... uncommon_idx].join(File::SEPARATOR)
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 :common_path
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).
@ -19,8 +45,8 @@ module Gem
def default_locations
@default_locations ||= {
:system => common_path([ConfigMap[:vendorlibdir], ConfigMap[:vendorarchdir]]),
:local => common_path([ConfigMap[:sitelibdir], ConfigMap[:sitearchdir]])
: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
@ -29,33 +55,77 @@ module Gem
# platform independent (:gem_dir) and dependent (:ext_dir) files.
def default_dirs
@default_dirs ||= Hash[default_locations.collect do |destination, path|
[destination, {
:bin_dir => File.join(path, ConfigMap[:bindir].split(File::SEPARATOR).last),
:gem_dir => File.join(path, ConfigMap[:datadir].split(File::SEPARATOR).last, 'gems'),
:ext_dir => File.join(path, ConfigMap[:libdir].split(File::SEPARATOR).last, 'gems')
}]
end]
@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 :default_dir if method_defined? :default_dir
remove_method :default_specifications_dir if method_defined? :default_specifications_dir
remove_method :default_path if method_defined? :default_path
remove_method :default_bindir if method_defined? :default_bindir
remove_method :default_ext_dir_for if method_defined? :default_ext_dir_for
##
# RubyGems default overrides.
def default_dir
if Process.uid == 0
if opt_build_root?
Gem.default_dirs[:system][:gem_dir]
elsif Process.uid == 0
Gem.default_dirs[:local][:gem_dir]
else
Gem.user_dir
end
end
##
# Path to specification files of default gems.
def default_specifications_dir
@default_specifications_dir ||= File.join(Gem.default_dirs[:system][:gem_dir], "specifications", "default")
end
##
# Default gem load path
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_bindir
if Process.uid == 0
if opt_build_root?
Gem.default_dirs[:system][:bin_dir]
elsif Process.uid == 0
Gem.default_dirs[:local][:bin_dir]
else
File.join [Dir.home, 'bin']
@ -63,8 +133,26 @@ module Gem
end
def default_ext_dir_for base_dir
dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir}
dirs && File.join(dirs.last[:ext_dir], 'exts')
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

6
plans/all.fmf Normal file
View file

@ -0,0 +1,6 @@
summary: Test plan with all Fedora tests
discover:
how: fmf
url: https://src.fedoraproject.org/tests/ruby.git
execute:
how: tmt

View file

@ -0,0 +1,28 @@
From 994ee4c17fb8c217ab0335df55620c6bdb5d5cbe Mon Sep 17 00:00:00 2001
From: tompng <tomoyapenguin@gmail.com>
Date: Fri, 26 Dec 2025 04:57:12 +0900
Subject: [PATCH] Fix comment_location for merged ClassModule
---
lib/rdoc/code_object/class_module.rb | 7 ++++++-
test/rdoc/code_object/class_module_test.rb | 6 ++++++
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/lib/rdoc/code_object/class_module.rb b/lib/rdoc/code_object/class_module.rb
index b6bed352a2..d7ee36f950 100644
--- a/lib/rdoc/code_object/class_module.rb
+++ b/lib/rdoc/code_object/class_module.rb
@@ -477,7 +477,12 @@ def merge(class_module)
document = document.merge other_document
@comment = RDoc::Comment.from_document(document)
- @comment_location = document
+
+ @comment_location = if document.parts.first.is_a?(RDoc::Markup::Document)
+ document.parts.map { |doc| [doc, doc.file] }
+ else
+ [[document, document.file]]
+ end
end
cm = class_module

166
rpm_test_helper.rb Normal file
View file

@ -0,0 +1,166 @@
require 'tmpdir'
require 'tempfile'
require 'fileutils'
# Available in Ruby upstream sources under tool/lib/envutil.rb
# Required for finding and setting up the built ruby binary.
require 'envutil'
module RPMTestHelper
def setup
@tmpdir = Dir.mktmpdir
@tempfiles = []
end
def teardown
@tempfiles.each do |file|
file.close
file.unlink
end
FileUtils.rmtree(@tmpdir)
end
GENERATOR_SCRIPT = ENV['GENERATOR_SCRIPT'].clone.freeze
if GENERATOR_SCRIPT.nil? || GENERATOR_SCRIPT == ''
raise "GENERATOR_SCRIPT is not specified." \
"Specify the ENV variable with absolute path to the generator."
end
Dependency = Struct.new('Dependency', :name, :requirements) do
def to_rpm_str
"rubygem(#{self.name})"
end
end
def make_gemspec(gem_info)
file = Tempfile.new('req_gemspec', @tmpdir)
# Fake gemspec with enough to pass most checks
# Rubygems uses to validate the format.
gemspec_contents = <<~EOF
# -*- encoding: utf-8 -*-
# stub: #{gem_info.name} #{gem_info.version} ruby lib
Gem::Specification.new do |s|
s.name = "#{gem_info.name}".freeze
s.version = "#{gem_info.version}"
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
s.require_paths = ["lib".freeze]
s.authors = ["John Doe".freeze]
s.bindir = "bin".freeze
s.date = "2023-12-15"
s.description = "Fake gemspec helper for testing Rubygem Generators".freeze
s.email = ["example@example.com".freeze]
s.files = ["LICENSE.txt".freeze, "lib/#{gem_info.name}.rb".freeze, "#{gem_info.name}.gemspec".freeze]
s.homepage = "https://pkgs.fedoraproject.org/rpms/ruby".freeze
s.licenses = ["MIT".freeze]
s.required_ruby_version = Gem::Requirement.new(">= 2.5.0".freeze)
s.rubygems_version = "3.3.5".freeze
s.summary = "Fake gemspec for testing Rubygem Generators".freeze
if s.respond_to? :specification_version then
s.specification_version = 4
end
if s.respond_to? :add_runtime_dependency then
#{gem_info.gemspec_runtime_dep_str}
else
#{gem_info.gemspec_dep_str}
end
end
EOF
file.write gemspec_contents
file.rewind
@tempfiles << file
file
end
# Caller is expected to close subprocess stdin via #close_write
# in order to let subprocess proceed if the process is reading
# from STDIN in a loop.
def rb_subprocess(*args)
args = [GENERATOR_SCRIPT] if args.empty?
ruby = EnvUtil.rubybin
f = IO.popen([ruby] + args, 'r+') #, external_encoding: external_encoding)
yield(f)
ensure
f.close unless !f || f.closed?
end
def run_generator_single_file(gem_info)
lines = []
gemspec_f = make_gemspec(gem_info)
rb_subprocess do |io|
io.write gemspec_f.path
io.close_write
lines = io.readlines
end
lines
end
def helper_rubygems_dependency
"ruby(rubygems)"
end
class GemInfo
attr_accessor :name, :version, :dependencies
def initialize(name: 'foo', version: '1.2.3', dependencies: [])
@name = name
@version = version
@dependencies = dependencies
end
def dependencies=(other)
raise ArgumentError, "#{self.class.name}##{__method__.to_s}: Expected array of `Dependency' elements" \
unless other.is_a?(Array) && other.all? { |elem| elem.respond_to?(:name) && elem.respond_to?(:requirements) }
@dependencies = other
end
def to_rpm_str
"rubygem(#{self.name})"
end
def gemspec_dep_str
return '' if self.dependencies.nil? || self.dependencies.empty?
@dependencies.inject("") do |memo, dep|
memo += if dep.requirements && !dep.requirements.empty?
%Q|s.add_dependency(%q<#{dep.name}>.freeze, #{handle_dep_requirements(dep.requirements)})|
else
%Q|s.add_dependency(%q<#{dep.name}>.freeze)|
end
memo += "\n"
end
end
def gemspec_runtime_dep_str
return '' if self.dependencies.nil? || self.dependencies.empty?
@dependencies.inject("") do |memo, dep|
memo += if dep.requirements && !dep.requirements.empty?
%Q|s.add_runtime_dependency(%q<#{dep.name}>.freeze, #{handle_dep_requirements(dep.requirements)})|
else
%Q|s.add_runtime_dependency(%q<#{dep.name}>.freeze)|
end
memo += "\n"
end
end
private
def handle_dep_requirements(reqs)
raise ArgumentError, "#{self.class.name}##{__method__.to_s}: Reqs must be an array." \
unless reqs.is_a? Array
raise ArgumentError, "#{self.class.name}##{__method__.to_s}: Reqs must not be empty for this method." \
if reqs.empty?
'[ "' + reqs.join('", "') + '" ]'
end
end
end

View file

@ -1,188 +0,0 @@
From b0a875862d14244ca41cd1e1e9090f87757aaeb9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Mon, 5 Sep 2011 13:10:47 +0200
Subject: [PATCH] Added configuration flags for site and vendor architecture
specific directories.
---
Makefile.in | 3 +++
configure.in | 40 ++++++++++++++++++++++++++++++++++++++++
tool/mkconfig.rb | 8 ++++++--
version.c | 4 ++++
4 files changed, 53 insertions(+), 2 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index bcdaf5f..f57e4c4 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -34,6 +34,9 @@ datadir = @datadir@
archdir = @archdir@
sitearch = @sitearch@
sitedir = @sitedir@
+sitearchdir= @sitearchdir@
+vendordir = @vendordir@
+vendorarchdir = @vendorarchdir@
ruby_version = @ruby_version@
TESTUI = console
diff --git a/configure.in b/configure.in
index 83e5d76..31532bd 100644
--- a/configure.in
+++ b/configure.in
@@ -2811,6 +2811,15 @@ until SITE_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${SITE_DIR}"; do
dir="${SITE_DIR}"
done
+AC_ARG_WITH(sitearchdir,
+ AS_HELP_STRING([--with-sitearchdir=DIR], [site libraries in DIR [[RUBY_LIB_PREFIX/site_ruby]]]),
+ [sitearchdir=$withval],
+ [sitearchdir='${rubylibprefix}/site_ruby/${arch}'])
+dir="${sitearchdir}"
+until SITEARCH_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${SITEARCH_DIR}"; do
+ dir="${SITEARCH_DIR}"
+done
+
AC_ARG_WITH(vendordir,
AS_HELP_STRING([--with-vendordir=DIR], [vendor libraries in DIR [[RUBY_LIB_PREFIX/vendor_ruby]]]),
[vendordir=$withval],
@@ -2820,19 +2829,32 @@ until VENDOR_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${VENDOR_DIR}"; do
dir="${VENDOR_DIR}"
done
+AC_ARG_WITH(vendorarchdir,
+ AS_HELP_STRING([--with-vendorarchdir=DIR], [vendor libraries in DIR [[RUBY_LIB_PREFIX/vendor_ruby]]]),
+ [vendorarchdir=$withval],
+ [vendorarchdir='${rubylibprefix}/vendor_ruby/${arch}'])
+dir="${vendorarchdir}"
+until VENDORARCH_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${VENDORARCH_DIR}"; do
+ dir="${VENDORARCH_DIR}"
+done
+
if test "${LOAD_RELATIVE+set}"; then
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
RUBY_EXEC_PREFIX=""
RUBY_LIB_PREFIX="`eval echo "$RUBY_LIB_PREFIX" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
RUBY_ARCH_LIB_PATH="`eval echo "$ARCH_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
RUBY_SITE_LIB_PATH="`eval echo "$SITE_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
+ RUBY_SITE_ARCHLIB_PATH="`eval echo "$SITEARCH_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
RUBY_VENDOR_LIB_PATH="`eval echo "$VENDOR_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
+ RUBY_VENDOR_ARCHLIB_PATH="`eval echo "$VENDORARCH_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
else
RUBY_EXEC_PREFIX="`eval echo \\"$exec_prefix/\\" | sed 's|^NONE/|'"$prefix"'/|;s|/$||'`"
RUBY_LIB_PREFIX="`eval echo \\"$RUBY_LIB_PREFIX\\" | sed 's|^NONE/|'"$prefix"'/|'`"
RUBY_ARCH_LIB_PATH="`eval echo \\"$ARCH_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
RUBY_SITE_LIB_PATH="`eval echo \\"$SITE_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
+ RUBY_SITE_ARCHLIB_PATH="`eval echo \\"$SITEARCH_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
RUBY_VENDOR_LIB_PATH="`eval echo \\"$VENDOR_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
+ RUBY_VENDOR_ARCHLIB_PATH="`eval echo \\"$VENDORARCH_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
fi
pat=`echo "$RUBY_LIB_PREFIX/" | tr -c '\012' .`'\(.*\)'
@@ -2850,6 +2872,13 @@ AS_CASE(["$RUBY_SITE_LIB_PATH"],
[
RUBY_SITE_LIB_PATH="\"${RUBY_SITE_LIB_PATH}\""
])
+AS_CASE(["$RUBY_SITE_ARCHLIB_PATH"],
+ ["$RUBY_LIB_PREFIX/"*], [
+ RUBY_SITE_ARCHLIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_SITE_ARCHLIB_PATH\" : \"$pat\"`"'"'
+ ],
+ [
+ RUBY_SITE_ARCHLIB_PATH="\"${RUBY_SITE_ARCHLIB_PATH}\""
+ ])
AS_CASE(["$RUBY_VENDOR_LIB_PATH"],
["$RUBY_LIB_PREFIX/"*], [
RUBY_VENDOR_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_VENDOR_LIB_PATH\" : \"$pat\"`"'"'
@@ -2857,6 +2886,13 @@ AS_CASE(["$RUBY_VENDOR_LIB_PATH"],
[
RUBY_VENDOR_LIB_PATH="\"${RUBY_VENDOR_LIB_PATH}\""
])
+AS_CASE(["$RUBY_VENDOR_ARCHLIB_PATH"],
+ ["$RUBY_LIB_PREFIX/"*], [
+ RUBY_VENDOR_ARCHLIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_VENDOR_ARCHLIB_PATH\" : \"$pat\"`"'"'
+ ],
+ [
+ RUBY_VENDOR_ARCHLIB_PATH="\"${RUBY_VENDOR_ARCHLIB_PATH}\""
+ ])
pat=`echo "$RUBY_EXEC_PREFIX/" | tr -c '\012' .`'\(.*\)'
AS_CASE(["$RUBY_LIB_PREFIX"],
["$RUBY_EXEC_PREFIX/"*], [
@@ -2878,19 +2914,23 @@ if test "x$SITE_DIR" = xno; then
AC_DEFINE(NO_RUBY_SITE_LIB)
else
AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, ${RUBY_SITE_LIB_PATH})
+ AC_DEFINE_UNQUOTED(RUBY_SITE_ARCHLIB, ${RUBY_SITE_ARCHLIB_PATH})
fi
if test "x$VENDOR_DIR" = xno; then
AC_DEFINE(NO_RUBY_VENDOR_LIB)
else
AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB, ${RUBY_VENDOR_LIB_PATH})
+ AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCHLIB, ${RUBY_VENDOR_ARCHLIB_PATH})
fi
AC_SUBST(arch)dnl
AC_SUBST(sitearch)dnl
AC_SUBST(ruby_version)dnl
AC_SUBST(archdir)dnl
AC_SUBST(sitedir)dnl
+AC_SUBST(sitearchdir)dnl
AC_SUBST(vendordir)dnl
+AC_SUBST(vendorarchdir)dnl
configure_args=$ac_configure_args
AC_SUBST(configure_args)dnl
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
index b707c4b..6230720 100755
--- a/tool/mkconfig.rb
+++ b/tool/mkconfig.rb
@@ -44,6 +44,8 @@ v_others = []
continued_line = nil
path_version = "/$(ruby_version)"
archdir_override = "$(vendorlibdir)/$(sitearch)"
+sitearchdir_override = "$(sitelibdir)/$(sitearch)"
+vendorarchdir_override = "$(vendorlibdir)/$(sitearch)"
File.foreach "config.status" do |line|
next if /^#/ =~ line
name = nil
@@ -79,6 +81,8 @@ File.foreach "config.status" do |line|
when /^RUBY_SO_NAME$/; next if $so_name
when /^arch$/; if val.empty? then val = arch else arch = val end
when /^archdir$/; archdir_override = val; next
+ when /^sitearchdir$/; sitearchdir_override = val; next
+ when /^vendorarchdir$/; vendorarchdir_override = val; next
when /^sitearch/; val = '$(arch)' if val.empty?
end
case val
@@ -213,11 +217,11 @@ print <<EOS
EOS
print <<EOS unless v_disabled["sitedir"]
CONFIG["sitelibdir"] = "$(sitedir)#{path_version}"
- CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
+ CONFIG["sitearchdir"] = "#{sitearchdir_override}"
EOS
print <<EOS unless v_disabled["vendordir"]
CONFIG["vendorlibdir"] = "$(vendordir)#{path_version}"
- CONFIG["vendorarchdir"] = "$(vendorlibdir)/$(sitearch)"
+ CONFIG["vendorarchdir"] = "#{vendorarchdir_override}"
EOS
print <<EOS
CONFIG["topdir"] = File.dirname(__FILE__)
diff --git a/version.c b/version.c
index 59d4e5e..2558aa0 100644
--- a/version.c
+++ b/version.c
@@ -50,8 +50,12 @@
#ifndef RUBY_ARCHLIB
#define RUBY_ARCHLIB RUBY_LIB "/"RUBY_ARCH
#endif
+#ifndef RUBY_SITE_ARCHLIB
#define RUBY_SITE_ARCHLIB RUBY_SITE_LIB2 "/"RUBY_SITEARCH
+#endif
+#ifndef RUBY_VENDOR_ARCHLIB
#define RUBY_VENDOR_ARCHLIB RUBY_VENDOR_LIB2 "/"RUBY_SITEARCH
+#endif
#ifdef RUBY_THINARCH
#define RUBY_THIN_ARCHLIB RUBY_LIB "/"RUBY_THINARCH
#define RUBY_SITE_THIN_ARCHLIB RUBY_SITE_LIB2 "/"RUBY_THINARCH
--
1.7.6.1

View file

@ -1,11 +0,0 @@
--- a/configure.in.orig 2011-10-18 08:56:21.587594685 +0200
+++ b/configure.in 2011-10-18 08:56:59.751593321 +0200
@@ -2935,6 +2935,8 @@
configure_args=$ac_configure_args
AC_SUBST(configure_args)dnl
+target_cpu=`echo $target_cpu | sed s/i.86/i386/`
+
if test "${universal_binary-no}" = yes ; then
arch="universal-${target_os}"
AC_CACHE_CHECK(whether __ARCHITECTURE__ is available, rb_cv_architecture_available,

View file

@ -1,132 +0,0 @@
From df4253a5b79b63f16f215f2c19f1b9666c4ca01e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Thu, 8 Sep 2011 15:30:05 +0200
Subject: [PATCH] Add configuration arch specific dir flag.
---
Makefile.in | 1 +
configure.in | 20 ++++++++++++++++++++
tool/mkconfig.rb | 4 +++-
version.c | 2 ++
4 files changed, 26 insertions(+), 1 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index bcdaf5f..d61b2ee 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -31,6 +31,7 @@ libexecdir = @libexecdir@
datarootdir = @datarootdir@
datadir = @datadir@
arch = @arch@
+archdir = @archdir@
sitearch = @sitearch@
sitedir = @sitedir@
ruby_version = @ruby_version@
diff --git a/configure.in b/configure.in
index 83e5d76..e6dc38c 100644
--- a/configure.in
+++ b/configure.in
@@ -2793,6 +2793,15 @@ else
RUBY_LIB_VERSION="\"${ruby_version}\""
fi
+AC_ARG_WITH(archdir,
+ AS_HELP_STRING([--with-archdir=DIR], [architecture specific ruby libraries [[LIBDIR/RUBY_BASE_NAME/ARCH]]]),
+ [archdir=$withval],
+ [archdir='${rubylibprefix}/${arch}'])
+dir="${archdir}"
+until ARCH_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${ARCH_DIR}"; do
+ dir="${ARCH_DIR}"
+done
+
AC_ARG_WITH(sitedir,
AS_HELP_STRING([--with-sitedir=DIR], [site libraries in DIR [[RUBY_LIB_PREFIX/site_ruby]]]),
[sitedir=$withval],
@@ -2815,16 +2824,25 @@ if test "${LOAD_RELATIVE+set}"; then
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
RUBY_EXEC_PREFIX=""
RUBY_LIB_PREFIX="`eval echo "$RUBY_LIB_PREFIX" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
+ RUBY_ARCH_LIB_PATH="`eval echo "$ARCH_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
RUBY_SITE_LIB_PATH="`eval echo "$SITE_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
RUBY_VENDOR_LIB_PATH="`eval echo "$VENDOR_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
else
RUBY_EXEC_PREFIX="`eval echo \\"$exec_prefix/\\" | sed 's|^NONE/|'"$prefix"'/|;s|/$||'`"
RUBY_LIB_PREFIX="`eval echo \\"$RUBY_LIB_PREFIX\\" | sed 's|^NONE/|'"$prefix"'/|'`"
+ RUBY_ARCH_LIB_PATH="`eval echo \\"$ARCH_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
RUBY_SITE_LIB_PATH="`eval echo \\"$SITE_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
RUBY_VENDOR_LIB_PATH="`eval echo \\"$VENDOR_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
fi
pat=`echo "$RUBY_LIB_PREFIX/" | tr -c '\012' .`'\(.*\)'
+AS_CASE(["$RUBY_ARCH_LIB_PATH"],
+ ["$RUBY_LIB_PREFIX/"*], [
+ RUBY_ARCH_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_ARCH_LIB_PATH\" : \"$pat\"`"'"'
+ ],
+ [
+ RUBY_ARCH_LIB_PATH="\"${RUBY_ARCH_LIB_PATH}\""
+ ])
AS_CASE(["$RUBY_SITE_LIB_PATH"],
["$RUBY_LIB_PREFIX/"*], [
RUBY_SITE_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_SITE_LIB_PATH\" : \"$pat\"`"'"'
@@ -2855,6 +2873,7 @@ else
fi
AC_DEFINE_UNQUOTED(RUBY_EXEC_PREFIX, "${RUBY_EXEC_PREFIX}")
AC_DEFINE_UNQUOTED(RUBY_LIB_PREFIX, ${RUBY_LIB_PREFIX})
+AC_DEFINE_UNQUOTED(RUBY_ARCHLIB, ${RUBY_ARCH_LIB_PATH})
if test "x$SITE_DIR" = xno; then
AC_DEFINE(NO_RUBY_SITE_LIB)
else
@@ -2869,6 +2888,7 @@ fi
AC_SUBST(arch)dnl
AC_SUBST(sitearch)dnl
AC_SUBST(ruby_version)dnl
+AC_SUBST(archdir)dnl
AC_SUBST(sitedir)dnl
AC_SUBST(vendordir)dnl
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
index b707c4b..9780ef2 100755
--- a/tool/mkconfig.rb
+++ b/tool/mkconfig.rb
@@ -43,6 +43,7 @@ v_others = []
continued_name = nil
continued_line = nil
path_version = "/$(ruby_version)"
+archdir_override = "$(vendorlibdir)/$(sitearch)"
File.foreach "config.status" do |line|
next if /^#/ =~ line
name = nil
@@ -77,6 +78,7 @@ File.foreach "config.status" do |line|
when /^RUBY_INSTALL_NAME$/; next if $install_name
when /^RUBY_SO_NAME$/; next if $so_name
when /^arch$/; if val.empty? then val = arch else arch = val end
+ when /^archdir$/; archdir_override = val; next
when /^sitearch/; val = '$(arch)' if val.empty?
end
case val
@@ -207,7 +209,7 @@ print(*v_fast)
print(*v_others)
print <<EOS
CONFIG["rubylibdir"] = "$(rubylibprefix)#{path_version}"
- CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
+ CONFIG["archdir"] = "#{archdir_override}"
EOS
print <<EOS unless v_disabled["sitedir"]
CONFIG["sitelibdir"] = "$(sitedir)#{path_version}"
diff --git a/version.c b/version.c
index 59d4e5e..915a0a2 100644
--- a/version.c
+++ b/version.c
@@ -47,7 +47,9 @@
#define RUBY_SITE_LIB2 RUBY_SITE_LIB "/"RUBY_LIB_VERSION
#define RUBY_VENDOR_LIB2 RUBY_VENDOR_LIB "/"RUBY_LIB_VERSION
#endif
+#ifndef RUBY_ARCHLIB
#define RUBY_ARCHLIB RUBY_LIB "/"RUBY_ARCH
+#endif
#define RUBY_SITE_ARCHLIB RUBY_SITE_LIB2 "/"RUBY_SITEARCH
#define RUBY_VENDOR_ARCHLIB RUBY_VENDOR_LIB2 "/"RUBY_SITEARCH
#ifdef RUBY_THINARCH
--
1.7.6.1

View file

@ -1,31 +0,0 @@
--- ruby-1.9.3-p0/test/ruby/test_bignum.rb.orig 2011-11-10 09:52:59.101925465 +0100
+++ ruby-1.9.3-p0/test/ruby/test_bignum.rb 2011-11-10 09:54:14.580798826 +0100
@@ -378,7 +378,7 @@
assert_equal(true, (2**32).even?)
end
- def interrupt
+ def assert_interrupt
time = Time.now
start_flag = false
end_flag = false
@@ -387,14 +387,16 @@
yield
end_flag = true
end
- sleep 1
+ Thread.pass until start_flag
thread.raise
thread.join rescue nil
- start_flag && !end_flag && Time.now - time < 10
+ time = Time.now - time
+ assert_equal([true, false], [start_flag, end_flag])
+ assert_operator(time, :<, 10)
end
def test_interrupt
- assert(interrupt { (65536 ** 65536).to_s })
+ assert_interrupt {(65536 ** 65536).to_s}
end
def test_too_big_to_s

View file

@ -1,97 +0,0 @@
From 279a693ce4ef3a887ce8d4fa59e0f2616a14d91a 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.in | 8 ++++++++
tool/mkconfig.rb | 1 +
tool/rbinstall.rb | 9 +++++++++
version.c | 4 ++++
4 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/configure.in b/configure.in
index b1bc951..91c5d0d 100644
--- a/configure.in
+++ b/configure.in
@@ -2838,6 +2838,13 @@ until VENDOR_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${VENDOR_DIR}"; do
dir="${VENDORARCH_DIR}"
done
+AC_ARG_WITH(rubygemsdir,
+ AS_HELP_STRING([--with-rubygemsdir=DIR], [custom rubygems directory]),
+ [rubygemsdir=$withval])
+if test "$rubygemsdir" != ""; then
+ AC_DEFINE_UNQUOTED(RUBYGEMS_DIR,"$rubygemsdir")
+fi
+
if test "${LOAD_RELATIVE+set}"; then
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
RUBY_EXEC_PREFIX=""
@@ -2931,6 +2938,7 @@ AC_SUBST(sitearch)dnl
AC_SUBST(sitearchdir)dnl
AC_SUBST(vendordir)dnl
AC_SUBST(vendorarchdir)dnl
+AC_SUBST(rubygemsdir)dnl
configure_args=$ac_configure_args
AC_SUBST(configure_args)dnl
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
index b707c4b..9fecbfb 100755
--- a/tool/mkconfig.rb
+++ b/tool/mkconfig.rb
@@ -84,6 +84,7 @@ File.foreach "config.status" do |line|
when /^sitearchdir$/; sitearchdir_override = val; next
when /^vendorarchdir$/; vendorarchdir_override = val; next
when /^sitearch/; val = '$(arch)' if val.empty?
+ when /^rubygemsdir/; next if val.empty?
end
case val
when /^\$\(ac_\w+\)$/; next
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index 6bfc73e..31dc446 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -300,6 +300,7 @@ sitelibdir = CONFIG["sitelibdir"]
sitearchlibdir = CONFIG["sitearchdir"]
vendorlibdir = CONFIG["vendorlibdir"]
vendorarchlibdir = CONFIG["vendorarchdir"]
+rubygemsdir = CONFIG["rubygemsdir"]
mandir = CONFIG["mandir"]
capidir = CONFIG["docdir"]
configure_args = Shellwords.shellwords(CONFIG["configure_args"])
@@ -487,7 +488,15 @@ end
install?(:local, :comm, :lib) do
prepare "library scripts", rubylibdir
noinst = %w[README* *.txt *.rdoc]
+ noinst += %w[*ubygems.rb rubygems/ datadir.rb] if rubygemsdir
install_recursive(File.join(srcdir, "lib"), rubylibdir, :no_install => noinst, :mode => $data_mode)
+ if rubygemsdir
+ noinst = %w[obsolete.rb]
+ install_recursive(File.join(srcdir, "lib", "rubygems"), File.join(rubygemsdir, "rubygems"), :mode => $data_mode)
+ install_recursive(File.join(srcdir, "lib", "rbconfig"), File.join(rubygemsdir, "rbconfig"), :no_install => noinst, :mode => $data_mode)
+ install(File.join(srcdir, "lib", "ubygems.rb"), File.join(rubygemsdir, "ubygems.rb"), :mode => $data_mode)
+ install(File.join(srcdir, "lib", "rubygems.rb"), File.join(rubygemsdir, "rubygems.rb"), :mode => $data_mode)
+ end
end
install?(:local, :arch, :lib) do
diff --git a/version.c b/version.c
index 59d4e5e..12ba7e9 100644
--- a/version.c
+++ b/version.c
@@ -103,6 +103,10 @@ const char ruby_initial_load_paths[] =
#endif
#endif
+#ifdef RUBYGEMS_DIR
+ RUBYGEMS_DIR "\0"
+#endif
+
RUBY_LIB "\0"
#ifdef RUBY_THIN_ARCHLIB
RUBY_THIN_ARCHLIB "\0"
--
1.7.7

View file

@ -1,149 +0,0 @@
From fa1a50ad10814f724b8713865dc222724cb955ab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Thu, 25 Aug 2011 14:33:51 +0200
Subject: [PATCH] Allow to disable versioned paths.
---
configure.in | 11 +++++++++++
tool/mkconfig.rb | 9 ++++++---
version.c | 10 ++++++++++
3 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/configure.in b/configure.in
index e742e74..86cb68f 100644
--- a/configure.in
+++ b/configure.in
@@ -2963,6 +2963,17 @@ else
fi
AC_SUBST(USE_RUBYGEMS)
+AC_ARG_ENABLE(versioned-paths,
+ AS_HELP_STRING([--disable-versioned-paths], [disable paths with version number]),
+ [enable_versioned_paths="$enableval"], [enable_versioned_paths=yes])
+if test x"$enable_versioned_paths" = xno; then
+ AC_DEFINE(DISABLE_VERSIONED_PATHS, 1)
+ USE_VERSIONED_PATHS=NO
+else
+ USE_VERSIONED_PATHS=YES
+fi
+AC_SUBST(USE_VERSIONED_PATHS)
+
arch_hdrdir="${EXTOUT}/include/${arch}/ruby"
AS_MKDIR_P("${arch_hdrdir}")
config_h="${arch_hdrdir}/config.h"
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
index a2221f0..47d8c8f 100755
--- a/tool/mkconfig.rb
+++ b/tool/mkconfig.rb
@@ -42,6 +42,7 @@ v_others = []
vars = {}
continued_name = nil
continued_line = nil
+path_version = "/$(ruby_version)"
File.foreach "config.status" do |line|
next if /^#/ =~ line
name = nil
@@ -138,6 +139,8 @@ File.foreach "config.status" do |line|
case name
when "ruby_version"
version = val[/\A"(.*)"\z/, 1]
+ when /^USE_VERSIONED_PATHS$/
+ path_version = nil if /NO/ =~ val
end
end
# break if /^CEOF/
@@ -203,15 +206,15 @@ end
print(*v_fast)
print(*v_others)
print <<EOS
- CONFIG["rubylibdir"] = "$(rubylibprefix)/$(ruby_version)"
+ CONFIG["rubylibdir"] = "$(rubylibprefix)#{path_version}"
CONFIG["archdir"] = "$(rubylibdir)/$(arch)"
EOS
print <<EOS unless v_disabled["sitedir"]
- CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)"
+ CONFIG["sitelibdir"] = "$(sitedir)#{path_version}"
CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)"
EOS
print <<EOS unless v_disabled["vendordir"]
- CONFIG["vendorlibdir"] = "$(vendordir)/$(ruby_version)"
+ CONFIG["vendorlibdir"] = "$(vendordir)#{path_version}"
CONFIG["vendorarchdir"] = "$(vendorlibdir)/$(sitearch)"
EOS
print <<EOS
diff --git a/version.c b/version.c
index 59d4e5e..641dc33 100644
--- a/version.c
+++ b/version.c
@@ -38,9 +38,15 @@
#define RUBY_VENDOR_LIB RUBY_LIB_PREFIX"/vendor_ruby"
#endif
+#ifdef DISABLE_VERSIONED_PATHS
+#define RUBY_LIB RUBY_LIB_PREFIX
+#define RUBY_SITE_LIB2 RUBY_SITE_LIB
+#define RUBY_VENDOR_LIB2 RUBY_VENDOR_LIB
+#else
#define RUBY_LIB RUBY_LIB_PREFIX "/"RUBY_LIB_VERSION
#define RUBY_SITE_LIB2 RUBY_SITE_LIB "/"RUBY_LIB_VERSION
#define RUBY_VENDOR_LIB2 RUBY_VENDOR_LIB "/"RUBY_LIB_VERSION
+#endif
#define RUBY_ARCHLIB RUBY_LIB "/"RUBY_ARCH
#define RUBY_SITE_ARCHLIB RUBY_SITE_LIB2 "/"RUBY_SITEARCH
#define RUBY_VENDOR_ARCHLIB RUBY_VENDOR_LIB2 "/"RUBY_SITEARCH
@@ -75,8 +81,10 @@ const char ruby_initial_load_paths[] =
RUBY_SITE_THIN_ARCHLIB "\0"
#endif
RUBY_SITE_ARCHLIB "\0"
+#ifndef DISABLE_VERSIONED_PATHS
RUBY_SITE_LIB "\0"
#endif
+#endif
#ifndef NO_RUBY_VENDOR_LIB
RUBY_VENDOR_LIB2 "\0"
@@ -84,8 +92,10 @@ const char ruby_initial_load_paths[] =
RUBY_VENDOR_THIN_ARCHLIB "\0"
#endif
RUBY_VENDOR_ARCHLIB "\0"
+#ifndef DISABLE_VERSIONED_PATHS
RUBY_VENDOR_LIB "\0"
#endif
+#endif
RUBY_LIB "\0"
#ifdef RUBY_THIN_ARCHLIB
--
1.7.7.3
diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb
index a3c65bf..0575730 100644
--- a/lib/rdoc/ri/paths.rb
+++ b/lib/rdoc/ri/paths.rb
@@ -11,9 +11,9 @@ module RDoc::RI::Paths
version = RbConfig::CONFIG['ruby_version']
base = if RbConfig::CONFIG.key? 'ridir' then
- File.join RbConfig::CONFIG['ridir'], version
+ File.join [RbConfig::CONFIG['ridir'], RbConfig::CONFIG['USE_VERSIONED_PATHS'] == 'YES' ? version : nil].compact
else
- File.join RbConfig::CONFIG['datadir'], 'ri', version
+ File.join [RbConfig::CONFIG['datadir'], 'ri', RbConfig::CONFIG['USE_VERSIONED_PATHS'] == 'YES' ? version : nil].compact
end
SYSDIR = File.join base, "system"
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index cec8c9f..fed14d2 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -379,7 +379,7 @@ end
install?(:doc, :rdoc) do
if $rdocdir
- ridatadir = File.join(CONFIG['ridir'], CONFIG['ruby_version'], "system")
+ ridatadir = File.join([CONFIG['ridir'], RbConfig::CONFIG['USE_VERSIONED_PATHS'] == 'YES' ? version : nil, "system"].compact)
prepare "rdoc", ridatadir
install_recursive($rdocdir, ridatadir, :mode => $data_mode)
end
--
1.7.6

View file

@ -1,12 +0,0 @@
diff -up ruby-1.9.3-p0/ext/tk/extconf.rb.orig ruby-1.9.3-p0/ext/tk/extconf.rb
--- ruby-1.9.3-p0/ext/tk/extconf.rb.orig 2011-06-29 16:11:19.000000000 +0200
+++ ruby-1.9.3-p0/ext/tk/extconf.rb 2011-10-18 16:15:59.406299659 +0200
@@ -114,7 +114,7 @@ def is_macosx?
end
def maybe_64bit?
- /64|universal/ =~ RUBY_PLATFORM
+ /64|universal|s390x/ =~ RUBY_PLATFORM
end
def check_tcltk_version(version)

View file

@ -1,11 +0,0 @@
--- ruby-1.9.3-p0/lib/mkmf.rb.debug 2011-08-11 15:07:37.000000000 +0900
+++ ruby-1.9.3-p0/lib/mkmf.rb 2012-01-29 21:34:17.000000000 +0900
@@ -1638,7 +1638,7 @@
SHELL = /bin/sh
# V=0 quiet, V=1 verbose. other values don't work.
-V = 0
+V = 1
Q1 = $(V:1=)
Q = $(Q1:0=@)
n=$(NULLCMD)

View file

@ -1,49 +0,0 @@
--- ruby-1.9.3-p327/test/webrick/test_cgi.rb.koji 2012-08-28 00:40:30.000000000 +0900
+++ ruby-1.9.3-p327/test/webrick/test_cgi.rb 2012-11-10 16:33:36.000000000 +0900
@@ -28,6 +28,15 @@
end
def test_cgi
+'''
+On koji:
+test_cgi(TestWEBrickCGI) [/builddir/build/BUILD/ruby-1.9.3-p327/test/webrick/test_cgi.rb:34]:
+....
+....
+<"/webrick.cgi"> expected but was
+<"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">\n<HTML>\n <HEAD><TITLE>Internal Server Error</TITLE></HEAD>\n <BODY>\n <H1>Internal Server Error</H1>\n Broken pipe\n <HR>\n <ADDRESS>\n WEBrick/1.3.1 (Ruby/1.9.3/2012-11-10) OpenSSL/1.0.1c at\n 127.0.0.1:58617\n </ADDRESS>\n </BODY>\n</HTML>\n">.
+'''
+ return # Skip on koji
start_cgi_server{|server, addr, port, log|
http = Net::HTTP.new(addr, port)
req = Net::HTTP::Get.new("/webrick.cgi")
@@ -84,6 +93,13 @@
end
def test_bad_request
+'''
+On koji:
+test_bad_request(TestWEBrickCGI) [/builddir/build/BUILD/ruby-1.9.3-p327/test/webrick/test_cgi.rb:96]:
+....
+Expected /\AHTTP\/\d.\d 400 Bad Request/ to match "HTTP/1.1 500 Internal Server Error \r\nContent-Type: text/html; charset=ISO-8859-1\r\nServer: WEBrick/1.3.1 (Ruby/1.9.3/2012-11-10) OpenSSL/1.0.1c\r\nDate: Sat, 10 Nov 2012 07:17:08 GMT\r\nContent-Length: 307\r\nConnection: close\r\n\r\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">\n<HTML>\n <HEAD><TITLE>Internal Server Error</TITLE></HEAD>\n <BODY>\n <H1>Internal Server Error</H1>\n Broken pipe\n <HR>\n <ADDRESS>\n WEBrick/1.3.1 (Ruby/1.9.3/2012-11-10) OpenSSL/1.0.1c at\n localhost:41188\n </ADDRESS>\n </BODY>\n</HTML>\n".
+'''
+ return # Skip on koji
start_cgi_server{|server, addr, port, log|
sock = TCPSocket.new(addr, port)
begin
--- ruby-1.9.3-p327/test/webrick/test_filehandler.rb.koji 2012-08-28 00:40:30.000000000 +0900
+++ ruby-1.9.3-p327/test/webrick/test_filehandler.rb 2012-11-10 16:33:02.000000000 +0900
@@ -244,6 +244,14 @@
end
def test_script_disclosure
+'''
+On koji:
+test_script_disclosure(WEBrick::TestFileHandler) [/builddir/build/BUILD/ruby-1.9.3-p327/test/webrick/test_filehandler.rb:265]:
+....
+<"200"> expected but was
+<"500">.
+'''
+ return # Skip on koji
config = {
:CGIInterpreter => TestWEBrick::RubyBin,
:DocumentRoot => File.dirname(__FILE__),

View file

@ -1,76 +0,0 @@
--- ruby-1.9.3-p0/lib/rubygems/uninstaller.rb.orig 2011-10-31 10:22:36.321579483 +0100
+++ ruby-1.9.3-p0/lib/rubygems/uninstaller.rb 2011-10-31 10:34:25.563626119 +0100
@@ -51,15 +51,14 @@
@bin_dir = options[:bin_dir]
@format_executable = options[:format_executable]
+ if options[:force]
+ @force_all = true
+ @force_ignore = true
+ end
+
# only add user directory if install_dir is not set
@user_install = false
@user_install = options[:user_install] unless options[:install_dir]
-
- if @user_install then
- Gem.use_paths Gem.user_dir, @gem_home
- else
- Gem.use_paths @gem_home
- end
end
##
@@ -69,10 +68,24 @@
def uninstall
list = Gem::Specification.find_all_by_name(@gem, @version)
+ list, other_repo_specs = list.partition do |spec|
+ @gem_home == spec.base_dir or
+ (@user_install and spec.base_dir == Gem.user_dir)
+ end
+
if list.empty? then
- raise Gem::InstallError, "gem #{@gem.inspect} is not installed"
+ raise Gem::InstallError, "gem #{@gem.inspect} is not installed" if
+ other_repo_specs.empty?
+
+ other_repos = other_repo_specs.map { |spec| spec.base_dir }.uniq
+
+ message = ["#{@gem} is not installed in GEM_HOME, try:"]
+ message.concat other_repos.map { |repo|
+ "\tgem uninstall -i #{repo} #{@gem}"
+ }
- elsif list.size > 1 and @force_all then
+ raise Gem::InstallError, message.join("\n")
+ elsif @force_all then
remove_all list
elsif list.size > 1 then
@@ -250,12 +263,10 @@
msg << "\t#{spec.full_name}"
spec.dependent_gems.each do |dep_spec, dep, satlist|
- msg <<
- ("#{dep_spec.name}-#{dep_spec.version} depends on " +
- "[#{dep.name} (#{dep.requirement})]")
+ msg << "#{dep_spec.name}-#{dep_spec.version} depends on #{dep}"
end
- msg << 'If you remove this gems, one or more dependencies will not be met.'
+ msg << 'If you remove this gem, one or more dependencies will not be met.'
msg << 'Continue with Uninstall?'
return ask_yes_no(msg.join("\n"), true)
end
--- ruby-1.9.3-p0/test/rubygems/test_gem_uninstaller.rb.orig 2011-11-03 08:58:31.411272176 +0100
+++ ruby-1.9.3-p0/test/rubygems/test_gem_uninstaller.rb 2011-11-03 08:58:43.010272351 +0100
@@ -225,7 +225,7 @@
uninstaller = Gem::Uninstaller.new('a')
- use_ui Gem::MockGemUi.new("2\n") do
+ use_ui Gem::MockGemUi.new("2\ny\n") do
uninstaller.uninstall
end

View file

@ -1,24 +0,0 @@
diff --git a/test/webrick/test_cgi.rb b/test/webrick/test_cgi.rb
index 1185316..0ef1b37 100644
--- a/test/webrick/test_cgi.rb
+++ b/test/webrick/test_cgi.rb
@@ -14,6 +14,7 @@ class TestWEBrickCGI < Test::Unit::TestCase
def req.meta_vars
meta = super
meta["RUBYLIB"] = $:.join(File::PATH_SEPARATOR)
+ meta[RbConfig::CONFIG['LIBPATHENV']] = ENV[RbConfig::CONFIG['LIBPATHENV']]
return meta
end
},
diff --git a/test/webrick/test_filehandler.rb b/test/webrick/test_filehandler.rb
index bcdb3df..f78ba5c 100644
--- a/test/webrick/test_filehandler.rb
+++ b/test/webrick/test_filehandler.rb
@@ -252,6 +252,7 @@ class WEBrick::TestFileHandler < Test::Unit::TestCase
def req.meta_vars
meta = super
meta["RUBYLIB"] = $:.join(File::PATH_SEPARATOR)
+ meta[RbConfig::CONFIG['LIBPATHENV']] = ENV[RbConfig::CONFIG['LIBPATHENV']]
return meta
end
},

View file

@ -1,35 +0,0 @@
From bf4959bc763167b2245a5f4c699fcb72afead5a5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Fri, 18 Jan 2013 15:51:49 +0100
Subject: [PATCH] Expand ruby.pc variable by configuration process.
---
template/ruby.pc.in | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/template/ruby.pc.in b/template/ruby.pc.in
index 2d6716c..25e42f3 100644
--- a/template/ruby.pc.in
+++ b/template/ruby.pc.in
@@ -25,12 +25,12 @@ LIBS=@LIBS@
DLDFLAGS=@DLDFLAGS@
ruby=${bindir}/${RUBY_INSTALL_NAME}@EXEEXT@
rubylibprefix=@rubylibprefix@
-rubylibdir=${rubylibprefix}/${ruby_version}
-vendordir=${rubylibprefix}/vendor_ruby
-sitedir=${rubylibprefix}/site_ruby
-rubyarchdir=${rubylibdir}/${arch}
-vendorarchdir=${vendordir}/${sitearch}
-sitearchdir=${sitedir}/${sitearch}
+rubylibdir=@rubylibprefix@
+vendordir=@vendordir@
+sitedir=@sitedir@
+rubyarchdir=@archdir@
+vendorarchdir=@vendorarchdir@
+sitearchdir=@sitearchdir@
rubyhdrdir=@rubyhdrdir@
vendorhdrdir=@vendorhdrdir@
sitehdrdir=@sitehdrdir@
--
1.8.0.2

View file

@ -0,0 +1,25 @@
From e1293f665128b0d9c5bfa0b5beeab4afebf07e6a 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 a64358fada..b3bdfad1eb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3556,6 +3556,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}'

View file

@ -0,0 +1,77 @@
From 6062f4976c5b51f8b952b9f6745175be7b1c5ff9 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 2bc5153141..a64358fada 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4472,7 +4472,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 b8969e6998..bbfd4daa78 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 db74115730..2b01796abf 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$/

View file

@ -0,0 +1,22 @@
From 9e70f6e4b8771965a30ecfb6d1c6015df350ca55 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 b3bdfad1eb..411322a27f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4536,6 +4536,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], [

View file

@ -0,0 +1,94 @@
From c7952996ac9738a14bea0a1a971fea13460a6c94 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 411322a27f..b5f842a512 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4508,6 +4508,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=''
@@ -4532,6 +4536,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 bbfd4daa78..69677a9297 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 9ba2bd6de5..4ec4ce9353 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 a9e6365b27..7117e65e82 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -393,6 +393,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'
@@ -1082,7 +1083,16 @@ def (bins = []).add(name)
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

View file

@ -0,0 +1,22 @@
From f833e213596b0bcfad8264a555eb5093303fb5f2 Mon Sep 17 00:00:00 2001
From: Jarek Prokop <jprokop@redhat.com>
Date: Thu, 25 Sep 2025 12:26:39 +0200
Subject: [PATCH] Add ruby_version_dir_name support for RDoc.
---
lib/rdoc/ri/paths.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb
index 8e89b04e..731f9e36 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 = File.join RbConfig::CONFIG['ridir'], version

View file

@ -0,0 +1,257 @@
From 5406ea4b4b13db747e5c1f8341bb257b4da04435 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 | 66 ++++++++++++++++++++++++---------------------
template/ruby.pc.in | 1 +
2 files changed, 36 insertions(+), 31 deletions(-)
diff --git a/configure.ac b/configure.ac
index 2bbce78fd0..9d8662369c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4422,9 +4422,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],
@@ -4447,57 +4444,63 @@ 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 '@%:@include "confdefs.h"'
- 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 '@%:@include "confdefs.h"'
+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)
@@ -4514,6 +4517,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 6901ec2320..9b7b787208 100644
--- a/template/ruby.pc.in
+++ b/template/ruby.pc.in
@@ -2,6 +2,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@
arch=@arch@
From baff562149499973123d2187620201be641c6538 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.
---
tool/rbinstall.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
index 874c3ef1d9..a9e6365b27 100755
--- a/tool/rbinstall.rb
+++ b/tool/rbinstall.rb
@@ -1053,7 +1053,7 @@ def (bins = []).add(name)
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
From 7cf872a9a34f38d71cd2ca04ac114b4ea85cc56c 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 | 7 ++++---
test/rubygems/test_gem.rb | 5 +++--
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
index 90f09fc191..f6b8a03b95 100644
--- a/lib/rubygems/defaults.rb
+++ b/lib/rubygems/defaults.rb
@@ -35,7 +35,7 @@ def self.default_spec_cache_dir
# specified in the environment
def self.default_dir
- @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version"])
+ @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"])
end
##
@@ -104,7 +104,8 @@ def self.user_dir
gem_dir = File.join(Gem.user_home, ".gem")
gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir)
parts = [gem_dir, 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
@@ -265,7 +266,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 74c8953904..1f3bd91d51 100644
--- a/test/rubygems/test_gem.rb
+++ b/test/rubygems/test_gem.rb
@@ -1339,7 +1339,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?
FileUtils.mkdir_p File.join(parts)
@@ -1415,7 +1416,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
From 17cb98b7b78f8bfc511feffbe061747f676055b1 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 9d8662369c..2bc5153141 100644
--- a/configure.ac
+++ b/configure.ac
@@ -151,7 +151,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}')
dnl checks for alternative programs
AC_CANONICAL_BUILD

View file

@ -0,0 +1,86 @@
From 03b44a86b574dc0b63fd57c5f9b52b56ad3ced37 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 | 1 +
ruby.c | 4 ++++
spec/ruby/core/kernel/require_spec.rb | 2 ++
4 files changed, 19 insertions(+)
create mode 100644 abrt.c
diff --git a/abrt.c b/abrt.c
new file mode 100644
index 0000000000..e99cb432e6
--- /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 08fee9119a..dae7d9dc00 100644
--- a/common.mk
+++ b/common.mk
@@ -116,6 +116,7 @@ PRISM_FILES = prism/api_node.$(OBJEXT) \
prism_init.$(OBJEXT)
COMMONOBJS = \
+ abrt.$(OBJEXT) \
array.$(OBJEXT) \
ast.$(OBJEXT) \
bignum.$(OBJEXT) \
diff --git a/ruby.c b/ruby.c
index b00fc1502d..32b88f7496 100644
--- a/ruby.c
+++ b/ruby.c
@@ -1773,10 +1773,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();
}
void rb_call_builtin_inits(void);
diff --git a/spec/ruby/core/kernel/require_spec.rb b/spec/ruby/core/kernel/require_spec.rb
index 60d17242fe..a8f93b0db4 100644
--- a/spec/ruby/core/kernel/require_spec.rb
+++ b/spec/ruby/core/kernel/require_spec.rb
@@ -26,6 +26,8 @@
out = ruby_exe("puts $LOADED_FEATURES", options: '--disable-gems --disable-did-you-mean')
features = out.lines.map { |line| File.basename(line.chomp, '.*') }
+ # Ignore ABRT
+ features -= %w[abrt]
# Ignore CRuby internals
features -= %w[encdb transdb windows_1252 windows_31j]
features.reject! { |feature| feature.end_with?('-fake') }

View file

@ -0,0 +1,23 @@
From 9b7cb6a40d73bb86ee0de34360068e90e80f4e7e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Thu, 7 Sep 2023 13:13:02 +0200
Subject: [PATCH] Disable syntax-suggest test case.
This requires internet connection.
---
common.mk | 2 --
1 file changed, 2 deletions(-)
diff --git a/common.mk b/common.mk
index dae7d9dc00..111e859d1b 100644
--- a/common.mk
+++ b/common.mk
@@ -1619,8 +1619,6 @@ no-test-bundled-gems-spec:
test-syntax-suggest:
-check: $(DOT_WAIT) $(PREPARE_SYNTAX_SUGGEST) test-syntax-suggest
-
test-bundler-precheck: $(TEST_RUNNABLE)-test-bundler-precheck
no-test-bundler-precheck:
yes-test-bundler-precheck: main $(arch)-fake.rb

View file

@ -0,0 +1,117 @@
From 1cfb11bc8d01e4fc1ff47807721e29b250f0f19f Mon Sep 17 00:00:00 2001
From: Jarek Prokop <jprokop@redhat.com>
Date: Mon, 22 Dec 2025 10:13:34 +0100
Subject: [PATCH] Support customizable rustc_flags for rustc builds.
Add `rustc_flags` option for configure that appends to RUSTC_FLAGS
flags used when compiling with rustc for customizable build flags.
It appends to existing defaults in RUSTC_FLAGS.
Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
---
common.mk | 10 ++--------
configure.ac | 8 ++++++++
defs/jit.mk | 2 ++
template/Makefile.in | 1 +
4 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/common.mk b/common.mk
index 08fee9119a..9ac5ae919f 100644
--- a/common.mk
+++ b/common.mk
@@ -270,21 +270,15 @@ MAKE_LINK = $(MINIRUBY) -rfileutils -e "include FileUtils::Verbose" \
# For release builds
YJIT_RUSTC_ARGS = --crate-name=yjit \
$(JIT_RUST_FLAGS) \
+ $(RUSTC_FLAGS) \
--edition=2021 \
- -g \
- -C lto=thin \
- -C opt-level=3 \
- -C overflow-checks=on \
'--out-dir=$(CARGO_TARGET_DIR)/release/' \
'$(top_srcdir)/yjit/src/lib.rs'
ZJIT_RUSTC_ARGS = --crate-name=zjit \
$(JIT_RUST_FLAGS) \
+ $(RUSTC_FLAGS) \
--edition=2024 \
- -g \
- -C lto=thin \
- -C opt-level=3 \
- -C overflow-checks=on \
'--out-dir=$(CARGO_TARGET_DIR)/release/' \
'$(top_srcdir)/zjit/src/lib.rs'
diff --git a/configure.ac b/configure.ac
index 2bbce78fd0..a3aa6dc383 100644
--- a/configure.ac
+++ b/configure.ac
@@ -69,6 +69,7 @@ dnl 93(bright yellow) is copied from .github/workflows/mingw.yml
AC_ARG_VAR([cflags], [additional CFLAGS (ignored when CFLAGS is given)])dnl
AC_ARG_VAR([cppflags], [additional CPPFLAGS (ignored when CPPFLAGS is given)])dnl
AC_ARG_VAR([cxxflags], [additional CXXFLAGS (ignored when CXXFLAGS is given)])dnl
+AC_ARG_VAR([rustc_flags], [additional RUSTC_FLAGS])dnl
[begin]_group "environment section" && {
HAVE_BASERUBY=yes
@@ -4054,6 +4055,11 @@ AS_CASE(["${ZJIT_SUPPORT}"],
AC_DEFINE(USE_ZJIT, 0)
])
+RUSTC_FLAGS='-g -C lto=thin -C opt-level=3 -C overflow-checks=on'
+AS_IF([test -n "${rustc_flags}"], [
+ RUSTC_FLAGS="${RUSTC_FLAGS} ${rustc_flags}"
+])
+
JIT_RUST_FLAGS='--crate-type=staticlib --cfg feature=\"stats_allocator\"'
RLIB_DIR=
AS_CASE(["$JIT_CARGO_SUPPORT:$YJIT_SUPPORT:$ZJIT_SUPPORT"],
@@ -4111,6 +4117,7 @@ AS_IF([test -n "$RUST_LIB"], [
dnl These variables end up in ::RbConfig::CONFIG
AC_SUBST(RUSTC)dnl Rust compiler command
AC_SUBST(JIT_RUST_FLAGS)dnl the common rustc flags for JIT crates such as zjit
+AC_SUBST(RUSTC_FLAGS)dnl user-configurable rustc compiler flags
AC_SUBST(CARGO)dnl Cargo command for Rust builds
AC_SUBST(CARGO_BUILD_ARGS)dnl for selecting Rust build profiles
AC_SUBST(YJIT_SUPPORT)dnl what flavor of YJIT the Ruby build includes
@@ -4855,6 +4862,7 @@ config_summary "strip command" "$STRIP"
config_summary "install doc" "$DOCTARGETS"
config_summary "YJIT support" "$YJIT_SUPPORT"
config_summary "ZJIT support" "$ZJIT_SUPPORT"
+config_summary "RUSTC_FLAGS" "$RUSTC_FLAGS"
config_summary "man page type" "$MANTYPE"
config_summary "search path" "$search_path"
config_summary "static-linked-ext" ${EXTSTATIC:+"yes"}
diff --git a/defs/jit.mk b/defs/jit.mk
index 42b56c4cd9..27b14e7a07 100644
--- a/defs/jit.mk
+++ b/defs/jit.mk
@@ -40,6 +40,7 @@ else ifneq ($(strip $(RLIB_DIR)),) # combo build
$(RUST_LIB): $(srcdir)/ruby.rs
$(ECHO) 'building $(@F)'
$(gnumake_recursive)$(Q) $(RUSTC) --edition=2024 \
+ $(RUSTC_FLAGS) \
'-L$(@D)' \
--extern=yjit \
--extern=zjit \
@@ -58,6 +59,7 @@ $(JIT_RLIB):
$(gnumake_recursive)$(Q) $(RUSTC) --crate-name=jit \
--edition=2024 \
$(JIT_RUST_FLAGS) \
+ $(RUSTC_FLAGS) \
'--out-dir=$(@D)' \
'$(top_srcdir)/jit/src/lib.rs'
endif # ifneq ($(JIT_CARGO_SUPPORT),no)
diff --git a/template/Makefile.in b/template/Makefile.in
index 443c394cb4..0b7b50e3aa 100644
--- a/template/Makefile.in
+++ b/template/Makefile.in
@@ -115,6 +115,7 @@ CARGO_TARGET_DIR=@abs_top_builddir@/target
CARGO_BUILD_ARGS=@CARGO_BUILD_ARGS@
ZJIT_TEST_FEATURES=@ZJIT_TEST_FEATURES@
JIT_RUST_FLAGS=@JIT_RUST_FLAGS@
+RUSTC_FLAGS=@RUSTC_FLAGS@
RLIB_DIR=@RLIB_DIR@
RUST_LIB=@RUST_LIB@
RUST_LIBOBJ = $(RUST_LIB:.a=.@OBJEXT@)

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);
}

59
ruby.rpmlintrc Normal file
View file

@ -0,0 +1,59 @@
# Keep matching patterns enough not to hide unintended errors and warnings.
# There is no way to implement this with `%{SOURCE0}` without `%{_sourcedir}`.
# The order in the .spec file could be possibly different.
addFilter(r'ruby\.(spec|src):20: E: use-of-RPM_SOURCE_DIR$')
# The used version is not obvious.
addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-build_assert\)$')
addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-check_type\)$')
addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-container_of\)$')
addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-list\)$')
# The template files do not have to have executable bits.
addFilter(r'^rubygem-bundler\.noarch: E: non-executable-script /usr/share/gems/gems/bundler-[\d\.]+/lib/bundler/templates/[\w/\.]+ 644 /usr/bin/env ')
# Samples don't really need executable bits.
addFilter(r'^rubygem-bigdecimal\.x86_64: E: non-executable-script /usr/share/gems/gems/bigdecimal-[\d\.]+/sample/\w+.rb 644 /usr/local/bin/ruby$')
# The bundled gem files permissions are overridden as 644 by `make install`.
# https://bugs.ruby-lang.org/issues/17840
# https://github.com/rubygems/rubygems/issues/5255
addFilter(r'^.*: E: non-executable-script /usr/share/gems/gems/(abbrev|getoptlong|nkf|observer|resolv|resolv-replace|rinda|syslog)-[\d\.]+/bin/\w+ 644 ')
# Ruby provides API to set the cipher list.
addFilter(r'^ruby-libs\.\w+: W: crypto-policy-non-compliance-openssl /usr/lib(64)?/ruby/openssl.so SSL_CTX_set_cipher_list$')
# `gethostbyname` is part of deprecated Ruby API. There is also request to drop the API altogether:
# https://bugs.ruby-lang.org/issues/13097
# https://bugs.ruby-lang.org/issues/17944
addFilter(r'^ruby-libs\.\w+: W: binary-or-shlib-calls-gethostbyname /usr/lib(64)?/ruby/socket.so$')
# Rake ships some examples.
addFilter(r'^rubygem-rake.noarch: W: devel-file-in-non-devel-package /usr/share/gems/gems/rake-[\d\.]+/doc/example/\w+.c$')
# Some executables don't have their manual pages. Is it worth of use help2man?
addFilter(r'^.+: W: no-manual-page-for-binary (bundler|gem|racc|rbs|rdbg|rdoc|ruby-mri|syntax_suggest|typeprof)$')
# Default gems does not come with any documentation.
addFilter(r'^rubygem-(bigdecimal|io-console|json|psych)\.\w+: W: no-documentation$')
# rubygems-devel ships only RPM macros and generators. Their placement is given
# by RPM and can't be modified.
addFilter(r'rubygems-devel.noarch: W: only-non-binary-in-usr-lib$')
# Ignore some spelling false positives.
# Ignore spelling of technical terms
addFilter(r'^ruby-default-gems.noarch: E: spelling-error \(\'gemspec\'')
addFilter(r'^ruby-libs.x86_64: E: spelling-error \(\'libruby\'')
addFilter(r'^rubygem-test-unit.noarch: E: spelling-error \(\'xUnit\'')
addFilter(r'^rubygem-psych.x86_64: E: spelling-error \(\'libyaml\'')
addFilter(r'^rubygem-io-console.x86_64: E: spelling-error \(\'readline\'')
# `pyaml` is part of URL
addFilter(r'^rubygem-psych.x86_64: E: spelling-error \(\'pyyaml\'')
# `de-` is actually prefix
addFilter(r'^rubygem-psych.x86_64: E: spelling-error \(\'de\'')
# It does not seemt to be worth of changing rubygems to archful package due to
# single directory, unless it causes some real troubles.
addFilter(r'^rubygems.noarch: E: noarch-with-lib64$')

2870
ruby.spec

File diff suppressed because it is too large Load diff

View file

@ -1,296 +0,0 @@
From 5a37a3489491a33f2e7011043fbbcd9a765e1777 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Thu, 3 Nov 2011 16:43:05 +0100
Subject: [PATCH 1/6] Add dedicate extensions folder into $LOAD_PATH.
---
lib/rubygems/specification.rb | 37 ++++++++++++++++++++++++++++++-------
1 files changed, 30 insertions(+), 7 deletions(-)
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
index 97db19e..263e7d3 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -843,6 +843,12 @@ class Gem::Specification
File.join full_gem_path, path
end
+ unless extensions.empty?
+ paths += require_paths.map do |path|
+ File.join ext_dir, path
+ end
+ end
+
# gem directories must come after -I and ENV['RUBYLIB']
insert_index = Gem.load_path_insert_index
@@ -954,16 +960,16 @@ class Gem::Specification
def contains_requirable_file? file
root = full_gem_path
+ ext = ext_dir
+
+ require_paths.any? do |lib|
+ base = ["#{root}/#{lib}/#{file}"]
+ base << "#{ext}/#{lib}/#{file}" unless extensions.empty?
- require_paths.each do |lib|
- base = "#{root}/#{lib}/#{file}"
- Gem.suffixes.each do |suf|
- path = "#{base}#{suf}"
- return true if File.file? path
+ base.any? do |path|
+ Gem.suffixes.any? { |suf| File.file? "#{path}#{suf}" }
end
end
-
- return false
end
##
@@ -1273,6 +1279,23 @@ class Gem::Specification
end
##
+ # Returns the full path to this spec's ext directory.
+ # eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0
+
+ def ext_dir
+ @gem_dir ||= File.expand_path File.join(exts_dir, full_name)
+ end
+
+ ##
+ # Returns the full path to the exts directory containing this spec's
+ # gem directory. eg: /usr/local/lib/ruby/1.8/exts
+
+ def exts_dir
+ # TODO: this logic seems terribly broken, but tests fail if just base_dir
+ @exts_dir ||= File.join(loaded_from && base_dir || Gem.dir, "exts")
+ end
+
+ ##
# Deprecated and ignored, defaults to true.
#
# Formerly used to indicate this gem was RDoc-capable.
--
1.7.7.3
From 671e4285bf9db948bc5f054d7d3d931cdd7a17f8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Wed, 16 Nov 2011 13:26:48 +0100
Subject: [PATCH 2/6] Use spec's ext dir for extension installation.
---
lib/rubygems/installer.rb | 2 +-
lib/rubygems/specification.rb | 7 +++----
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
index 74d803d..0063c7f 100644
--- a/lib/rubygems/installer.rb
+++ b/lib/rubygems/installer.rb
@@ -499,7 +499,7 @@ TEXT
def build_extensions
return if spec.extensions.empty?
say "Building native extensions. This could take a while..."
- dest_path = File.join gem_dir, spec.require_paths.first
+ dest_path = spec.ext_dir
ran_rake = false # only run rake once
spec.extensions.each do |extension|
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
index 263e7d3..d31b93b 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -1283,16 +1283,15 @@ class Gem::Specification
# eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0
def ext_dir
- @gem_dir ||= File.expand_path File.join(exts_dir, full_name)
+ @ext_dir ||= File.join exts_dir, full_name, require_paths.first
end
##
# Returns the full path to the exts directory containing this spec's
- # gem directory. eg: /usr/local/lib/ruby/1.8/exts
+ # gem directory. eg: /usr/local/lib/ruby/1.8/gems
def exts_dir
- # TODO: this logic seems terribly broken, but tests fail if just base_dir
- @exts_dir ||= File.join(loaded_from && base_dir || Gem.dir, "exts")
+ @exts_dir ||= gems_dir
end
##
--
1.7.7.3
From 11b4a0cbadd8b1d3320f838881aa60feb6f848e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Wed, 16 Nov 2011 14:52:16 +0100
Subject: [PATCH 3/6] Simplify the extending of $LOAD_PATH for binary gems.
---
lib/rubygems/specification.rb | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
index d31b93b..e65ea2d 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -843,11 +843,7 @@ class Gem::Specification
File.join full_gem_path, path
end
- unless extensions.empty?
- paths += require_paths.map do |path|
- File.join ext_dir, path
- end
- end
+ paths << ext_dir unless extensions.empty? || paths.include?(ext_dir)
# gem directories must come after -I and ENV['RUBYLIB']
insert_index = Gem.load_path_insert_index
@@ -1291,7 +1287,10 @@ class Gem::Specification
# gem directory. eg: /usr/local/lib/ruby/1.8/gems
def exts_dir
- @exts_dir ||= gems_dir
+ @exts_dir ||= begin
+ dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir}
+ dirs ? File.join(dirs.last[:ext_dir], 'exts') : gems_dir
+ end
end
##
--
1.7.7.3
From 5d46cd2b1ac9517a9cbcfa430261e62bb3a376b8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Fri, 9 Dec 2011 16:31:04 +0100
Subject: [PATCH 4/6] Fix the binary extension search path construction.
---
lib/rubygems/installer.rb | 2 +-
lib/rubygems/specification.rb | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
index 0063c7f..83b8fd5 100644
--- a/lib/rubygems/installer.rb
+++ b/lib/rubygems/installer.rb
@@ -499,7 +499,7 @@ TEXT
def build_extensions
return if spec.extensions.empty?
say "Building native extensions. This could take a while..."
- dest_path = spec.ext_dir
+ dest_path = File.join spec.ext_dir, spec.require_paths.first
ran_rake = false # only run rake once
spec.extensions.each do |extension|
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
index e65ea2d..8be2ade 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -843,7 +843,7 @@ class Gem::Specification
File.join full_gem_path, path
end
- paths << ext_dir unless extensions.empty? || paths.include?(ext_dir)
+ paths << File.join(ext_dir, require_paths.first) unless extensions.empty? || (ext_dir == full_gem_path)
# gem directories must come after -I and ENV['RUBYLIB']
insert_index = Gem.load_path_insert_index
@@ -1279,7 +1279,7 @@ class Gem::Specification
# eg: /usr/local/lib/ruby/1.8/exts/mygem-1.0
def ext_dir
- @ext_dir ||= File.join exts_dir, full_name, require_paths.first
+ @ext_dir ||= File.join exts_dir, full_name
end
##
--
1.7.7.3
From 6229583633802b45e5a3e5689ab9077347cd9ef7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Tue, 13 Dec 2011 12:14:54 +0100
Subject: [PATCH 5/6] Remove binary extensions during uninstall.
---
lib/rubygems/uninstaller.rb | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/lib/rubygems/uninstaller.rb b/lib/rubygems/uninstaller.rb
index cc32ea4..94d78e0 100644
--- a/lib/rubygems/uninstaller.rb
+++ b/lib/rubygems/uninstaller.rb
@@ -213,6 +213,7 @@ class Gem::Uninstaller
File.writable?(spec.base_dir)
FileUtils.rm_rf spec.full_gem_path
+ FileUtils.rm_rf spec.ext_dir
# TODO: should this be moved to spec?... I vote eww (also exists in docmgr)
old_platform_name = [spec.name,
--
1.7.7.3
From bc40e1b9f60a9a04456e3504ffe6ee600b6da269 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
Date: Tue, 13 Dec 2011 14:27:14 +0100
Subject: [PATCH 6/6] Avoid dependency on customized operating_system.rb.
---
lib/rubygems/defaults.rb | 11 +++++++++++
lib/rubygems/specification.rb | 5 +----
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
index 20b4198..6d8711f 100644
--- a/lib/rubygems/defaults.rb
+++ b/lib/rubygems/defaults.rb
@@ -87,6 +87,17 @@ module Gem
end
##
+ # Returns binary extensions dir for specified RubyGems base dir or nil
+ # if such directory cannot be determined.
+ #
+ # By default, the binary extensions are located side by side with their
+ # Ruby counterparts, therefore nil is returned
+
+ def self.default_ext_dir_for base_dir
+ nil
+ end
+
+ ##
# The default system-wide source info cache directory
def self.default_system_source_cache_dir
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
index 8be2ade..f54210a 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -1287,10 +1287,7 @@ class Gem::Specification
# gem directory. eg: /usr/local/lib/ruby/1.8/gems
def exts_dir
- @exts_dir ||= begin
- dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir}
- dirs ? File.join(dirs.last[:ext_dir], 'exts') : gems_dir
- end
+ @exts_dir ||= Gem.default_ext_dir_for(base_dir) || gems_dir
end
##
--
1.7.7.3

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_dependencies(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_dependencies(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_dependencies(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_dependencies(specification)
rescue => e
# Ignore all errors.
end
end
end
end
if __FILE__ == $0
RubyGemsReq::requires
end

View file

@ -1 +1 @@
3e0d7f8512400c1a6732327728a56f1d ruby-1.9.3-p385.tar.gz
SHA512 (ruby-4.0.1.tar.xz) = b67d9d1f97ba30200d103f8454e39dc2d0450819d51d91eb5451d44b0bafc56d2fa48bb1be6c5081babe5828f679984bad02b9bcee7441f6bd34c0a95b8f200b

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

34
test_openssl_fips.rb Normal file
View file

@ -0,0 +1,34 @@
require 'openssl'
# Run openssl tests in OpenSSL FIPS. See the link below for how to test.
# https://github.com/ruby/openssl/blob/master/.github/workflows/test.yml
# - step name: test on fips module
# Listing the testing files by an array explicitly rather than the `Dir.glob`
# to prevent the test files from not loading unintentionally.
TEST_FILES = %w[
test/openssl/test_fips.rb
test/openssl/test_pkey.rb
].freeze
if ARGV.empty?
puts 'ERROR: Argument base_dir required.'
puts "Usage: #{__FILE__} base_dir [options]"
exit false
end
BASE_DIR = ARGV[0]
abs_test_files = TEST_FILES.map { |file| File.join(BASE_DIR, file) }
# Set Fedora/RHEL downstream OpenSSL downstream environment variable to enable
# FIPS module in non-FIPS OS environment. It is available in Fedora 38 or later
# versions.
# https://src.fedoraproject.org/rpms/openssl/blob/rawhide/f/0009-Add-Kernel-FIPS-mode-flag-support.patch
ENV['OPENSSL_FORCE_FIPS_MODE'] = '1'
# A flag to tell the tests the current environment is FIPS enabled.
# https://github.com/ruby/openssl/blob/master/test/openssl/test_fips.rb
ENV['TEST_RUBY_OPENSSL_FIPS_ENABLED'] = 'true'
abs_test_files.each do |file|
puts "INFO: Loading #{file}."
require file
end

124
test_rubygems_con.rb Normal file
View file

@ -0,0 +1,124 @@
# frozen_string_literal: true
require 'test/unit'
require 'rpm_test_helper'
class TestRubyGemsCon < Test::Unit::TestCase
include RPMTestHelper
def test_filter_out_regular_requirements
gem_i = GemInfo.new
lines = run_generator_single_file(gem_i)
assert_equal(0, lines.size)
deps = [ Dependency.new('bar') ]
gem_i.dependencies = deps
lines = run_generator_single_file(gem_i)
assert_equal(0, lines.size)
deps = [
Dependency.new('bar'),
Dependency.new('baq'),
Dependency.new('quz')
]
gem_i.dependencies = deps
lines = run_generator_single_file(gem_i)
assert_equal(0, lines.size)
deps = [
Dependency.new('bar', ['>= 4.1']),
Dependency.new('baz', ['~> 3.2']),
Dependency.new('quz', ['>= 5.6'])
]
gem_i.dependencies = deps
lines = run_generator_single_file(gem_i)
assert_equal(0, lines.size)
end
def test_single_gem_single_version_conflict
con = Dependency.new('bar', ['!= 0.4.4'])
gem_i = GemInfo.new(dependencies: [ con ])
lines = run_generator_single_file(gem_i)
assert_equal(1, lines.size)
assert_equal("#{con.to_rpm_str} = 0.4.4\n", lines.first)
end
def test_multiple_gems_with_single_conflict
cons = [
Dependency.new('bar', ['!= 1.1']),
Dependency.new('baq', ['!= 1.2.2']),
Dependency.new('quz', ['!= 1.3'])
]
gem_i = GemInfo.new(dependencies: cons)
lines = run_generator_single_file(gem_i)
assert_equal(3, lines.size)
assert_equal("#{cons[0].to_rpm_str} = 1.1\n" , lines[0])
assert_equal("#{cons[1].to_rpm_str} = 1.2.2\n", lines[1])
assert_equal("#{cons[2].to_rpm_str} = 1.3\n" , lines[2])
end
def test_multiple_conflicts_on_single_gem
con = Dependency.new('bar', ['!= 2.3', '!= 2.4'])
gem_i = GemInfo.new(dependencies: [con])
lines = run_generator_single_file(gem_i)
assert_equal(1, lines.size)
rpm_name = con.to_rpm_str
left_rpm_constraint = "(#{rpm_name} = 2.3 with "
right_rpm_constraint = "#{rpm_name} = 2.4)\n"
assert_equal((left_rpm_constraint + right_rpm_constraint), lines[0])
con = Dependency.new('bar', ['!= 2.3', '!= 2.4', '!= 4.5'])
gem_i = GemInfo.new(dependencies: [ con ])
lines = run_generator_single_file(gem_i)
assert_equal(1, lines.size)
rpm_name = con.to_rpm_str
left_rpm_constraint = "(#{rpm_name} = 2.3 with "
middle_rpm_constraint = "#{rpm_name} = 2.4 with "
right_rpm_constraint = "#{rpm_name} = 4.5)\n"
assert_equal((left_rpm_constraint + middle_rpm_constraint + right_rpm_constraint), lines[0])
end
def test_generates_conflicts_while_ignoring_regular_requirements
deps = [
Dependency.new('bar', ['>= 2.3', '!= 2.4.2']),
Dependency.new('quz', ['~> 3.0', '!= 3.2'])
]
gem_i = GemInfo.new(dependencies: deps)
lines = run_generator_single_file(gem_i)
assert_equal(2, lines.size)
rpm_name = deps[0].to_rpm_str
rpm_constraint = "#{rpm_name} = 2.4.2\n"
assert_equal(rpm_constraint, lines[0])
rpm_name = deps[1].to_rpm_str
rpm_constraint = "#{rpm_name} = 3.2\n"
assert_equal(rpm_constraint, lines[1])
end
end

52
test_rubygems_prov.rb Normal file
View file

@ -0,0 +1,52 @@
# frozen_string_literal: true
require 'test/unit'
require 'rpm_test_helper'
class TestRubyGemsProv < Test::Unit::TestCase
include RPMTestHelper
def test_provides_the_gem_version
gem_i = GemInfo.new(version: '1.2')
lines = run_generator_single_file(gem_i)
assert_equal(1, lines.size)
assert_equal("#{gem_i.to_rpm_str} = #{gem_i.version}\n", lines.first)
gem_i = GemInfo.new(name: 'somegem_foo', version: '4.5.6')
lines = run_generator_single_file(gem_i)
assert_equal(1, lines.size)
assert_equal("#{gem_i.to_rpm_str} = #{gem_i.version}\n", lines.first)
deps = [
Dependency.new('bar'),
Dependency.new('baq', [">= 1.2"]),
Dependency.new('quz', ["!= 3.2"])
]
gem_i = GemInfo.new(dependencies: deps)
lines = run_generator_single_file(gem_i)
assert_equal(1, lines.size)
assert_equal("#{gem_i.to_rpm_str} = #{gem_i.version}\n", lines.first)
end
def test_translates_prelease_version_provides_from_rubygems_to_rpm
gem_i = GemInfo.new(version: '1.2.3.dev')
lines = run_generator_single_file(gem_i)
assert_equal(1, lines.size)
assert_equal("#{gem_i.to_rpm_str} = 1.2.3~dev\n", lines.first)
gem_i = GemInfo.new(name: 'foo2', version: '1.2.3.dev.2')
lines = run_generator_single_file(gem_i)
assert_equal(1, lines.size)
assert_equal("#{gem_i.to_rpm_str} = 1.2.3~dev.2\n", lines.first)
end
end

205
test_rubygems_req.rb Normal file
View file

@ -0,0 +1,205 @@
# frozen_string_literal: true
require 'test/unit'
require 'rpm_test_helper'
class TestRubyGemsReq < Test::Unit::TestCase
include RPMTestHelper
def test_depends_on_rubygems
gem_i = GemInfo.new
lines = run_generator_single_file(gem_i)
assert_equal(1, lines.size)
assert_equal("#{helper_rubygems_dependency}\n", lines.first)
end
def test_requires_rubygems_and_dependency
dep = Dependency.new('bar')
gem_i = GemInfo.new(dependencies: [dep])
lines = run_generator_single_file(gem_i)
assert_equal(2, lines.size)
assert_equal("#{helper_rubygems_dependency}\n", lines.first)
assert_equal("#{dep.to_rpm_str}\n", lines[1])
end
def test_requires_multiple_dependencies_with_constraint
constraints = [
'>= 3.0',
'>= 3.0.0',
'>= 3',
'= 1.0.2',
'= 3.0',
'< 3.2',
'<= 3.4'
]
dependencies = []
constraints.each_with_index do |constraint, idx|
dependencies << Dependency.new("bar#{idx}", [constraint])
end
gem_i = GemInfo.new(dependencies: dependencies)
lines = run_generator_single_file(gem_i)
# + 1 for the rubygems dependency
assert_equal(constraints.size + 1, lines.size)
dependencies.each_with_index do |dep, idx|
rpm_dep_name = dep.to_rpm_str
# Start indexing lines at 1, to jump over rubygems dependency
assert_equal("#{rpm_dep_name} #{constraints[idx]}\n", lines[idx + 1])
end
end
def test_expands_pessimistic_constraint_for_rpm
dep = Dependency.new('bar', ['~> 1.2'])
gem_i = GemInfo.new(dependencies: [dep])
lines = run_generator_single_file(gem_i)
assert_equal(2, lines.size)
rpm_dep_name = dep.to_rpm_str
left_constraint = "#{rpm_dep_name} >= 1.2"
right_constraint = "#{rpm_dep_name} < 2"
expected_constraint = "(#{left_constraint} with #{right_constraint})\n"
assert_equal(expected_constraint, lines[1])
end
def test_multiple_pessimistically_constrained_dependencies
dependencies = []
dep_map = [
{
constraint: '~> 1.2.3',
expanded_left: '>= 1.2.3',
expanded_rigth: '< 1.3',
gem_name: 'bar1'
},
{
constraint: '~> 1.2',
expanded_left: '>= 1.2',
expanded_rigth: '< 2',
gem_name: 'bar2'
},
{
constraint: '~> 3',
expanded_left: '>= 3',
expanded_rigth: '< 4',
gem_name: 'bar3'
}
].each do |deps|
dependencies << Dependency.new(deps[:gem_name], [deps[:constraint]])
end
gem_i = GemInfo.new(dependencies: dependencies)
lines = run_generator_single_file(gem_i)
assert_equal(dep_map.size + 1, lines.size)
dep_map.each_with_index do |hash, idx|
rpm_dep_name = dependencies[idx].to_rpm_str
left_constraint = rpm_dep_name + ' ' + hash[:expanded_left]
right_constraint = rpm_dep_name + ' ' + hash[:expanded_rigth]
expected_constraint = "(#{left_constraint} with #{right_constraint})\n"
assert_equal(expected_constraint, lines[idx + 1])
end
end
def test_multiple_constraints_on_one_dependency_composes_constraints_for_RPM
# The quoting here depends on how the constraint is expanded in the helpers.
# right now the form is `["#{constraint}"]`, therefore we have to not specify
# left and right quotes.
constraints = ['>= 0.2.3', '<= 0.2.5']
dep = Dependency.new('baz', constraints)
gem_i = GemInfo.new(dependencies: [dep])
lines = run_generator_single_file(gem_i)
assert_equal(2, lines.size)
rpm_dep_name = dep.to_rpm_str
assert_equal("(#{rpm_dep_name} >= 0.2.3 with #{rpm_dep_name} <= 0.2.5)\n", lines[1])
# Not sure who would compose a dependency like this, but it's possible
# to do with the current generator
constraints = ['> 0.4.5', '< 0.6.4', '>= 2.3', '<= 2.5.3']
dep = Dependency.new('qux', constraints)
gem_i = GemInfo.new(dependencies: [dep])
lines = run_generator_single_file(gem_i)
rpm_dep = dep.to_rpm_str
expected_str = "(#{rpm_dep} > 0.4.5 with #{rpm_dep} < 0.6.4 with " \
"#{rpm_dep} >= 2.3 with #{rpm_dep} <= 2.5.3)\n"
assert_equal(2, lines.size)
assert_equal(expected_str, lines[1])
end
# https://bugzilla.redhat.com/show_bug.cgi?id=1561487
def test_depends_on_gem_with_version_conflict
dep = Dependency.new('baz', ['!= 0.4'])
gem_i = GemInfo.new(dependencies: [dep])
lines = run_generator_single_file(gem_i)
assert_equal(2, lines.size)
assert_equal("#{dep.to_rpm_str}\n", lines[1])
end
def test_filters_conflict_from_regular_version_constraints
constraint = ['> 1.2.4', '!= 1.2.7']
dep = Dependency.new('baq', constraint)
gem_i = GemInfo.new(dependencies: [dep])
lines = run_generator_single_file(gem_i)
assert_equal(2, lines.size)
assert_equal("#{dep.to_rpm_str} > 1.2.4\n", lines[1])
end
def test_filtering_conflicts_is_not_depending_on_contraint_ordering
constraints = ['!= 1.2.7', '> 1.2.4']
dep = Dependency.new('baq', constraints)
gem_i = GemInfo.new(dependencies: [dep])
lines = run_generator_single_file(gem_i)
assert_equal(2, lines.size)
assert_equal("#{dep.to_rpm_str} > 1.2.4\n", lines[1])
end
def test_filters_multiple_conflicts_from_dependency
omit "Case not yet supported."
constraints = ['!= 1.2.4', '!= 1.2.5', '!= 2.3', '!= 4.8']
dep = Dependency.new('baf', constraints)
gem_i = GemInfo.new(dependencies: [dep])
lines = run_generator_single_file(gem_i)
assert_equal(2, lines.size)
assert_equal("#{dep.to_rpm_str}\n", lines[1])
end
def test_filters_multiple_conflicts_from_dependency_but_keeps_regular_constraint
constraints = ['!= 1.2.4', '!= 1.2.5', '!= 2.3', '<= 4.8']
dep = Dependency.new('bam', constraints)
gem_i = GemInfo.new(dependencies: [dep])
lines = run_generator_single_file(gem_i)
assert_equal(2, lines.size)
assert_equal("#{dep.to_rpm_str} <= 4.8\n", lines[1])
end
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