gem-ext-zig_builder 0.1.1 → 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: 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: