rb_sys 0.9.41 → 0.9.42

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8b9a04958062964619c9e9baaf9c88869cd61120cd548a8e1380753ff01397c3
4
- data.tar.gz: 325671f0009fedba3f542dcfc72c773c794fdf7f75b5dfba0a1c7b67fdd9ff40
3
+ metadata.gz: eb891270e825b41d12d8ef69ebf94c9eac8862d6cf1649d23af775bc84f394d2
4
+ data.tar.gz: 3cf455c0df0e6498c4117d3c063bd4ccaa05cb6f566fe51d36b7898b552f8aec
5
5
  SHA512:
6
- metadata.gz: cf525485f77731be93525e7d4ff418bc8fbb89b8d921e508868604d65f77feee59c42afc927e2f8c36a4de815196e327cb04f603e66fa75b2e7eb576ab286732
7
- data.tar.gz: cd52ca8c09a63580d0a294a9f1bdf0b8eb5a4b7c9b9d178729118b6c677cc204445ab0f445ba44caef8b654d6d82104387bfef00cbf0540f1ced071280af0c26
6
+ metadata.gz: f84a703e4194b91120cbeb0968680d8bacd8d4eeabb0f770f94ed00d3056d765b621d46cd89134b1077e72e54bb360594f9df62bab7a2bc676efb07f4931eaa4
7
+ data.tar.gz: 5cf5177fd5833d9eba38fc53529b0321d9109b772f59daa84a7d38dc447468c3aade4d8a919488a1a345164ed9589801287a0e4e02513ee9967f219f44bc0457
checksums.yaml.gz.sig CHANGED
@@ -1 +1,2 @@
1
- 7
1
+ 99��
2
+ �Jќ9a��,��*��t�E����
@@ -1,4 +1,5 @@
1
1
  module RbSys
2
+ # A class to build a Ruby gem Cargo. Extracted from `rubygems` gem, with some modifications.
2
3
  class CargoBuilder < Gem::Ext::Builder
3
4
  attr_accessor :spec, :runner, :profile, :env, :features, :target, :extra_rustc_args, :dry_run, :ext_dir, :extra_rustflags
4
5
 
@@ -4,14 +4,19 @@ module RbSys
4
4
  module Mkmf
5
5
  # Config that delegates to CargoBuilder if needded
6
6
  class Config
7
- attr_accessor :force_install_rust_toolchain, :clean_after_install
7
+ attr_accessor :force_install_rust_toolchain, :clean_after_install, :target_dir, :auto_install_rust_toolchain
8
8
 
9
9
  def initialize(builder)
10
10
  @builder = builder
11
11
  @force_install_rust_toolchain = false
12
+ @auto_install_rust_toolchain = true
12
13
  @clean_after_install = rubygems_invoked?
13
14
  end
14
15
 
16
+ def cross_compiling?
17
+ RbConfig::CONFIG["CROSS_COMPILING"] == "yes"
18
+ end
19
+
15
20
  def method_missing(name, *args, &blk)
16
21
  @builder.send(name, *args, &blk)
17
22
  end
@@ -20,8 +25,6 @@ module RbSys
20
25
  @builder.respond_to?(name) || super
21
26
  end
22
27
 
23
- private
24
-
25
28
  # Seems to be the only way to reliably know if we were invoked by Rubygems.
26
29
  # We want to know this so we can cleanup the target directory after an
27
30
  # install, to remove bloat.
data/lib/rb_sys/mkmf.rb CHANGED
@@ -18,20 +18,22 @@ module RbSys
18
18
  #
19
19
  # @example Basic
20
20
  # require 'mkmf'
21
- # . require 'rb_sys/mkmf'
21
+ # require 'rb_sys/mkmf'
22
22
  #
23
- # . create_rust_makefile("my_extension") #=> Generate a Makefile in the current directory
23
+ # create_rust_makefile("my_extension") #=> Generate a Makefile in the current directory
24
24
  #
25
25
  # @example Configure a custom build profile
26
26
  # require 'mkmf'
27
- # . require 'rb_sys/mkmf'
27
+ # require 'rb_sys/mkmf'
28
28
  #
29
- # . create_rust_makefile("my_extension") do |r|
30
- # . # All of these are optional
31
- # . r.env = { 'FOO' => 'bar' }
32
- # . r.profile = ENV.fetch('RB_SYS_CARGO_PROFILE', :dev).to_sym
33
- # . r.features = %w[some_cargo_feature]
34
- # . end
29
+ # create_rust_makefile("my_extension") do |r|
30
+ # # All of these are optional
31
+ # r.env = { 'FOO' => 'bar' }
32
+ # r.profile = ENV.fetch('RB_SYS_CARGO_PROFILE', :dev).to_sym
33
+ # r.features = %w[some_cargo_feature]
34
+ # r.rustflags = %w[--cfg=foo]
35
+ # r.target_dir = "some/target/dir"
36
+ # end
35
37
  def create_rust_makefile(target, &blk)
36
38
  if target.include?("/")
37
39
  target_prefix, target = File.split(target)
@@ -94,11 +96,12 @@ module RbSys
94
96
  RUBYARCHDIR = $(sitearchdir)$(target_prefix)
95
97
  TARGET = #{target}
96
98
  DLLIB = $(TARGET).#{RbConfig::CONFIG["DLEXT"]}
97
- TARGET_DIR = #{Dir.pwd}/$(RB_SYS_CARGO_BUILD_TARGET_DIR)/$(RB_SYS_CARGO_PROFILE_DIR)
98
- RUSTLIB = $(TARGET_DIR)/$(SOEXT_PREFIX)$(TARGET_NAME).$(SOEXT)
99
+ #{conditional_assign("TARGET_DIR", "$(RB_SYS_CARGO_BUILD_TARGET_DIR)")}
100
+ RUSTLIBDIR = $(TARGET_DIR)/$(RB_SYS_CARGO_PROFILE_DIR)
101
+ RUSTLIB = $(RUSTLIBDIR)/$(SOEXT_PREFIX)$(TARGET_NAME).$(SOEXT)
99
102
 
100
- CLEANOBJS = $(TARGET_DIR)/.fingerprint $(TARGET_DIR)/incremental $(TARGET_DIR)/examples $(TARGET_DIR)/deps $(TARGET_DIR)/build $(TARGET_DIR)/.cargo-lock $(TARGET_DIR)/*.d $(TARGET_DIR)/*.rlib $(RB_SYS_BUILD_DIR)
101
- DEFFILE = $(TARGET_DIR)/$(TARGET)-$(arch).def
103
+ CLEANOBJS = $(RUSTLIBDIR)/.fingerprint $(RUSTLIBDIR)/incremental $(RUSTLIBDIR)/examples $(RUSTLIBDIR)/deps $(RUSTLIBDIR)/build $(RUSTLIBDIR)/.cargo-lock $(RUSTLIBDIR)/*.d $(RUSTLIBDIR)/*.rlib $(RB_SYS_BUILD_DIR)
104
+ DEFFILE = $(RUSTLIBDIR)/$(TARGET)-$(arch).def
102
105
  CLEANLIBS = $(DLLIB) $(RUSTLIB) $(DEFFILE)
103
106
 
104
107
  #{base_makefile(srcdir)}
@@ -112,9 +115,9 @@ module RbSys
112
115
 
113
116
  FORCE: ;
114
117
 
115
- $(TARGET_DIR):
118
+ $(RUSTLIBDIR):
116
119
  \t$(ECHO) creating target directory \\($(@)\\)
117
- \t$(Q) $(MAKEDIRS) $(TARGET_DIR)
120
+ \t$(Q) $(MAKEDIRS) $(RUSTLIBDIR)
118
121
 
119
122
  #{deffile_definition}
120
123
 
@@ -122,7 +125,7 @@ module RbSys
122
125
 
123
126
  $(RUSTLIB): #{deffile_definition ? "$(DEFFILE) " : nil}FORCE
124
127
  \t$(ECHO) generating $(@) \\("$(RB_SYS_CARGO_PROFILE)"\\)
125
- \t$(Q) #{full_cargo_command}
128
+ \t#{full_cargo_command}
126
129
 
127
130
  $(DLLIB): $(RUSTLIB)
128
131
  \t$(Q) $(COPY) "$(RUSTLIB)" $@
@@ -153,7 +156,7 @@ module RbSys
153
156
 
154
157
  def cargo_command(cargo_dir, builder)
155
158
  builder.ext_dir = cargo_dir
156
- dest_path = File.join(Dir.pwd, "target")
159
+ dest_path = builder.target_dir || File.join(Dir.pwd, "target")
157
160
  args = ARGV.dup
158
161
  args.shift if args.first == "--"
159
162
  cargo_cmd = builder.cargo_command(dest_path, args)
@@ -181,8 +184,7 @@ module RbSys
181
184
  cargo_command.gsub!(/--profile \w+/, "$(RB_SYS_CARGO_PROFILE_FLAG)")
182
185
  cargo_command.gsub!(%r{--features \S+}, "--features $(RB_SYS_CARGO_FEATURES)")
183
186
  cargo_command.gsub!(%r{--target \S+}, "--target $(CARGO_BUILD_TARGET)")
184
- target_dir = "target/#{builder.target}".chomp("/")
185
- cargo_command.gsub!(%r{/#{target_dir}/[^/]+}, "/$(RB_SYS_CARGO_BUILD_TARGET_DIR)/$(RB_SYS_CARGO_PROFILE_DIR)")
187
+ cargo_command.gsub!(/--target-dir (?:(?!--).)+/, "--target-dir $(TARGET_DIR) ")
186
188
  cargo_command
187
189
  end
188
190
 
@@ -192,18 +194,14 @@ module RbSys
192
194
  return unless defined?(EXPORT_PREFIX) && EXPORT_PREFIX
193
195
 
194
196
  @deffile_definition ||= <<~MAKE
195
- $(DEFFILE): $(TARGET_DIR)
197
+ $(DEFFILE): $(RUSTLIBDIR)
196
198
  \t$(ECHO) generating $(@)
197
199
  \t$(Q) ($(COPY) $(srcdir)/$(TARGET).def $@ 2> /dev/null) || (echo EXPORTS && echo $(TARGET_ENTRY)) > $@
198
200
  MAKE
199
201
  end
200
202
 
201
- def optional_rust_toolchain(builder)
203
+ def rust_toolchain_env(builder)
202
204
  <<~MAKE
203
- #{conditional_assign("RB_SYS_FORCE_INSTALL_RUST_TOOLCHAIN", builder.force_install_rust_toolchain)}
204
-
205
- # Only run if the we are told to explicitly install the Rust toolchain
206
- #{if_neq_stmt("$(RB_SYS_FORCE_INSTALL_RUST_TOOLCHAIN)", "false")}
207
205
  #{conditional_assign("RB_SYS_RUSTUP_PROFILE", "minimal")}
208
206
 
209
207
  # If the user passed true, we assume stable Rust. Otherwise, use what
@@ -227,6 +225,16 @@ module RbSys
227
225
  #{export_env("PATH", "$(CARGO_HOME)/bin:$(RUSTUP_HOME)/bin:$(PATH)")}
228
226
  #{export_env("RUSTUP_TOOLCHAIN", "$(RB_SYS_DEFAULT_TOOLCHAIN)")}
229
227
  #{export_env("CARGO", "$(CARGO_HOME)/bin/cargo")}
228
+ MAKE
229
+ end
230
+
231
+ def optional_rust_toolchain(builder)
232
+ <<~MAKE
233
+ #{conditional_assign("RB_SYS_FORCE_INSTALL_RUST_TOOLCHAIN", force_install_rust_toolchain?(builder))}
234
+
235
+ # Only run if the we are told to explicitly install the Rust toolchain
236
+ #{if_neq_stmt("$(RB_SYS_FORCE_INSTALL_RUST_TOOLCHAIN)", "false")}
237
+ #{rust_toolchain_env(builder)}
230
238
 
231
239
  $(CARGO):
232
240
  \t$(Q) $(MAKEDIRS) $(CARGO_HOME) $(RUSTUP_HOME)
@@ -239,6 +247,13 @@ module RbSys
239
247
  MAKE
240
248
  end
241
249
 
250
+ def force_install_rust_toolchain?(builder)
251
+ return builder.force_install_rust_toolchain if builder.force_install_rust_toolchain
252
+ return false unless builder.rubygems_invoked? && builder.auto_install_rust_toolchain
253
+
254
+ find_executable("cargo").nil?
255
+ end
256
+
242
257
  def if_eq_stmt(a, b)
243
258
  if $nmake
244
259
  "!IF #{a.inspect} == #{b.inspect}"
@@ -3,6 +3,13 @@
3
3
  require_relative "toolchain_info/data"
4
4
 
5
5
  module RbSys
6
+ # A class to get information about the Rust toolchains, and how they map to
7
+ # Ruby platforms.
8
+ #
9
+ # @example
10
+ # RbSys::ToolchainInfo.new("x86_64-unknown-linux-gnu").ruby_platform # => "x86_64-linux"
11
+ # RbSys::ToolchainInfo.new("x86_64-unknown-linux-gnu").supported? # => true
12
+ # RbSys::ToolchainInfo.new("x86_64-unknown-linux-gnu")
6
13
  class ToolchainInfo
7
14
  attr_reader :platform, :gem_platform, :rust_target, :rake_compiler_dock_cc, :supported, :rake_compiler_dock_image, :docker_platform
8
15
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RbSys
4
- VERSION = "0.9.41"
4
+ VERSION = "0.9.42"
5
5
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rb_sys
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.41
4
+ version: 0.9.42
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian Ker-Seymer
@@ -30,7 +30,7 @@ cert_chain:
30
30
  Rl+ASkq2/1i07TkBpCf+2hq66+h/hx+/Y/KrUzXfe0jtvil0WESkJT2kqRqHWNhD
31
31
  9GKBxaQlXokNDtWCm1/gl6cD8WRZ0N5S4ZGJT1FLLsA=
32
32
  -----END CERTIFICATE-----
33
- date: 2022-11-13 00:00:00.000000000 Z
33
+ date: 2022-11-16 00:00:00.000000000 Z
34
34
  dependencies: []
35
35
  description:
36
36
  email:
@@ -72,7 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
72
  - !ruby/object:Gem::Version
73
73
  version: '0'
74
74
  requirements: []
75
- rubygems_version: 3.3.7
75
+ rubygems_version: 3.3.22
76
76
  signing_key:
77
77
  specification_version: 4
78
78
  summary: Helpers for compiling Rust extensions for ruby
metadata.gz.sig CHANGED
Binary file