gem-ext-zig_builder 0.1.0 → 0.2.1

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: e6419f1ac0a59e19c259a8efce1fbef996083eb8489f6e76e8ed9a73ee7f3a36
4
- data.tar.gz: d5754f2f5ed48b0faebc888aa675531a9c99ec815f6ed67386a8ebc8d9b8a4d9
3
+ metadata.gz: 55b4bf2fe202be13789c3afbc3fc71d515d49f56b08b92720cd882ebed52d13d
4
+ data.tar.gz: 7fee2a3b6f222b25ce72b95275cdb8be2b2c61ca0948a44ae12f4d5098649e77
5
5
  SHA512:
6
- metadata.gz: 3c625b25dff418ecaefac4aaed38441ae96f669bab96476e3ab7e2ae1538bffb85bdf743044b8d9260ec8ee363857d631004140730d3a9b8769924b5882956e2
7
- data.tar.gz: 1af95db95f3f24293804ca784dc14948c9daeda2dbb649c4a9590b122487c2ab9cda6eb58f3e7f0acd35212e90eedc71ac40a96fbec27a4a48b2f37163a8681c
6
+ metadata.gz: 38802825ac0b746613ef0fba7447db7cda21879eaef100307689a083e3f05640ccea6adce95f2805b0d5ce2af2150fc1a21a06b1b769a0f2875c060a62cba970
7
+ data.tar.gz: 570fd46fc68606563c097b858e763ea92564d3189e6bba9f43971ea591403bd4561033fbe073afafd5318d16b2c5d095abf672a0e45119b0d30f7f949e6aaf54
@@ -2,7 +2,7 @@ module Gem
2
2
  module Ext
3
3
  class Builder; end
4
4
  class ZigBuilder < Builder
5
- VERSION = '0.1.0'
5
+ VERSION = '0.2.1'
6
6
  end
7
7
  end
8
8
  end
@@ -4,49 +4,54 @@ require 'rubygems/ext/builder'
4
4
  require 'rubygems/command'
5
5
  require 'shellwords'
6
6
  require 'rbconfig'
7
+ require 'tmpdir'
7
8
 
8
- class Gem::Ext::Builder
9
- def builder_for(extension) # :nodoc:
10
- case extension
11
- when /extconf/ then
12
- Gem::Ext::ExtConfBuilder
13
- when /configure/ then
14
- Gem::Ext::ConfigureBuilder
15
- when /rakefile/i, /mkrf_conf/i then
16
- @ran_rake = true
17
- Gem::Ext::RakeBuilder
18
- when /CMakeLists.txt/ then
19
- Gem::Ext::CmakeBuilder
20
- when /build.zig/ then
21
- Gem::Ext::ZigBuilder
22
- else
23
- extension_dir = File.join @gem_dir, File.dirname(extension)
24
-
25
- message = "No builder for extension '#{extension}'"
26
- build_error extension_dir, message
9
+ class Gem::Ext::ZigBuilder < Gem::Ext::Builder
10
+ module PatchBuilderLookup
11
+ def builder_for(extension)
12
+ /build.zig/ === extension ? Gem::Ext::ZigBuilder : super
27
13
  end
28
14
  end
29
- end
30
15
 
31
- class Gem::Ext::ZigBuilder < Gem::Ext::Builder
32
16
  def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_dir=nil)
17
+ tmp_dir = Dir.mktmpdir
18
+ dlext = RbConfig::CONFIG['DLEXT']
19
+ target_vendor = RbConfig::CONFIG['target_vendor']
20
+ pkg_config_path = "#{RbConfig::CONFIG['libdir']}/pkgconfig"
21
+ ruby_pc = "#{File.basename(RbConfig::CONFIG['ruby_pc'], '.pc')}"
22
+
23
+ cmd = [].tap {|c|
24
+ c << 'zig' << 'build' << '-Doptimize=ReleaseSafe'
25
+ c << '--prefix-lib-dir' << tmp_dir
26
+ c << 'test' << 'install'
27
+ }
28
+
33
29
  # older versions of ruby do not support the 5th `env` argument to run,
34
30
  # so pollute the global ENV as a cheap workaround
35
- ENV['PKG_CONFIG_PATH'] = "#{RbConfig::CONFIG['libdir']}/pkgconfig"
36
- ENV['RUBY_PC' ] = "#{File.basename(RbConfig::CONFIG['ruby_pc'], '.pc')}"
37
-
38
- run(
39
- [].tap {|c|
40
- c << 'zig' << 'build' << '-Doptimize=ReleaseSafe'
41
- c << '--prefix-lib-dir' << dest_path
42
- c << Gem::Command.build_args unless Gem::Command.build_args.empty?
43
- c << 'test' << 'install'
44
- },
45
- results,
46
- 'zig',
47
- extension_dir
48
- )
31
+ ENV['PKG_CONFIG_PATH'] = pkg_config_path
32
+ ENV['RUBY_PC' ] = ruby_pc
33
+
34
+ # even older versions of ruby do not support the 4th extension_dir arg
35
+ Dir.chdir(extension_dir ? extension_dir : '.') do
36
+ run(cmd, results, 'zig')
37
+ end
38
+
39
+ Dir.chdir tmp_dir do
40
+ if target_vendor == 'apple' && dlext == 'bundle'
41
+ Dir.glob('*.dylib').each do |dylib|
42
+ FileUtils.mv dylib, "#{File.basename(dylib, '.dylib')}.bundle"
43
+ end
44
+ end
45
+
46
+ FileUtils.mv Dir.glob("*.#{dlext}"), dest_path
47
+ end
49
48
 
50
49
  results
50
+ ensure
51
+ FileUtils.remove_entry tmp_dir if tmp_dir
51
52
  end
52
53
  end
54
+
55
+ class Gem::Ext::Builder
56
+ prepend Gem::Ext::ZigBuilder::PatchBuilderLookup
57
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem-ext-zig_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frank J. Cameron
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-05 00:00:00.000000000 Z
11
+ date: 2023-05-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ''
14
14
  email: