Commit Graph

164 Commits

Author SHA1 Message Date
Andrew Marshall
cf5fa5eab2 ruby: Make reproducible
Bundled gems that have native extensions have a gem_make.out file that
is the build log for the native extension. That file contains random
filenames. Since this file is not needed, simply remove it.

With this change, ruby_3_1 build is reproducible, at least on
x86_64-linux.

Example `diff -ur` from `nix build --rebuild --keep-failed .#ruby_3_1`,
before this change:

```diff
diff -ur /nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/debug-1.4.0/gem_make.out /nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2.check/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/debug-1.4.0/gem_make.out
--- /nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/debug-1.4.0/gem_make.out	1969-12-31 19:00:01.000000000 -0500
+++ /nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2.check/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/debug-1.4.0/gem_make.out	1969-12-31 19:00:01.000000000 -0500
@@ -3,12 +3,12 @@
 creating Makefile

 current directory: /nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/debug-1.4.0/ext/debug
-make DESTDIR\= sitearchdir\=./.gem.20221028-31660-a79mlv sitelibdir\=./.gem.20221028-31660-a79mlv clean
+make DESTDIR\= sitearchdir\=./.gem.20221109-31667-zllvs sitelibdir\=./.gem.20221109-31667-zllvs clean
 make[1]: Entering directory '/nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/debug-1.4.0/ext/debug'
 make[1]: Leaving directory '/nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/debug-1.4.0/ext/debug'

 current directory: /nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/debug-1.4.0/ext/debug
-make DESTDIR\= sitearchdir\=./.gem.20221028-31660-a79mlv sitelibdir\=./.gem.20221028-31660-a79mlv
+make DESTDIR\= sitearchdir\=./.gem.20221109-31667-zllvs sitelibdir\=./.gem.20221109-31667-zllvs
 make[1]: Entering directory '/nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/debug-1.4.0/ext/debug'
 compiling debug.c
 compiling iseq_collector.c
@@ -16,7 +16,7 @@
 make[1]: Leaving directory '/nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/debug-1.4.0/ext/debug'

 current directory: /nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/debug-1.4.0/ext/debug
-make DESTDIR\= sitearchdir\=./.gem.20221028-31660-a79mlv sitelibdir\=./.gem.20221028-31660-a79mlv install
+make DESTDIR\= sitearchdir\=./.gem.20221109-31667-zllvs sitelibdir\=./.gem.20221109-31667-zllvs install
 make[1]: Entering directory '/nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/debug-1.4.0/ext/debug'
-/nix/store/xq4g38m5ppg78z7bzfxyy2s8ii693k74-coreutils-9.1/bin/install -c -m 0755 debug.so ./.gem.20221028-31660-a79mlv/debug
+/nix/store/xq4g38m5ppg78z7bzfxyy2s8ii693k74-coreutils-9.1/bin/install -c -m 0755 debug.so ./.gem.20221109-31667-zllvs/debug
 make[1]: Leaving directory '/nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/debug-1.4.0/ext/debug'
diff -ur /nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/rbs-2.1.0/gem_make.out /nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2.check/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/rbs-2.1.0/gem_make.out
--- /nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/rbs-2.1.0/gem_make.out	1969-12-31 19:00:01.000000000 -0500
+++ /nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2.check/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/rbs-2.1.0/gem_make.out	1969-12-31 19:00:01.000000000 -0500
@@ -3,12 +3,12 @@
 creating Makefile

 current directory: /nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/rbs-2.1.0/ext/rbs_extension
-make DESTDIR\= sitearchdir\=./.gem.20221028-31660-cv0bgw sitelibdir\=./.gem.20221028-31660-cv0bgw clean
+make DESTDIR\= sitearchdir\=./.gem.20221109-31667-7spnp3 sitelibdir\=./.gem.20221109-31667-7spnp3 clean
 make[1]: Entering directory '/nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/rbs-2.1.0/ext/rbs_extension'
 make[1]: Leaving directory '/nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/rbs-2.1.0/ext/rbs_extension'

 current directory: /nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/rbs-2.1.0/ext/rbs_extension
-make DESTDIR\= sitearchdir\=./.gem.20221028-31660-cv0bgw sitelibdir\=./.gem.20221028-31660-cv0bgw
+make DESTDIR\= sitearchdir\=./.gem.20221109-31667-7spnp3 sitelibdir\=./.gem.20221109-31667-7spnp3
 make[1]: Entering directory '/nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/rbs-2.1.0/ext/rbs_extension'
 compiling constants.c
 compiling lexer.c
@@ -23,7 +23,7 @@
 make[1]: Leaving directory '/nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/rbs-2.1.0/ext/rbs_extension'

 current directory: /nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/rbs-2.1.0/ext/rbs_extension
-make DESTDIR\= sitearchdir\=./.gem.20221028-31660-cv0bgw sitelibdir\=./.gem.20221028-31660-cv0bgw install
+make DESTDIR\= sitearchdir\=./.gem.20221109-31667-7spnp3 sitelibdir\=./.gem.20221109-31667-7spnp3 install
 make[1]: Entering directory '/nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/rbs-2.1.0/ext/rbs_extension'
-/nix/store/xq4g38m5ppg78z7bzfxyy2s8ii693k74-coreutils-9.1/bin/install -c -m 0755 rbs_extension.so ./.gem.20221028-31660-cv0bgw
+/nix/store/xq4g38m5ppg78z7bzfxyy2s8ii693k74-coreutils-9.1/bin/install -c -m 0755 rbs_extension.so ./.gem.20221109-31667-7spnp3
 make[1]: Leaving directory '/nix/store/m9xczrqsh4chvg4b9z3sl4y93s0jqlbg-ruby-3.1.2/lib/ruby/gems/3.1.0/gems/rbs-2.1.0/ext/rbs_extension'
```
2022-11-09 13:53:41 -05:00
Andrew Marshall
4750b447cf ruby: Do not assume gemPath
Other parts of this derivation use `passthru.gemPath` already, this is
the one exception.
2022-11-09 13:53:41 -05:00
Arnout Engelen
c5e2f3c066
ruby: move towards ruby 3
Currently, `pkgs.ruby` is ruby 2.7.6, which is in 'security updates
only' mode and scheduled to go EOL April 2023. Updating `pkgs.ruby`
to be ruby 3.1 would be a rather large change, but using ruby 3 to
bootstrap building ruby itself would be a nice first step in that
direction.

Tested with asciidoctor that this indeed now allows building a ruby
application without getting ruby 2.7 in the build closure.

Also fixes #192729
2022-10-06 17:09:38 +02:00
ajs124
a902277262 ruby*: use matching openssl version for each release 2022-08-17 20:16:19 +02:00
Mario Rodas
0565bd8b59 ruby: update meta 2022-08-12 04:20:00 +00:00
Mario Rodas
b0447f04cb ruby: remove deprecated passthru variables 2022-08-12 04:20:00 +00:00
Juan Ibiapina
62e5acd0a7
ruby: Expose generic builder (#173390)
To avoid duplicating the ruby compilation code, this change exposes two
functions `mkRubyVersion` and `mkRuby`, which can be used in an overlay
to build any past or current ruby version.

An example overlay:
```nix
self: super:

{
  ruby_2_7_6 = super.mkRuby {
    version = super.mkRubyVersion "2" "7" "6" "";
    sha256 = "042xrdk7hsv4072bayz3f8ffqh61i8zlhvck10nfshllq063n877";
  };

  ruby_3_1_2 = super.mkRuby {
    version = super.mkRubyVersion "3" "1" "2" "";
    sha256 = "0gm84ipk6mrfw94852w5h7xxk2lqrxjbnlwb88svf0lz70933131";
  };
}
```
2022-07-04 11:57:06 +02:00
Jörg Thalheim
49145d30e0
Revert "Revert "ruby: enable O3 optimization""
This reverts commit fe8f468f0e.

Now we are targeting the right branch.
2022-06-18 07:21:38 +02:00
Jörg Thalheim
fe8f468f0e
Revert "ruby: enable O3 optimization"
This reverts commit 64e09fac3d.

This commit should go to staging first.
2022-06-18 07:19:45 +02:00
Jörg Thalheim
f93c47b2e3
ruby: enable O3 optimization 2022-06-18 07:19:42 +02:00
Andrew Childs
e6299e5368 ruby: move jemalloc to propagatedBuildInputs
Alternative malloc implementations in ruby are not fully encapsulated.
Their header files are required when building gems with native
extensions, like bcrypt.
2022-06-06 13:13:32 +09:00
JR Boyens
5bd5ab2410 ruby_3_1: 3.1.1 -> 3.1.2
https://www.ruby-lang.org/en/news/2022/04/12/ruby-3-1-2-released/

Fixes: CVE-2022-28738, CVE-2022-28739
2022-04-15 02:22:24 +02:00
JR Boyens
3e995fbb31 ruby_3_0: 3.0.3 -> 3.0.4
https://www.ruby-lang.org/en/news/2022/04/12/ruby-3-0-4-released/

Fixes: CVE-2022-28738, CVE-2022-28739
2022-04-15 02:21:54 +02:00
JR Boyens
dd5210d85a ruby_2_7: 2.7.5 -> 2.7.6
https://www.ruby-lang.org/en/news/2022/04/12/ruby-2-7-6-released/

Fixes: CVE-2022-28739
2022-04-15 02:21:06 +02:00
Andrew Childs
6e859afe34 ruby: always build from the tarball, drop support for git builds 2022-03-15 21:57:36 +09:00
Andrew Childs
9634895022 ruby: fix build with bundled gems 2022-03-15 21:57:36 +09:00
Andrew Childs
fa6f87a8ae ruby: fix default value of RUBY_REVISION when building from git
The revision.h header is normally pregenerated and included in the
tarball. When building from a git export the value defaults to "HEAD".
2022-03-15 21:57:36 +09:00
Andrew Childs
aeb3ae5008 ruby: separate rails express patches and source location
These are unnecessarily composed. Disabling useRailsExpress changes to
using a tarball instead of fetching directly from git, which will have
unexpected effects. In come cases (Ruby 2.7) it will cause the build
to fail due to en error rubygems/installer.rb. It also changes the set
of gems that are available, since the bundled gems[1] are only
included in the tarball.

[1]: https://stdgems.org/
2022-03-15 21:57:35 +09:00
Teo Ljungberg
4ad8b43ce2 ruby: 3.1.0 -> 3.1.1 2022-03-12 19:46:30 +01:00
arcnmx
7ad577f72a ruby: remove config indiscriminately
stripping config data was introduced in #138368, but was unintentionally
added to the wrong `optionalString` condition. This isn't a problem in
practice (as the relevant condition flag is enabled by default), but was
unintended and therefore fixed here.
2022-01-23 10:56:31 -08:00
Mario Rodas
a2d81a8977 ruby_3_1: init at 3.1.0
https://www.ruby-lang.org/en/news/2021/12/25/ruby-3-1-0-released/
2021-12-25 04:20:00 +00:00
arcnmx
4ac0f8e045 ruby: more consistent baseRuby reference removal 2021-12-23 07:32:59 -08:00
arcnmx
09e3924934 ruby: configure via {enable,with}Feature 2021-12-23 07:32:59 -08:00
arcnmx
4e955d2101 ruby: remove references to baseRuby 2021-12-23 07:32:59 -08:00
Charlotte Van Petegem
26038de225
ruby: 2.7.4 -> 2.7.5, 3.0.2 -> 3.0.3 2021-11-25 10:11:28 +01:00
Sergei Trofimovich
c6b949c09c ruby_2_6, rubyPackages_2_6: drop unused package 2021-10-22 08:46:57 +01:00
Mario Rodas
3320ca4bcb ruby: rubygems 3.2.16 -> 3.2.24 2021-07-16 04:20:00 +00:00
Mario Rodas
afd61a6069 ruby_3_0: 3.0.1 -> 3.0.2
https://www.ruby-lang.org/en/news/2021/07/07/ruby-3-0-2-released/
2021-07-07 04:20:00 +00:00
Mario Rodas
5f9f17cc11 ruby_2_7: 2.7.3 -> 2.7.4
https://www.ruby-lang.org/en/news/2021/07/07/ruby-2-7-4-released/
2021-07-07 04:20:00 +00:00
Mario Rodas
2d420c1559 ruby_2_6: 2.6.7 -> 2.6.8
https://www.ruby-lang.org/en/news/2021/07/07/ruby-2-6-8-released/
2021-07-07 04:20:00 +00:00
Arthur Gautier
7b48454121 rubygems: ensure temporary directories are cleaned up
see #123718

Signed-off-by: Arthur Gautier <baloo@superbaloo.net>
2021-05-20 20:51:41 +00:00
Mario Rodas
92bff24dc1
Merge pull request #119506 from marsam/ruby-disable-jit
ruby: build without jit by default
2021-05-01 21:56:15 -05:00
Andrew Childs
f16053c34d rubygems: 3.1.3 -> 3.2.16 2021-04-21 13:23:53 +09:00
Jan Tojnar
625ce6c7f6 Merge branch 'staging-next' into staging
In python-packages.nix, resolve conflict between 50d604314e and 187d0371ab.
2021-04-08 17:14:31 +02:00
Mario Rodas
83612c3f98 ruby_2_7: 2.7.2 -> 2.7.3
https://www.ruby-lang.org/en/news/2021/04/05/ruby-2-7-3-released/
2021-04-07 04:20:00 +00:00
Mario Rodas
3d7c1202df ruby_2_6: 2.6.6 -> 2.6.7
https://www.ruby-lang.org/en/news/2021/04/05/ruby-2-6-7-released/
2021-04-07 04:20:00 +00:00
Lisa Ugray
7ed8d11dc4 ruby_3_0: 3.0.0 -> 3.0.1 2021-04-06 15:34:39 -04:00
Mario Rodas
6852f66506 ruby: disable jit by default
Building Ruby with jit by default includes clang in its closure, hence
causing a large closure size.

Ruby jit support is optional, and is only enabled at runtime through the
`--jit` flag, hence it should not cause any regression.
2021-04-01 04:20:00 +00:00
github-actions[bot]
b0a6c2b8a5
Merge master into staging-next 2021-03-13 00:38:26 +00:00
Samuel Dionne-Riel
6638690261 ruby: Use hostPlatform
Using `stdenv.targetPlatform` gives the wrong platform in buildPackages.

E.g.:

```
 $ nix-diff --color never $(env -i nix-instantiate -A pkgs.ruby -A pkgs.pkgsCross.aarch64-multiplatform.buildPackages.ruby)
- /nix/store/w8wk99p4gadns35n2l0fr7wx56jlwnnx-ruby-2.6.6.drv:{out}
+ /nix/store/5ywj7nicjai6ji4g33yh6nvz1b5fq7xw-ruby-2.6.6.drv:{out}
• The input named `ruby-2.6.6` differs
  - /nix/store/4a6nag89dcxwdf32820z6dfwwpfgab8s-ruby-2.6.6.drv:{out}
  + /nix/store/40pakkdfv578zffx3y11qd5ckcp2xpzm-ruby-2.6.6.drv:{out}
  • The environments do not match:
      postInstall=''
          # Remove unnecessary groff reference from runtime closure, since it's big
          sed -i '/NROFF/d' $out/lib/ruby/*/*/rbconfig.rb

          # Bundler tries to create this directory
          mkdir -p $out/nix-support
          cat > $out/nix-support/setup-hook <<EOF
          addGemPath() {
            addToSearchPath GEM_PATH \$1/lib/ruby/gems/2.6.0
          }
          addRubyLibPath() {
            addToSearchPath RUBYLIB \$1/lib/ruby/site_ruby
            addToSearchPath RUBYLIB \$1/lib/ruby/site_ruby/2.6.0
            addToSearchPath RUBYLIB \$1/lib/ruby/site_ruby/2.6.0/←x86_←→aarch→64-linux
          }

          addEnvHooks "$hostOffset" addGemPath
          addEnvHooks "$hostOffset" addRubyLibPath
          EOF

          rbConfig=$(find $out/lib/ruby -name rbconfig.rb)
      ''
• Skipping environment comparison
```

`pkgs.pkgsCros.*.buildPackage.ruby` should be equivalent to `pkgs.ruby`.
It wasn't.
2021-03-06 22:30:55 -05:00
Sandro
68ab562d23
Merge pull request #112941 from SuperSandro2000/ruby-jemalloc
ruby: add option to enable jemalloc
2021-02-17 11:21:58 +01:00
Sandro Jäckel
1c33c0ad6b
ruby: add option to enable jemalloc 2021-02-12 21:34:14 +01:00
Nick Novitski
eda1eab733 ruby_2_5: remove 2021-02-03 12:10:32 -08:00
Ben Siraphob
001c0cbe54 pkgs/development/interpreters: stdenv.lib -> lib 2021-01-23 20:29:03 +07:00
Mario Rodas
1b3130ec1a ruby_3_0: init 3.0.0
https://www.ruby-lang.org/en/news/2020/12/25/ruby-3-0-0-released/
2020-12-29 04:20:00 +00:00
zowoq
051812b8cf Revert "ruby: fix build on darwin"
This reverts commit d73cc1e586.
2020-11-14 07:11:29 +10:00
Daniël de Kok
b235552837 ruby: check disallowed references with jitSupport disabled
This makes it easier to detect regressions.
2020-11-12 15:12:59 +01:00
Doron Behar
9db44f61a7 rubyMinimal: remove
Due to being unused, and seemingly unusable, added appropriate release
notes.
2020-11-09 16:17:41 +02:00
Doron Behar
f59f04352a ruby: Rename removeReferencesToCC flag to !jitSupport
If JIT support is built in to ruby, there's no choice other then to
leave this cc reference as is. removeReferencesToCC didn't do it's job
completely since some time ago. That's why it was practically redundant
- `lib/ruby/${version}/<platform>/rbconfig.rb` still referenced cc.
Removing this reference from
`lib/ruby/${version}/<platform>/rbconfig.rb` as well might lead to
breakage in some Gems that require this feature.

But, if JIT support is not desired, it should be safe enough to
completely remove all cc references, both in
lib/ruby/${version}/<platform>/rbconfig.rb and in $out/lib/libruby.so .
Hence now `rubyMinimal` has JIT support disabled and it has no
references at all to stdenv.cc.
2020-11-09 16:17:39 +02:00
zimbatm
7aee32121a
ruby: make the build reproducible
ext/io/console/io-console.gemspec was embedding a timestamp which made
the build not reproducible. Gems respect SOURCE_DATE_EPOCH so it's
enough to just delete that line if it exists.

This file has been fixed in
679a941d05 (diff-d8422f096931c58d4463e2489f62a228b0f24f0492950ba88c8c89a0d741cfe6)
And then ruby regularly merges that gem into their own repository. Ruby
master is fixed but none of the ruby releases have been fixed yet.

lib/ruby/gems/2.6.0/specifications/default/io-console-0.4.7.gemspec now
contains:

    s.date = "1980-01-01"
2020-10-27 14:20:08 +01:00