From 929678a63d1d43dd7a74b8acc9e47ec1b650625f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Fri, 15 Feb 2013 18:06:40 +0100 Subject: [PATCH] Fix installation of binary gems. --- ...obal-Specification.dirs-during-insta.patch | 51 ++++++++++- rubygems-2.0.0-binary-extensions.patch | 84 +++++++++++++++---- 2 files changed, 119 insertions(+), 16 deletions(-) diff --git a/rubygems-2.0.0-Do-not-modify-global-Specification.dirs-during-insta.patch b/rubygems-2.0.0-Do-not-modify-global-Specification.dirs-during-insta.patch index b082597..c7c4ef7 100644 --- a/rubygems-2.0.0-Do-not-modify-global-Specification.dirs-during-insta.patch +++ b/rubygems-2.0.0-Do-not-modify-global-Specification.dirs-during-insta.patch @@ -1,7 +1,7 @@ From b95b9942361104dc5b7fd08eb4970f893d8c1a54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 13 Feb 2013 13:12:30 +0100 -Subject: [PATCH 1/2] Remove duplicated check. +Subject: [PATCH 1/3] Remove duplicated check. The loaded specifications are rejected already in #gather_dependencies, so this condition cannot trigger. @@ -30,7 +30,7 @@ index d811f62..dffa8df 100644 From 2fa9087b1986db6c7945c0f997fed2bfff5ce06a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 13 Feb 2013 15:47:47 +0100 -Subject: [PATCH 2/2] Do not modify global Specification.dirs during +Subject: [PATCH 2/3] Do not modify global Specification.dirs during installation. While gems are installed into --install-dir just fine even without @@ -103,3 +103,50 @@ index dffa8df..841f26a 100644 -- 1.8.1.2 + +From d473204ce920702dd87257db49355929f31530d4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Fri, 15 Feb 2013 17:02:44 +0100 +Subject: [PATCH 3/3] Default to Gem.dir as late as possible. + +--- + lib/rubygems/dependency_installer.rb | 2 +- + lib/rubygems/installer.rb | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/lib/rubygems/dependency_installer.rb b/lib/rubygems/dependency_installer.rb +index 841f26a..abcfa0f 100644 +--- a/lib/rubygems/dependency_installer.rb ++++ b/lib/rubygems/dependency_installer.rb +@@ -346,7 +346,7 @@ class Gem::DependencyInstaller + :force => @force, + :format_executable => @format_executable, + :ignore_dependencies => @ignore_dependencies, +- :install_dir => (@install_dir || Gem.dir), ++ :install_dir => @install_dir, + :security_policy => @security_policy, + :user_install => @user_install, + :wrappers => @wrappers, +diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb +index 780a88b..6543130 100644 +--- a/lib/rubygems/installer.rb ++++ b/lib/rubygems/installer.rb +@@ -535,13 +535,13 @@ class Gem::Installer + :bin_dir => nil, + :env_shebang => false, + :force => false, +- :install_dir => Gem.dir, + :only_install_dir => false + }.merge options + + @env_shebang = options[:env_shebang] + @force = options[:force] +- @gem_home = options[:install_dir] ++ @install_dir = options[:install_dir] ++ @gem_home = options[:install_dir] || Gem.dir + @ignore_dependencies = options[:ignore_dependencies] + @format_executable = options[:format_executable] + @security_policy = options[:security_policy] +-- +1.8.1.2 + diff --git a/rubygems-2.0.0-binary-extensions.patch b/rubygems-2.0.0-binary-extensions.patch index 43f3599..359b578 100644 --- a/rubygems-2.0.0-binary-extensions.patch +++ b/rubygems-2.0.0-binary-extensions.patch @@ -1,7 +1,7 @@ From ec90622235ae19b28a327cb50a10e0311e8f3d71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Thu, 3 Nov 2011 16:43:05 +0100 -Subject: [PATCH 1/7] Add dedicate extensions folder into $LOAD_PATH. +Subject: [PATCH 1/9] Add dedicate extensions folder into $LOAD_PATH. --- lib/rubygems/specification.rb | 32 ++++++++++++++++++++++++++++++-- @@ -68,13 +68,13 @@ index cabdf8d..87b14d2 100644 # # Formerly used to indicate this gem was RDoc-capable. -- -1.8.1 +1.8.1.2 From e42819f32fc5d935f7e7189ec4be8bdab0a2cf3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 16 Nov 2011 13:26:48 +0100 -Subject: [PATCH 2/7] Use spec's ext dir for extension installation. +Subject: [PATCH 2/9] Use spec's ext dir for extension installation. --- lib/rubygems/installer.rb | 2 +- @@ -119,13 +119,13 @@ index 87b14d2..492ddbe 100644 ## -- -1.8.1 +1.8.1.2 From 0e9dd0655111f7dda805233c79a3771459d9a66a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 16 Nov 2011 14:52:16 +0100 -Subject: [PATCH 3/7] Simplify the extending of $LOAD_PATH for binary gems. +Subject: [PATCH 3/9] Simplify the extending of $LOAD_PATH for binary gems. --- lib/rubygems/specification.rb | 11 +++++------ @@ -161,13 +161,13 @@ index 492ddbe..c703827 100644 ## -- -1.8.1 +1.8.1.2 From 9a8556c609e800d0dbd24af416d613f2e82f323c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Fri, 9 Dec 2011 16:31:04 +0100 -Subject: [PATCH 4/7] Fix the binary extension search path construction. +Subject: [PATCH 4/9] Fix the binary extension search path construction. --- lib/rubygems/installer.rb | 2 +- @@ -210,13 +210,13 @@ index c703827..fa9ea6e 100644 ## -- -1.8.1 +1.8.1.2 From 476c2f90cc6f5f490858f253a9b23eb19d53d2fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Tue, 13 Dec 2011 12:14:54 +0100 -Subject: [PATCH 5/7] Remove binary extensions during uninstall. +Subject: [PATCH 5/9] Remove binary extensions during uninstall. --- lib/rubygems/uninstaller.rb | 1 + @@ -235,13 +235,13 @@ index d672b9d..5c31a0c 100644 # TODO: should this be moved to spec?... I vote eww (also exists in docmgr) old_platform_name = [spec.name, -- -1.8.1 +1.8.1.2 From 35dc17e86f701fe1be80d98ace79735c535fd570 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Tue, 13 Dec 2011 14:27:14 +0100 -Subject: [PATCH 6/7] Avoid dependency on customized operating_system.rb. +Subject: [PATCH 6/9] Avoid dependency on customized operating_system.rb. --- lib/rubygems/defaults.rb | 11 +++++++++++ @@ -287,13 +287,13 @@ index fa9ea6e..2b10499 100644 ## -- -1.8.1 +1.8.1.2 From 0937c0b0a3c2ed08ab5b0875f7f95e24157525c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Thu, 7 Feb 2013 13:07:34 +0100 -Subject: [PATCH 7/7] Fix binary extensions installation when --install-dir is +Subject: [PATCH 7/9] Fix binary extensions installation when --install-dir is specified. --- @@ -314,5 +314,61 @@ index f1f2ad7..e1577fc 100644 spec.extensions.each do |extension| -- -1.8.1 +1.8.1.2 + + +From 4d9675cab5decaef3c9f7f91b2f9c9abd2a19cea Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Fri, 15 Feb 2013 16:24:29 +0100 +Subject: [PATCH 8/9] mkmf does not create folder for binary extensions + anymore. + +This was dropped in Ruby r37016 for some reasons :/ +--- + lib/rubygems/ext/builder.rb | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/lib/rubygems/ext/builder.rb b/lib/rubygems/ext/builder.rb +index d7d953f..812c20c 100644 +--- a/lib/rubygems/ext/builder.rb ++++ b/lib/rubygems/ext/builder.rb +@@ -21,6 +21,10 @@ class Gem::Ext::Builder + mf = mf.gsub(/^RUBYLIBDIR\s*=\s*\$[^$]*/, "RUBYLIBDIR = #{dest_path}") + mf = mf.gsub(/\s*\S+\.time$/, "") + ++ # Folder creation was dropped in r37016 for some reasons :/ ++ target_prefix = mf[/^target_prefix\s*=\s*(.*)/, 1] ++ FileUtils.mkdir_p File.join(dest_path, target_prefix) rescue nil # in case of perms issues -- lame ++ + File.open('Makefile', 'wb') {|f| f.print mf} + + # try to find make program from Ruby configure arguments first +-- +1.8.1.2 + + +From 062a11c59731f5875d5a8821a212c8a41cb84577 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Fri, 15 Feb 2013 17:07:07 +0100 +Subject: [PATCH 9/9] Use correct option. + +--- + lib/rubygems/installer.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb +index e1577fc..1492c68 100644 +--- a/lib/rubygems/installer.rb ++++ b/lib/rubygems/installer.rb +@@ -642,7 +642,7 @@ TEXT + say "This could take a while..." + end + +- dest_path = File.join(options[:install_dir] ? gem_dir : spec.ext_dir, spec.require_paths.first) ++ dest_path = File.join(@install_dir ? gem_dir : spec.ext_dir, spec.require_paths.first) + ran_rake = false # only run rake once + + spec.extensions.each do |extension| +-- +1.8.1.2