go_gem 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/go_gem/mkmf.rb +5 -1
- data/lib/go_gem/rake_task.rb +46 -16
- data/lib/go_gem/util.rb +18 -0
- data/lib/go_gem/version.rb +1 -1
- data/sig/go_gem/rake_task.rbs +9 -1
- data/sig/go_gem/util.rbs +5 -0
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de781c3ea978d43846ab114c957f973d1273a385b4a2cda8b4ab8bcae31e7b61
|
4
|
+
data.tar.gz: ff9e4ec5ee199bcc5aeabeec13426caa2db9cf2d593bb5fdca44f164daed6f2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55fe501bd31919fe173a8ed9dbb7998a51da0098679e15f3d1ad2da120c62b78d80dc91139feb9056f949d08e49ed0bcd5ef1e217dd6d7e52297baa9039b9871
|
7
|
+
data.tar.gz: 82d8f84fb59e73fd7e555446fc02121e516fb5a376478a2484174bff7f2e3cdb60e7d5f461432783126fef30130c7b7e6e9081cbe6460957e87de0b1bf8b8cdd
|
data/lib/go_gem/mkmf.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative "util"
|
4
|
+
|
3
5
|
module GoGem
|
4
6
|
# Helper module for creating Go Makefiles
|
5
7
|
module Mkmf
|
@@ -35,11 +37,13 @@ module GoGem
|
|
35
37
|
|
36
38
|
current_dir = File.expand_path(".")
|
37
39
|
|
40
|
+
goflags = "-tags=#{GoGem::Util.ruby_minor_version_build_tag}"
|
41
|
+
|
38
42
|
File.open("Makefile", "a") do |f|
|
39
43
|
f.write <<~MAKEFILE.gsub(/^ {8}/, "\t")
|
40
44
|
$(DLLIB): Makefile $(srcdir)/*.go
|
41
45
|
cd $(srcdir); \
|
42
|
-
CGO_CFLAGS='$(INCFLAGS)' CGO_LDFLAGS='#{ldflags}' \
|
46
|
+
CGO_CFLAGS='$(INCFLAGS)' CGO_LDFLAGS='#{ldflags}' GOFLAGS='#{goflags}' \
|
43
47
|
go build -p 4 -buildmode=c-shared -o #{current_dir}/$(DLLIB)
|
44
48
|
MAKEFILE
|
45
49
|
end
|
data/lib/go_gem/rake_task.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
require "rake"
|
4
4
|
require "rake/tasklib"
|
5
5
|
|
6
|
+
require_relative "util"
|
7
|
+
|
6
8
|
module GoGem
|
7
9
|
# Provides rake tasks for `go test` with CRuby
|
8
10
|
#
|
@@ -40,7 +42,7 @@ module GoGem
|
|
40
42
|
# end
|
41
43
|
# end
|
42
44
|
# end
|
43
|
-
class RakeTask < ::Rake::TaskLib
|
45
|
+
class RakeTask < ::Rake::TaskLib # rubocop:disable Metrics/ClassLength
|
44
46
|
DEFAULT_TASK_NAMESPACE = :go
|
45
47
|
|
46
48
|
DEFAULT_GO_BIN_PATH = "go"
|
@@ -87,6 +89,7 @@ module GoGem
|
|
87
89
|
define_go_testrace_task
|
88
90
|
define_go_fmt_task
|
89
91
|
define_go_build_envs_task
|
92
|
+
define_go_build_tag_task
|
90
93
|
end
|
91
94
|
end
|
92
95
|
|
@@ -94,20 +97,8 @@ module GoGem
|
|
94
97
|
#
|
95
98
|
# @return [Hash<String, String>]
|
96
99
|
def self.build_env_vars
|
97
|
-
ldflags =
|
98
|
-
|
99
|
-
case `#{RbConfig::CONFIG["CC"]} --version` # rubocop:disable Lint/LiteralAsCondition
|
100
|
-
when /Free Software Foundation/
|
101
|
-
ldflags << " -Wl,--unresolved-symbols=ignore-all"
|
102
|
-
when /clang/
|
103
|
-
ldflags << " -undefined dynamic_lookup"
|
104
|
-
end
|
105
|
-
|
106
|
-
cflags = [
|
107
|
-
RbConfig::CONFIG["CFLAGS"],
|
108
|
-
"-I#{RbConfig::CONFIG["rubyarchhdrdir"]}",
|
109
|
-
"-I#{RbConfig::CONFIG["rubyhdrdir"]}",
|
110
|
-
].join(" ")
|
100
|
+
ldflags = generate_ldflags
|
101
|
+
cflags = generate_cflags
|
111
102
|
|
112
103
|
# FIXME: Workaround for Ubuntu (GitHub Actions)
|
113
104
|
if RUBY_PLATFORM =~ /linux/i
|
@@ -120,15 +111,47 @@ module GoGem
|
|
120
111
|
ldflags.gsub!("-Wl,--unresolved-symbols=ignore-all", "")
|
121
112
|
end
|
122
113
|
|
123
|
-
ld_library_path = RbConfig::CONFIG["libdir"]
|
114
|
+
ld_library_path = RbConfig::CONFIG["libdir"].to_s
|
124
115
|
|
125
116
|
{
|
117
|
+
"GOFLAGS" => generate_goflags,
|
126
118
|
"CGO_CFLAGS" => cflags,
|
127
119
|
"CGO_LDFLAGS" => ldflags,
|
128
120
|
"LD_LIBRARY_PATH" => ld_library_path,
|
129
121
|
}
|
130
122
|
end
|
131
123
|
|
124
|
+
# @return [String]
|
125
|
+
def self.generate_goflags
|
126
|
+
"-tags=#{GoGem::Util.ruby_minor_version_build_tag}"
|
127
|
+
end
|
128
|
+
private_class_method :generate_goflags
|
129
|
+
|
130
|
+
# @return [String]
|
131
|
+
def self.generate_ldflags
|
132
|
+
ldflags = "-L#{RbConfig::CONFIG["libdir"]} -l#{RbConfig::CONFIG["RUBY_SO_NAME"]}"
|
133
|
+
|
134
|
+
case `#{RbConfig::CONFIG["CC"]} --version` # rubocop:disable Lint/LiteralAsCondition
|
135
|
+
when /Free Software Foundation/
|
136
|
+
ldflags << " -Wl,--unresolved-symbols=ignore-all"
|
137
|
+
when /clang/
|
138
|
+
ldflags << " -undefined dynamic_lookup"
|
139
|
+
end
|
140
|
+
|
141
|
+
ldflags
|
142
|
+
end
|
143
|
+
private_class_method :generate_ldflags
|
144
|
+
|
145
|
+
# @return [String]
|
146
|
+
def self.generate_cflags
|
147
|
+
[
|
148
|
+
RbConfig::CONFIG["CFLAGS"],
|
149
|
+
"-I#{RbConfig::CONFIG["rubyarchhdrdir"]}",
|
150
|
+
"-I#{RbConfig::CONFIG["rubyhdrdir"]}",
|
151
|
+
].join(" ")
|
152
|
+
end
|
153
|
+
private_class_method :generate_cflags
|
154
|
+
|
132
155
|
# @yield
|
133
156
|
def within_target_dir
|
134
157
|
Dir.chdir(target_dir) do # rubocop:disable Style/ExplicitBlockArgument
|
@@ -183,5 +206,12 @@ module GoGem
|
|
183
206
|
end
|
184
207
|
end
|
185
208
|
end
|
209
|
+
|
210
|
+
def define_go_build_tag_task
|
211
|
+
desc "Print build tag"
|
212
|
+
task(:build_tag) do
|
213
|
+
puts GoGem::Util.ruby_minor_version_build_tag
|
214
|
+
end
|
215
|
+
end
|
186
216
|
end
|
187
217
|
end
|
data/lib/go_gem/util.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GoGem
|
4
|
+
# Common utility methods for {GoGem::Mkmf} and {GoGem::RakeTask}
|
5
|
+
module Util
|
6
|
+
# Return ruby version build tag for `go build` and `go test`
|
7
|
+
#
|
8
|
+
# @param ruby_version [String]
|
9
|
+
# @return [String]
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# GoGem::Util.ruby_minor_version_build_tag("3.4.1")
|
13
|
+
# #=> "ruby_3_4"
|
14
|
+
def self.ruby_minor_version_build_tag(ruby_version = RUBY_VERSION)
|
15
|
+
"ruby_#{ruby_version.to_f.to_s.gsub(".", "_")}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/go_gem/version.rb
CHANGED
data/sig/go_gem/rake_task.rbs
CHANGED
@@ -28,7 +28,13 @@ module GoGem
|
|
28
28
|
|
29
29
|
def initialize: (String gem_name) ?{ (RakeTask) -> void } -> void
|
30
30
|
|
31
|
-
def self.build_env_vars: () -> { "CGO_CFLAGS" => String, "CGO_LDFLAGS" => String, "LD_LIBRARY_PATH" => String }
|
31
|
+
def self.build_env_vars: () -> { "GOFLAGS" => String, "CGO_CFLAGS" => String, "CGO_LDFLAGS" => String, "LD_LIBRARY_PATH" => String }
|
32
|
+
|
33
|
+
def self.generate_goflags: () -> String
|
34
|
+
|
35
|
+
def self.generate_ldflags: () -> String
|
36
|
+
|
37
|
+
def self.generate_cflags: () -> String
|
32
38
|
|
33
39
|
private
|
34
40
|
|
@@ -40,6 +46,8 @@ module GoGem
|
|
40
46
|
|
41
47
|
def define_go_build_envs_task: () -> void
|
42
48
|
|
49
|
+
def define_go_build_tag_task: () -> void
|
50
|
+
|
43
51
|
def within_target_dir: () { () -> void } -> void
|
44
52
|
|
45
53
|
def ext_dir: () -> String
|
data/sig/go_gem/util.rbs
ADDED
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: go_gem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sue445
|
8
|
-
autorequire:
|
9
8
|
bindir: exe
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-01-06 00:00:00.000000000 Z
|
12
11
|
dependencies: []
|
13
12
|
description: Helpers for compiling Go extensions for ruby
|
14
13
|
email:
|
@@ -24,10 +23,12 @@ files:
|
|
24
23
|
- lib/go_gem.rb
|
25
24
|
- lib/go_gem/mkmf.rb
|
26
25
|
- lib/go_gem/rake_task.rb
|
26
|
+
- lib/go_gem/util.rb
|
27
27
|
- lib/go_gem/version.rb
|
28
28
|
- sig/go_gem.rbs
|
29
29
|
- sig/go_gem/mkmf.rbs
|
30
30
|
- sig/go_gem/rake_task.rbs
|
31
|
+
- sig/go_gem/util.rbs
|
31
32
|
homepage: https://github.com/ruby-go-gem/go-gem-wrapper
|
32
33
|
licenses:
|
33
34
|
- MIT
|
@@ -37,7 +38,6 @@ metadata:
|
|
37
38
|
changelog_uri: https://github.com/ruby-go-gem/go-gem-wrapper/blob/main/CHANGELOG.md
|
38
39
|
documentation_uri: https://ruby-go-gem.github.io/go-gem-wrapper/
|
39
40
|
rubygems_mfa_required: 'true'
|
40
|
-
post_install_message:
|
41
41
|
rdoc_options: []
|
42
42
|
require_paths:
|
43
43
|
- lib
|
@@ -46,14 +46,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
46
46
|
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: 3.3.0
|
49
|
+
- - "<"
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: 3.5.0
|
49
52
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
50
53
|
requirements:
|
51
54
|
- - ">="
|
52
55
|
- !ruby/object:Gem::Version
|
53
56
|
version: '0'
|
54
57
|
requirements: []
|
55
|
-
rubygems_version: 3.
|
56
|
-
signing_key:
|
58
|
+
rubygems_version: 3.6.2
|
57
59
|
specification_version: 4
|
58
60
|
summary: Helpers for compiling Go extensions for ruby
|
59
61
|
test_files: []
|