gem-ext-zig_builder 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bfa1cdba6ede4366c9bbc5fd0973a1ff102e5284b25aafc5d18c6af6ab7d967e
4
- data.tar.gz: 3fb02e99621c79b78df6a7fe8d61e08b316bbdefb97f10941116d4a198946995
3
+ metadata.gz: 55b4bf2fe202be13789c3afbc3fc71d515d49f56b08b92720cd882ebed52d13d
4
+ data.tar.gz: 7fee2a3b6f222b25ce72b95275cdb8be2b2c61ca0948a44ae12f4d5098649e77
5
5
  SHA512:
6
- metadata.gz: 4e55584a1a5e0997645c978d21b308d0a3c0f69158eddfd7c84300d6f457a1f11e0c7d231eb41449f09d2f603fb745ca9cd1d38bd3e99e8fa43c5c6a820705db
7
- data.tar.gz: 2e8f94cf078dd2b0a571feaa8a4f983eb485e09c730469820ffbc40066dda7bf9e2dd04c2e9e0b538891376ea9d304b13e271a70de058530d351ab04bf41daed
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.1'
5
+ VERSION = '0.2.1'
6
6
  end
7
7
  end
8
8
  end
@@ -4,6 +4,7 @@ require 'rubygems/ext/builder'
4
4
  require 'rubygems/command'
5
5
  require 'shellwords'
6
6
  require 'rbconfig'
7
+ require 'tmpdir'
7
8
 
8
9
  class Gem::Ext::ZigBuilder < Gem::Ext::Builder
9
10
  module PatchBuilderLookup
@@ -13,23 +14,41 @@ class Gem::Ext::ZigBuilder < Gem::Ext::Builder
13
14
  end
14
15
 
15
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
+
16
29
  # older versions of ruby do not support the 5th `env` argument to run,
17
30
  # so pollute the global ENV as a cheap workaround
18
- ENV['PKG_CONFIG_PATH'] = "#{RbConfig::CONFIG['libdir']}/pkgconfig"
19
- ENV['RUBY_PC' ] = "#{File.basename(RbConfig::CONFIG['ruby_pc'], '.pc')}"
20
-
21
- run(
22
- [].tap {|c|
23
- c << 'zig' << 'build' << '-Doptimize=ReleaseSafe'
24
- c << '--prefix-lib-dir' << dest_path
25
- c << 'test' << 'install'
26
- },
27
- results,
28
- 'zig',
29
- extension_dir
30
- )
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
31
48
 
32
49
  results
50
+ ensure
51
+ FileUtils.remove_entry tmp_dir if tmp_dir
33
52
  end
34
53
  end
35
54
 
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.1
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-08 00:00:00.000000000 Z
11
+ date: 2023-05-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ''
14
14
  email: