From 6323dc433f93741ba1ab8e927320638627fd540b Mon Sep 17 00:00:00 2001 From: Mario Rodas Date: Fri, 24 Feb 2023 04:20:00 +0000 Subject: [PATCH 1/9] rubygems: 3.3.20 -> 3.4.7 --- .../ruby/rubygems/0002-binaries-with-env-shebang.patch | 10 +++++----- .../development/interpreters/ruby/rubygems/default.nix | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pkgs/development/interpreters/ruby/rubygems/0002-binaries-with-env-shebang.patch b/pkgs/development/interpreters/ruby/rubygems/0002-binaries-with-env-shebang.patch index d6eba67e1065..6b7b20934877 100644 --- a/pkgs/development/interpreters/ruby/rubygems/0002-binaries-with-env-shebang.patch +++ b/pkgs/development/interpreters/ruby/rubygems/0002-binaries-with-env-shebang.patch @@ -18,11 +18,11 @@ index 34620860..00ab31d9 100644 extend Gem::Deprecate DEFAULT_OPTIONS = { # :nodoc: -- :env_shebang => false, -+ :env_shebang => true, - :document => %w[ri], - :domain => :both, # HACK dup - :force => false, +- :env_shebang => false, ++ :env_shebang => true, + :document => %w[ri], + :domain => :both, # HACK dup + :force => false, -- 2.21.0 diff --git a/pkgs/development/interpreters/ruby/rubygems/default.nix b/pkgs/development/interpreters/ruby/rubygems/default.nix index 257d589df6c3..18850b45b32d 100644 --- a/pkgs/development/interpreters/ruby/rubygems/default.nix +++ b/pkgs/development/interpreters/ruby/rubygems/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "rubygems"; - version = "3.3.20"; + version = "3.4.7"; src = fetchurl { url = "https://rubygems.org/rubygems/rubygems-${version}.tgz"; - sha256 = "sha256-VTUMZ2mqbszM7uXOYV6Grg7dkeGAGVXYjBX0hA/vOTg="; + sha256 = "sha256-h2nEu+e6uEcYu6gSFzzCIvSuCE5Vm5sZEzuT7BiMCyM="; }; patches = [ From 2f22789063096c2690c3310f487f3a799ed09f87 Mon Sep 17 00:00:00 2001 From: Mario Rodas Date: Fri, 24 Feb 2023 04:20:00 +0000 Subject: [PATCH 2/9] rvm-patchsets: drop --- pkgs/development/interpreters/ruby/default.nix | 12 ++---------- .../interpreters/ruby/patchsets.nix | 18 ------------------ .../interpreters/ruby/rvm-patchsets.nix | 8 -------- 3 files changed, 2 insertions(+), 36 deletions(-) delete mode 100644 pkgs/development/interpreters/ruby/patchsets.nix delete mode 100644 pkgs/development/interpreters/ruby/rvm-patchsets.nix diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix index 73c6e286aa92..19ca74ffa048 100644 --- a/pkgs/development/interpreters/ruby/default.nix +++ b/pkgs/development/interpreters/ruby/default.nix @@ -12,7 +12,6 @@ let op = lib.optional; ops = lib.optionals; opString = lib.optionalString; - patchSet = import ./rvm-patchsets.nix { inherit fetchFromGitHub; }; config = import ./config.nix { inherit fetchFromSavannah; }; rubygems = import ./rubygems { inherit stdenv lib fetchurl; }; @@ -25,7 +24,6 @@ let self = lib.makeOverridable ( { stdenv, buildPackages, lib , fetchurl, fetchpatch, fetchFromSavannah, fetchFromGitHub - , useRailsExpress ? true , rubygemsSupport ? true , zlib, zlibSupport ? true , openssl, openssl_1_1, opensslSupport ? true @@ -51,11 +49,10 @@ let , libiconv, libobjc, libunwind, Foundation , makeBinaryWrapper, buildRubyGem, defaultGemConfig , baseRuby ? buildPackages.ruby_3_1.override { - useRailsExpress = false; docSupport = false; rubygemsSupport = false; } - , useBaseRuby ? stdenv.hostPlatform != stdenv.buildPlatform || useRailsExpress + , useBaseRuby ? stdenv.hostPlatform != stdenv.buildPlatform }: stdenv.mkDerivation rec { pname = "ruby"; @@ -93,12 +90,7 @@ let enableParallelBuilding = true; - patches = - (import ./patchsets.nix { - inherit patchSet useRailsExpress ops fetchpatch; - patchLevel = ver.patchLevel; - }).${ver.majMinTiny} - ++ op (lib.versionOlder ver.majMin "3.1") ./do-not-regenerate-revision.h.patch + patches = op (lib.versionOlder ver.majMin "3.1") ./do-not-regenerate-revision.h.patch ++ op (atLeast30 && useBaseRuby) ./do-not-update-gems-baseruby.patch ++ ops (ver.majMin == "3.0") [ # Ruby 3.0 adds `-fdeclspec` to $CC instead of $CFLAGS. Fixed in later versions. diff --git a/pkgs/development/interpreters/ruby/patchsets.nix b/pkgs/development/interpreters/ruby/patchsets.nix deleted file mode 100644 index 2bf5bc7296c6..000000000000 --- a/pkgs/development/interpreters/ruby/patchsets.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ patchSet, useRailsExpress, ops, patchLevel, fetchpatch }: - -{ - "2.7.7" = ops useRailsExpress [ - "${patchSet}/patches/ruby/2.7/head/railsexpress/01-fix-broken-tests-caused-by-ad.patch" - "${patchSet}/patches/ruby/2.7/head/railsexpress/02-improve-gc-stats.patch" - "${patchSet}/patches/ruby/2.7/head/railsexpress/03-more-detailed-stacktrace.patch" - "${patchSet}/patches/ruby/2.7/head/railsexpress/04-malloc-trim.patch" - ]; - "3.0.5" = ops useRailsExpress [ - "${patchSet}/patches/ruby/3.0/head/railsexpress/01-improve-gc-stats.patch" - "${patchSet}/patches/ruby/3.0/head/railsexpress/02-malloc-trim.patch" - ]; - "3.1.2" = ops useRailsExpress [ - "${patchSet}/patches/ruby/3.1/head/railsexpress/01-improve-gc-stats.patch" - "${patchSet}/patches/ruby/3.1/head/railsexpress/02-malloc-trim.patch" - ]; -} diff --git a/pkgs/development/interpreters/ruby/rvm-patchsets.nix b/pkgs/development/interpreters/ruby/rvm-patchsets.nix deleted file mode 100644 index fbbfd4c97302..000000000000 --- a/pkgs/development/interpreters/ruby/rvm-patchsets.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ fetchFromGitHub }: - -fetchFromGitHub { - owner = "skaes"; - repo = "rvm-patchsets"; - rev = "e6574c54a34fe6e4d45aa1433872a22ddfe14cf3"; - hash = "sha256-x2KvhgRVJ4Nc5v1j4DggKO1u3otG8HVMxhq4yuUKnds="; -} From 52ffebb7a7a6fb1ad2d64e8099451d0cbb281e68 Mon Sep 17 00:00:00 2001 From: Mario Rodas Date: Fri, 24 Feb 2023 04:20:00 +0000 Subject: [PATCH 3/9] ruby: add strictDeps --- pkgs/development/interpreters/ruby/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix index 19ca74ffa048..15c3fd036315 100644 --- a/pkgs/development/interpreters/ruby/default.nix +++ b/pkgs/development/interpreters/ruby/default.nix @@ -68,6 +68,8 @@ let outputs = [ "out" ] ++ lib.optional docSupport "devdoc"; + strictDeps = true; + nativeBuildInputs = [ autoreconfHook bison ] ++ (op docSupport groff) ++ (ops (dtraceSupport && stdenv.isLinux) [ systemtap libsystemtap ]) From fec0d7798d3016e6b6abff542eaeb8c9013829cc Mon Sep 17 00:00:00 2001 From: Mario Rodas Date: Fri, 24 Feb 2023 04:20:00 +0000 Subject: [PATCH 4/9] ruby_3_1: 3.1.2 -> 3.1.3 https://www.ruby-lang.org/en/news/2022/11/24/ruby-3-1-3-released/ --- pkgs/development/interpreters/ruby/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix index 15c3fd036315..c08a93662e42 100644 --- a/pkgs/development/interpreters/ruby/default.nix +++ b/pkgs/development/interpreters/ruby/default.nix @@ -202,7 +202,7 @@ let for makefile in $extMakefiles; do make -C "$(dirname "$makefile")" distclean done - find "$out/${passthru.gemPath}" -name gem_make.out -delete + find "$out/${passthru.gemPath}" \( -name gem_make.out -o -name mkmf.log \) -delete # Bundler tries to create this directory mkdir -p $out/nix-support cat > $out/nix-support/setup-hook < Date: Fri, 24 Feb 2023 04:20:00 +0000 Subject: [PATCH 5/9] ruby_3_2: init at 3.2.1 https://www.ruby-lang.org/en/news/2022/12/25/ruby-3-2-0-released/ https://www.ruby-lang.org/en/news/2023/02/08/ruby-3-2-1-released/ --- pkgs/development/interpreters/ruby/default.nix | 5 +++++ pkgs/top-level/all-packages.nix | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix index c08a93662e42..6c8b8eb03724 100644 --- a/pkgs/development/interpreters/ruby/default.nix +++ b/pkgs/development/interpreters/ruby/default.nix @@ -299,4 +299,9 @@ in { version = rubyVersion "3" "1" "3" ""; sha256 = "sha256-XqSYo19M0Vh1IApS3eQrbrF54SZOF9eHMsOlfNHGq54="; }; + + ruby_3_2 = generic { + version = rubyVersion "3" "2" "1" ""; + sha256 = "sha256-E9Z5AWYO4yF9vZ3VYFk0a9QhLOZKacMG71LfZJNfjb0="; + }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 53f98f0a1ce6..791b308555d3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16949,7 +16949,8 @@ with pkgs; mkRuby ruby_2_7 ruby_3_0 - ruby_3_1; + ruby_3_1 + ruby_3_2; ruby = ruby_2_7; rubyPackages = rubyPackages_2_7; @@ -16957,6 +16958,7 @@ with pkgs; rubyPackages_2_7 = recurseIntoAttrs ruby_2_7.gems; rubyPackages_3_0 = recurseIntoAttrs ruby_3_0.gems; rubyPackages_3_1 = recurseIntoAttrs ruby_3_1.gems; + rubyPackages_3_2 = recurseIntoAttrs ruby_3_2.gems; mruby = callPackage ../development/compilers/mruby { }; From 188e51d08cea930f3f7956167f22e36255f941e8 Mon Sep 17 00:00:00 2001 From: Mario Rodas Date: Fri, 24 Feb 2023 04:20:00 +0000 Subject: [PATCH 6/9] ruby_3_2: build with YJIT support by default --- .../development/interpreters/ruby/default.nix | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix index 6c8b8eb03724..0297839e7da4 100644 --- a/pkgs/development/interpreters/ruby/default.nix +++ b/pkgs/development/interpreters/ruby/default.nix @@ -2,7 +2,7 @@ , fetchurl, fetchpatch, fetchFromSavannah, fetchFromGitHub , zlib, gdbm, ncurses, readline, groff, libyaml, libffi, jemalloc, autoreconfHook, bison , autoconf, libiconv, libobjc, libunwind, Foundation -, buildEnv, bundler, bundix +, buildEnv, bundler, bundix, rustPlatform , makeBinaryWrapper, buildRubyGem, defaultGemConfig, removeReferencesTo , openssl, openssl_1_1 , linuxPackages, libsystemtap @@ -18,9 +18,10 @@ let # Contains the ruby version heuristics rubyVersion = import ./ruby-version.nix { inherit lib; }; - generic = { version, sha256 }: let + generic = { version, sha256, cargoSha256 ? null }: let ver = version; atLeast30 = lib.versionAtLeast ver.majMin "3.0"; + atLeast32 = lib.versionAtLeast ver.majMin "3.2"; self = lib.makeOverridable ( { stdenv, buildPackages, lib , fetchurl, fetchpatch, fetchFromSavannah, fetchFromGitHub @@ -43,7 +44,8 @@ let # Or (usually): # $(nix-build -A ruby)/lib/ruby/2.6.0/x86_64-linux/rbconfig.rb # - In $out/lib/libruby.so and/or $out/lib/libruby.dylib - , removeReferencesTo, jitSupport ? false + , removeReferencesTo, jitSupport ? yjitSupport + , rustPlatform, yjitSupport ? atLeast32 , autoreconfHook, bison, autoconf , buildEnv, bundler, bundix , libiconv, libobjc, libunwind, Foundation @@ -73,6 +75,7 @@ let nativeBuildInputs = [ autoreconfHook bison ] ++ (op docSupport groff) ++ (ops (dtraceSupport && stdenv.isLinux) [ systemtap libsystemtap ]) + ++ ops yjitSupport [ rustPlatform.cargoSetupHook rustPlatform.rust.cargo rustPlatform.rust.rustc ] ++ op useBaseRuby baseRuby; buildInputs = [ autoconf ] ++ (op fiddleSupport libffi) @@ -117,6 +120,14 @@ let }) ]; + cargoRoot = opString yjitSupport "yjit"; + + cargoDeps = if yjitSupport then rustPlatform.fetchCargoTarball { + inherit src; + sourceRoot = "${pname}-${version}/${cargoRoot}"; + sha256 = cargoSha256; + } else null; + postUnpack = opString rubygemsSupport '' rm -rf $sourceRoot/{lib,test}/rubygems* cp -r ${rubygems}/lib/rubygems* $sourceRoot/lib @@ -140,6 +151,7 @@ let (lib.withFeatureAs useBaseRuby "baseruby" "${baseRuby}/bin/ruby") (lib.enableFeature dtraceSupport "dtrace") (lib.enableFeature jitSupport "jit-support") + (lib.enableFeature yjitSupport "yjit") (lib.enableFeature docSupport "install-doc") (lib.withFeature jemallocSupport "jemalloc") (lib.withFeatureAs docSupport "ridir" "${placeholder "devdoc"}/share/ri") @@ -303,5 +315,6 @@ in { ruby_3_2 = generic { version = rubyVersion "3" "2" "1" ""; sha256 = "sha256-E9Z5AWYO4yF9vZ3VYFk0a9QhLOZKacMG71LfZJNfjb0="; + cargoSha256 = "sha256-6du7RJo0DH+eYMOoh3L31F3aqfR5+iG1iKauSV1uNcQ="; }; } From aaa11f72106e7c8bc5716f813bf5f96a8421a9ea Mon Sep 17 00:00:00 2001 From: Mario Rodas Date: Tue, 7 Mar 2023 04:20:00 +0000 Subject: [PATCH 7/9] ruby: add rubygems to expression passthru --- pkgs/development/interpreters/ruby/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix index 0297839e7da4..3b051eac87b0 100644 --- a/pkgs/development/interpreters/ruby/default.nix +++ b/pkgs/development/interpreters/ruby/default.nix @@ -281,6 +281,7 @@ let ruby = self; }; + inherit rubygems; inherit (import ../../ruby-modules/with-packages { inherit lib stdenv makeBinaryWrapper buildRubyGem buildEnv; gemConfig = defaultGemConfig; From 35d43b45f7419c6db6f6aa49e9da376befd31606 Mon Sep 17 00:00:00 2001 From: Mario Rodas Date: Tue, 7 Mar 2023 04:20:00 +0000 Subject: [PATCH 8/9] ruby.rubygems: 3.4.7 -> 3.4.8 --- pkgs/development/interpreters/ruby/rubygems/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/development/interpreters/ruby/rubygems/default.nix b/pkgs/development/interpreters/ruby/rubygems/default.nix index 18850b45b32d..2ff5b6985747 100644 --- a/pkgs/development/interpreters/ruby/rubygems/default.nix +++ b/pkgs/development/interpreters/ruby/rubygems/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "rubygems"; - version = "3.4.7"; + version = "3.4.8"; src = fetchurl { url = "https://rubygems.org/rubygems/rubygems-${version}.tgz"; - sha256 = "sha256-h2nEu+e6uEcYu6gSFzzCIvSuCE5Vm5sZEzuT7BiMCyM="; + sha256 = "sha256-0FlDZJNJJGVkvBmKWNBqNRaTto6ciCOuQEK6uq6dotQ="; }; patches = [ @@ -23,6 +23,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "Package management framework for Ruby"; + changelog = "https://github.com/rubygems/rubygems/blob/v${version}/CHANGELOG.md"; homepage = "https://rubygems.org/"; license = with licenses; [ mit /* or */ ruby ]; maintainers = with maintainers; [ zimbatm ]; From 57ecdd6abdcb5bfc250785b2640ec943104e0401 Mon Sep 17 00:00:00 2001 From: Andrew Childs Date: Thu, 9 Mar 2023 17:55:45 +0900 Subject: [PATCH 9/9] ruby: fix cross compilation --- .../development/interpreters/ruby/default.nix | 21 ++++++++++++++++++- .../do-not-update-gems-baseruby-3.2.patch | 13 ++++++++++++ .../ruby/dont-refer-to-build-dir.patch | 12 +++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/interpreters/ruby/do-not-update-gems-baseruby-3.2.patch create mode 100644 pkgs/development/interpreters/ruby/dont-refer-to-build-dir.patch diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix index 3b051eac87b0..96d73d45c261 100644 --- a/pkgs/development/interpreters/ruby/default.nix +++ b/pkgs/development/interpreters/ruby/default.nix @@ -21,6 +21,7 @@ let generic = { version, sha256, cargoSha256 ? null }: let ver = version; atLeast30 = lib.versionAtLeast ver.majMin "3.0"; + atLeast31 = lib.versionAtLeast ver.majMin "3.1"; atLeast32 = lib.versionAtLeast ver.majMin "3.2"; self = lib.makeOverridable ( { stdenv, buildPackages, lib @@ -96,7 +97,10 @@ let enableParallelBuilding = true; patches = op (lib.versionOlder ver.majMin "3.1") ./do-not-regenerate-revision.h.patch - ++ op (atLeast30 && useBaseRuby) ./do-not-update-gems-baseruby.patch + ++ op (atLeast30 && useBaseRuby) ( + if atLeast32 then ./do-not-update-gems-baseruby-3.2.patch + else ./do-not-update-gems-baseruby.patch + ) ++ ops (ver.majMin == "3.0") [ # Ruby 3.0 adds `-fdeclspec` to $CC instead of $CFLAGS. Fixed in later versions. (fetchpatch { @@ -104,6 +108,14 @@ let sha256 = "sha256-43hI9L6bXfeujgmgKFVmiWhg7OXvshPCCtQ4TxqK1zk="; }) ] + ++ ops (ver.majMin == "3.1") [ + # Ruby 3.1.3 cannot find pkg-config in mkmf.rb + # https://bugs.ruby-lang.org/issues/19189 + (fetchpatch { + url = "https://github.com/ruby/ruby/commit/613fca01486e47dee9364a2fd86b5f5e77fe23c8.patch"; + sha256 = "sha256-0Ku7l6VEpcvxexL9QA5+mNER4v8gYZOJhAjhCL1WDpw="; + }) + ] ++ ops (!atLeast30 && rubygemsSupport) [ # We upgrade rubygems to a version that isn't compatible with the # ruby 2.7 installer. Backport the upstream fix. @@ -118,6 +130,13 @@ let url = "https://github.com/ruby/ruby/commit/261d8dd20afd26feb05f00a560abd99227269c1c.patch"; sha256 = "0wrii25cxcz2v8bgkrf7ibcanjlxwclzhayin578bf0qydxdm9qy"; }) + ] + ++ ops atLeast31 [ + # When using a baseruby, ruby always sets "libdir" to the build + # directory, which nix rejects due to a reference in to /build/ in + # the final product. Removing this reference doesn't seem to break + # anything and fixes cross compliation. + ./dont-refer-to-build-dir.patch ]; cargoRoot = opString yjitSupport "yjit"; diff --git a/pkgs/development/interpreters/ruby/do-not-update-gems-baseruby-3.2.patch b/pkgs/development/interpreters/ruby/do-not-update-gems-baseruby-3.2.patch new file mode 100644 index 000000000000..21e8d0fffe6e --- /dev/null +++ b/pkgs/development/interpreters/ruby/do-not-update-gems-baseruby-3.2.patch @@ -0,0 +1,13 @@ +diff --git a/common.mk b/common.mk +index 3798f82bc6..4d07b28aa4 100644 +--- a/common.mk ++++ b/common.mk +@@ -1374,7 +1374,7 @@ update-config_files: PHONY + config.guess config.sub + + refresh-gems: update-bundled_gems prepare-gems +-prepare-gems: $(HAVE_BASERUBY:yes=update-gems) $(HAVE_BASERUBY:yes=extract-gems) ++prepare-gems: + extract-gems: $(HAVE_BASERUBY:yes=update-gems) + + update-gems$(gnumake:yes=-sequential): PHONY diff --git a/pkgs/development/interpreters/ruby/dont-refer-to-build-dir.patch b/pkgs/development/interpreters/ruby/dont-refer-to-build-dir.patch new file mode 100644 index 000000000000..6198b3acc9e5 --- /dev/null +++ b/pkgs/development/interpreters/ruby/dont-refer-to-build-dir.patch @@ -0,0 +1,12 @@ +diff --git a/tool/fake.rb b/tool/fake.rb +index 91dfb041c4..9c235f1e3a 100644 +--- a/tool/fake.rb ++++ b/tool/fake.rb +@@ -48,7 +48,6 @@ class File + $builtruby ||= File.join(builddir, config['RUBY_INSTALL_NAME'] + config['EXEEXT']) + RbConfig.fire_update!("builddir", builddir) + RbConfig.fire_update!("buildlibdir", builddir) +- RbConfig.fire_update!("libdir", builddir) + RbConfig.fire_update!("prefix", $topdir) + RbConfig.fire_update!("top_srcdir", $top_srcdir ||= top_srcdir) + RbConfig.fire_update!("extout", $extout)