summaryrefslogtreecommitdiff
path: root/system/ruby/rubygems-avoid-platform-specific-gems.patch
blob: 4eb26a63f5e822c87111c75dac29df9bd1ca0acf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
From: Jakub Jirutka <jakub@jirutka.cz>
Date: Fri, 19 May 2017 19:56:00 +0200
Subject: [PATCH] Rubygems: don't install platform-specific gems

Gems with native extensions typically contain just source code that is
built during installation on user's system. However, Rubygems allows to
publish even platform-specific gems with prebuilt binaries for specific
platform. The problem is that Rubygems uses only short platform
identification like x86_64-linux; it does not identify used libc.
And sadly platform-specific gems for linux are built against glibc, so
they may not work on musl libc.

This patch is a workaround for the aforesaid problem. It removes local
platform from Rubygems' supported platforms to force it always pick
a platform-agnostic (source) gem. Users can override it using
`--platform` option.

--- a/lib/rubygems.rb
+++ b/lib/rubygems.rb
@@ -759,7 +759,10 @@
   def self.platforms
     @platforms ||= []
     if @platforms.empty?
-      @platforms = [Gem::Platform::RUBY, Gem::Platform.local]
+      # XXX: Patched to avoid installing platform-specific gems with binaries
+      # linked against glibc.
+      @platforms = [Gem::Platform::RUBY]
+      #@platforms = [Gem::Platform::RUBY, Gem::Platform.local]
     end
     @platforms
   end