go_gem 0.6.0 → 0.7.0

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: de781c3ea978d43846ab114c957f973d1273a385b4a2cda8b4ab8bcae31e7b61
4
- data.tar.gz: ff9e4ec5ee199bcc5aeabeec13426caa2db9cf2d593bb5fdca44f164daed6f2f
3
+ metadata.gz: 9391de7a479373991e4d34ffc16b48c12b0b939f7738d3534d35d46d0e8f031a
4
+ data.tar.gz: 9de4ce2876dfd5e63c2858502ab63f268c3dda3c0da535701f4cfc739b3f1cf8
5
5
  SHA512:
6
- metadata.gz: 55fe501bd31919fe173a8ed9dbb7998a51da0098679e15f3d1ad2da120c62b78d80dc91139feb9056f949d08e49ed0bcd5ef1e217dd6d7e52297baa9039b9871
7
- data.tar.gz: 82d8f84fb59e73fd7e555446fc02121e516fb5a376478a2484174bff7f2e3cdb60e7d5f461432783126fef30130c7b7e6e9081cbe6460957e87de0b1bf8b8cdd
6
+ metadata.gz: c5bbf69c9727d91331d4ac4e316a3cfa9462fcd180b965789da3f7e57c1d61e2cfad60d46e2db49be1335ddf88c83c18b931afe4cf0ce42a17ad208476f6ccc6
7
+ data.tar.gz: c78e49338aabb2cdd1490a8f258e5e39db8c1a75bb63397f280ecad88deacc39338bdddcb134d8c619c76a997abaa216cb4d6e5921133e5305a076f9a8e0f772
data/README.md CHANGED
@@ -85,7 +85,9 @@ namespace :go do
85
85
  sh "which golangci-lint" do |ok, _|
86
86
  raise "golangci-lint isn't installed. See. https://golangci-lint.run/welcome/install/" unless ok
87
87
  end
88
- sh GoGem::RakeTask.build_env_vars, "golangci-lint run"
88
+
89
+ build_tag = GoGem::Util.ruby_minor_version_build_tag
90
+ sh GoGem::RakeTask.build_env_vars, "golangci-lint run --build-tags #{build_tag}"
89
91
  end
90
92
  end
91
93
  end
@@ -101,12 +103,28 @@ jobs:
101
103
  - uses: actions/checkout@v4
102
104
  - uses: actions/setup-go@v5
103
105
  - uses: ruby/setup-ruby@v1
106
+ with:
107
+ bundler-cache: false
108
+
109
+ # FIXME: setup-go installs cache in `vendor/` and setup-ruby installs cache in `vendor/bundle/`
110
+ # If we use the cache in setup-go and setup-ruby at the same time, this doesn't work well because they use the same directory.
111
+ # Therefore, the installation location needs to be changed from the setup-ruby default.
112
+ - name: bundle install
113
+ run: |
114
+ set -xe
115
+ bundle config --local path ruby-vendor/bundle
116
+ bundle install --jobs 4
104
117
 
105
118
  - name: export CGO_CFLAGS for golangci-lint
106
119
  run: bundle exec rake go:build_envs[CGO_CFLAGS] >> $GITHUB_ENV
107
120
 
121
+ - name: export BUILD_TAG for golangci-lint
122
+ run: echo "BUILD_TAG=$(bundle exec rake go:build_tag)" >> $GITHUB_ENV
123
+
108
124
  - name: Run golangci-lint
109
125
  uses: golangci/golangci-lint-action@v6
126
+ with:
127
+ args: --build-tags ${{ env.BUILD_TAG }}
110
128
  ```
111
129
 
112
130
  #### Available configurations
data/lib/go_gem/mkmf.rb CHANGED
@@ -9,6 +9,7 @@ module GoGem
9
9
  #
10
10
  # @param target [String]
11
11
  # @param srcprefix [String,nil]
12
+ # @param go_build_args [String,nil] Arguments passed to `go build`
12
13
  #
13
14
  # @example
14
15
  # require "mkmf"
@@ -17,7 +18,10 @@ module GoGem
17
18
  # # Use create_go_makefile instead of create_makefile
18
19
  # # create_makefile("example/example")
19
20
  # create_go_makefile("example/example")
20
- def create_go_makefile(target, srcprefix = nil)
21
+ #
22
+ # @example Pass debug flags to `go build`
23
+ # create_go_makefile("example/example", go_build_args: "-gcflags='all=-N -l'")
24
+ def create_go_makefile(target, srcprefix: nil, go_build_args: nil)
21
25
  find_executable("go")
22
26
 
23
27
  # rubocop:disable Style/GlobalVars
@@ -28,13 +32,7 @@ module GoGem
28
32
 
29
33
  create_makefile(target, srcprefix)
30
34
 
31
- case `#{RbConfig::CONFIG["CC"]} --version` # rubocop:disable Lint/LiteralAsCondition
32
- when /Free Software Foundation/
33
- ldflags = "-Wl,--unresolved-symbols=ignore-all"
34
- when /clang/
35
- ldflags = "-undefined dynamic_lookup"
36
- end
37
-
35
+ ldflags = GoGem::Util.generate_ldflags
38
36
  current_dir = File.expand_path(".")
39
37
 
40
38
  goflags = "-tags=#{GoGem::Util.ruby_minor_version_build_tag}"
@@ -44,7 +42,7 @@ module GoGem
44
42
  $(DLLIB): Makefile $(srcdir)/*.go
45
43
  cd $(srcdir); \
46
44
  CGO_CFLAGS='$(INCFLAGS)' CGO_LDFLAGS='#{ldflags}' GOFLAGS='#{goflags}' \
47
- go build -p 4 -buildmode=c-shared -o #{current_dir}/$(DLLIB)
45
+ go build -p 4 -buildmode=c-shared -o #{current_dir}/$(DLLIB) #{go_build_args}
48
46
  MAKEFILE
49
47
  end
50
48
  end
@@ -38,11 +38,13 @@ module GoGem
38
38
  # sh "which golangci-lint" do |ok, _|
39
39
  # raise "golangci-lint isn't installed. See. https://golangci-lint.run/welcome/install/" unless ok
40
40
  # end
41
- # sh GoGem::RakeTask.build_env_vars, "golangci-lint run"
41
+ #
42
+ # build_tag = GoGem::Util.ruby_minor_version_build_tag
43
+ # sh GoGem::RakeTask.build_env_vars, "golangci-lint run --build-tags #{build_tag}"
42
44
  # end
43
45
  # end
44
46
  # end
45
- class RakeTask < ::Rake::TaskLib # rubocop:disable Metrics/ClassLength
47
+ class RakeTask < ::Rake::TaskLib
46
48
  DEFAULT_TASK_NAMESPACE = :go
47
49
 
48
50
  DEFAULT_GO_BIN_PATH = "go"
@@ -97,61 +99,19 @@ module GoGem
97
99
  #
98
100
  # @return [Hash<String, String>]
99
101
  def self.build_env_vars
100
- ldflags = generate_ldflags
101
- cflags = generate_cflags
102
-
103
- # FIXME: Workaround for Ubuntu (GitHub Actions)
104
- if RUBY_PLATFORM =~ /linux/i
105
- cflags.gsub!("-Wno-self-assign", "")
106
- cflags.gsub!("-Wno-parentheses-equality", "")
107
- cflags.gsub!("-Wno-constant-logical-operand", "")
108
- cflags.gsub!("-Wsuggest-attribute=format", "")
109
- cflags.gsub!("-Wold-style-definition", "")
110
- cflags.gsub!("-Wsuggest-attribute=noreturn", "")
111
- ldflags.gsub!("-Wl,--unresolved-symbols=ignore-all", "")
112
- end
102
+ ldflags = GoGem::Util.generate_ldflags
103
+ cflags = GoGem::Util.generate_cflags
113
104
 
114
105
  ld_library_path = RbConfig::CONFIG["libdir"].to_s
115
106
 
116
107
  {
117
- "GOFLAGS" => generate_goflags,
108
+ "GOFLAGS" => GoGem::Util.generate_goflags,
118
109
  "CGO_CFLAGS" => cflags,
119
110
  "CGO_LDFLAGS" => ldflags,
120
111
  "LD_LIBRARY_PATH" => ld_library_path,
121
112
  }
122
113
  end
123
114
 
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
-
155
115
  # @yield
156
116
  def within_target_dir
157
117
  Dir.chdir(target_dir) do # rubocop:disable Style/ExplicitBlockArgument
data/lib/go_gem/util.rb CHANGED
@@ -14,5 +14,52 @@ module GoGem
14
14
  def self.ruby_minor_version_build_tag(ruby_version = RUBY_VERSION)
15
15
  "ruby_#{ruby_version.to_f.to_s.gsub(".", "_")}"
16
16
  end
17
+
18
+ # @return [String]
19
+ def self.generate_ldflags
20
+ ldflags = "-L#{RbConfig::CONFIG["libdir"]} -l#{RbConfig::CONFIG["RUBY_SO_NAME"]}"
21
+
22
+ case `#{RbConfig::CONFIG["CC"]} --version` # rubocop:disable Lint/LiteralAsCondition
23
+ when /Free Software Foundation/
24
+ ldflags << " -Wl,--unresolved-symbols=ignore-all"
25
+ when /clang/
26
+ ldflags << " -undefined dynamic_lookup"
27
+ end
28
+
29
+ # FIXME: Workaround for Ubuntu (GitHub Actions)
30
+ ldflags.gsub!("-Wl,--unresolved-symbols=ignore-all", "") if RUBY_PLATFORM =~ /linux/i
31
+
32
+ ldflags.strip
33
+ end
34
+
35
+ # @return [String]
36
+ def self.generate_cflags
37
+ cflags =
38
+ [
39
+ RbConfig::CONFIG["CFLAGS"],
40
+ "-I#{RbConfig::CONFIG["rubyarchhdrdir"]}",
41
+ "-I#{RbConfig::CONFIG["rubyhdrdir"]}",
42
+ ].join(" ")
43
+
44
+ # FIXME: Workaround for Ubuntu (GitHub Actions)
45
+ if RUBY_PLATFORM =~ /linux/i
46
+ cflags.gsub!("-Wno-self-assign", "")
47
+ cflags.gsub!("-Wno-parentheses-equality", "")
48
+ cflags.gsub!("-Wno-constant-logical-operand", "")
49
+ cflags.gsub!("-Wsuggest-attribute=format", "")
50
+ cflags.gsub!("-Wold-style-definition", "")
51
+ cflags.gsub!("-Wsuggest-attribute=noreturn", "")
52
+ end
53
+
54
+ # FIXME: Workaround for Alpine
55
+ cflags.gsub!("-Wpointer-arith", "") if RUBY_PLATFORM =~ /linux-musl/i
56
+
57
+ cflags.strip
58
+ end
59
+
60
+ # @return [String]
61
+ def self.generate_goflags
62
+ "-tags=#{ruby_minor_version_build_tag}"
63
+ end
17
64
  end
18
65
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GoGem
4
- VERSION = "0.6.0"
4
+ VERSION = "0.7.0"
5
5
  end
data/sig/go_gem/mkmf.rbs CHANGED
@@ -2,6 +2,6 @@ module GoGem
2
2
  module Mkmf
3
3
  $objs: Array[untyped]
4
4
 
5
- def create_go_makefile: (String target, String? srcprefix) -> void
5
+ def create_go_makefile: (String target, ?srcprefix: String?, ?go_build_args: String?) -> void
6
6
  end
7
7
  end
@@ -30,12 +30,6 @@ module GoGem
30
30
 
31
31
  def self.build_env_vars: () -> { "GOFLAGS" => String, "CGO_CFLAGS" => String, "CGO_LDFLAGS" => String, "LD_LIBRARY_PATH" => String }
32
32
 
33
- def self.generate_goflags: () -> String
34
-
35
- def self.generate_ldflags: () -> String
36
-
37
- def self.generate_cflags: () -> String
38
-
39
33
  private
40
34
 
41
35
  def define_go_test_task: () -> void
data/sig/go_gem/util.rbs CHANGED
@@ -1,5 +1,11 @@
1
1
  module GoGem
2
2
  module Util
3
3
  def self.ruby_minor_version_build_tag: (?String ruby_version) -> String
4
+
5
+ def self.generate_ldflags: () -> String
6
+
7
+ def self.generate_cflags: () -> String
8
+
9
+ def self.generate_goflags: () -> String
4
10
  end
5
11
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: go_gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sue445
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-01-06 00:00:00.000000000 Z
10
+ date: 2025-01-24 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: Helpers for compiling Go extensions for ruby
13
13
  email: