summaryrefslogtreecommitdiffstats
path: root/pkgs/development/interpreters/ruby/rubygems
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2019-04-28 16:36:16 +0000
committerAlyssa Ross <hi@alyssa.is>2019-04-29 12:37:22 +0000
commit0ffedefb15d3eacbdef3619bd833a78d6d01588f (patch)
tree04d60da8e99958b0ad80b5536418a5caf882696e /pkgs/development/interpreters/ruby/rubygems
parentbb4fef149914f26ccc65b9b39e584959a05bfc76 (diff)
ruby: rubygems 2.7.7 -> 3.0.3
I think it makes more sense to keep the patches in-tree than on zimbatm's RubyGems fork.
Diffstat (limited to 'pkgs/development/interpreters/ruby/rubygems')
-rw-r--r--pkgs/development/interpreters/ruby/rubygems/0001-add-post-extract-hook.patch34
-rw-r--r--pkgs/development/interpreters/ruby/rubygems/0002-binaries-with-env-shebang.patch28
-rw-r--r--pkgs/development/interpreters/ruby/rubygems/0003-gem-install-default-to-user.patch26
-rw-r--r--pkgs/development/interpreters/ruby/rubygems/default.nix30
4 files changed, 118 insertions, 0 deletions
diff --git a/pkgs/development/interpreters/ruby/rubygems/0001-add-post-extract-hook.patch b/pkgs/development/interpreters/ruby/rubygems/0001-add-post-extract-hook.patch
new file mode 100644
index 000000000000..84d1d52409e5
--- /dev/null
+++ b/pkgs/development/interpreters/ruby/rubygems/0001-add-post-extract-hook.patch
@@ -0,0 +1,34 @@
+From a6485cfcdf51ff8be452980f93cebfea97f34dec Mon Sep 17 00:00:00 2001
+From: zimbatm <zimbatm@zimbatm.com>
+Date: Wed, 21 Sep 2016 09:32:34 +0100
+Subject: [PATCH 1/3] add post-extract hook
+
+Allows nix to execute scripts just after the gem extraction
+---
+ lib/rubygems/installer.rb | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb
+index d26b1e88..bf18fb7f 100644
+--- a/lib/rubygems/installer.rb
++++ b/lib/rubygems/installer.rb
+@@ -848,7 +848,15 @@ TEXT
+ # Ensures that files can't be installed outside the gem directory.
+
+ def extract_files
+- @package.extract_files gem_dir
++ ret = @package.extract_files gem_dir
++ if ENV['NIX_POST_EXTRACT_FILES_HOOK']
++ puts
++ puts "running NIX_POST_EXTRACT_FILES_HOOK #{ENV['NIX_POST_EXTRACT_FILES_HOOK']} #{gem_dir}"
++ system(ENV['NIX_POST_EXTRACT_FILES_HOOK'], gem_dir.to_s)
++ puts "running NIX_POST_EXTRACT_FILES_HOOK done"
++ puts
++ end
++ ret
+ end
+
+ ##
+--
+2.21.0
+
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
new file mode 100644
index 000000000000..d6eba67e1065
--- /dev/null
+++ b/pkgs/development/interpreters/ruby/rubygems/0002-binaries-with-env-shebang.patch
@@ -0,0 +1,28 @@
+From 2e1328bcdddd35e557eabdff83ac07f3591dc693 Mon Sep 17 00:00:00 2001
+From: zimbatm <zimbatm@zimbatm.com>
+Date: Wed, 21 Sep 2016 19:37:05 +0100
+Subject: [PATCH 2/3] binaries with env shebang
+
+By default, don't point to the absolute ruby derivation path. As a user
+installing a gem in the home, it would freeze the selected ruby version
+to the currently-installed ruby derivation.
+---
+ lib/rubygems/dependency_installer.rb | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/rubygems/dependency_installer.rb b/lib/rubygems/dependency_installer.rb
+index 34620860..00ab31d9 100644
+--- a/lib/rubygems/dependency_installer.rb
++++ b/lib/rubygems/dependency_installer.rb
+@@ -18,7 +18,7 @@ class Gem::DependencyInstaller
+ extend Gem::Deprecate
+
+ DEFAULT_OPTIONS = { # :nodoc:
+- :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/0003-gem-install-default-to-user.patch b/pkgs/development/interpreters/ruby/rubygems/0003-gem-install-default-to-user.patch
new file mode 100644
index 000000000000..138d432c8203
--- /dev/null
+++ b/pkgs/development/interpreters/ruby/rubygems/0003-gem-install-default-to-user.patch
@@ -0,0 +1,26 @@
+From d69249d0ff210316121b44d971ddd2439b1bc393 Mon Sep 17 00:00:00 2001
+From: zimbatm <zimbatm@zimbatm.com>
+Date: Wed, 21 Sep 2016 09:40:39 +0100
+Subject: [PATCH 3/3] gem install default to user
+
+Default to not installing gems to the read-only system derivation.
+---
+ lib/rubygems/path_support.rb | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/rubygems/path_support.rb b/lib/rubygems/path_support.rb
+index ed680d65..749b9ea6 100644
+--- a/lib/rubygems/path_support.rb
++++ b/lib/rubygems/path_support.rb
+@@ -23,7 +23,7 @@ class Gem::PathSupport
+ # hashtable, or defaults to ENV, the system environment.
+ #
+ def initialize(env)
+- @home = env["GEM_HOME"] || Gem.default_dir
++ @home = env["GEM_HOME"] || Gem.user_dir
+
+ if File::ALT_SEPARATOR
+ @home = @home.gsub(File::ALT_SEPARATOR, File::SEPARATOR)
+--
+2.21.0
+
diff --git a/pkgs/development/interpreters/ruby/rubygems/default.nix b/pkgs/development/interpreters/ruby/rubygems/default.nix
new file mode 100644
index 000000000000..db28cbe28fae
--- /dev/null
+++ b/pkgs/development/interpreters/ruby/rubygems/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, fetchurl, fetchpatch }:
+
+stdenv.mkDerivation rec {
+ name = "rubygems";
+ version = "3.0.3";
+
+ src = fetchurl {
+ url = "https://rubygems.org/rubygems/rubygems-${version}.tgz";
+ sha256 = "0b6b9ads8522804xv8b8498gqwsv4qawv13f81kyc7g966y7lfmy";
+ };
+
+ patches = [
+ ./0001-add-post-extract-hook.patch
+ ./0002-binaries-with-env-shebang.patch
+ ./0003-gem-install-default-to-user.patch
+ ];
+
+ installPhase = ''
+ runHook preInstall
+ cp -r . $out
+ runHook postInstall
+ '';
+
+ meta = with lib; {
+ description = "Package management framework for Ruby";
+ homepage = https://rubygems.org/;
+ license = with licenses; [ mit /* or */ ruby ];
+ maintainers = with maintainers; [ qyliss zimbatm ];
+ };
+}