From e7f0a0b03811835fa71b6dd64868b6abf61c9122 Mon Sep 17 00:00:00 2001 From: sue445 Date: Sat, 18 Jan 2025 00:16:16 +0900 Subject: [PATCH 1/7] nits: Move `generate_ldflags` to `GoGem::Util` --- _gem/lib/go_gem/rake_task.rb | 17 +---------------- _gem/lib/go_gem/util.rb | 14 ++++++++++++++ _gem/sig/go_gem/rake_task.rbs | 2 -- _gem/sig/go_gem/util.rbs | 2 ++ 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/_gem/lib/go_gem/rake_task.rb b/_gem/lib/go_gem/rake_task.rb index 7b2984ca..dcbf849a 100644 --- a/_gem/lib/go_gem/rake_task.rb +++ b/_gem/lib/go_gem/rake_task.rb @@ -99,7 +99,7 @@ def initialize(gem_name) # # @return [Hash] def self.build_env_vars - ldflags = generate_ldflags + ldflags = GoGem::Util.generate_ldflags cflags = generate_cflags # FIXME: Workaround for Ubuntu (GitHub Actions) @@ -129,21 +129,6 @@ def self.generate_goflags end private_class_method :generate_goflags - # @return [String] - def self.generate_ldflags - ldflags = "-L#{RbConfig::CONFIG["libdir"]} -l#{RbConfig::CONFIG["RUBY_SO_NAME"]}" - - case `#{RbConfig::CONFIG["CC"]} --version` # rubocop:disable Lint/LiteralAsCondition - when /Free Software Foundation/ - ldflags << " -Wl,--unresolved-symbols=ignore-all" - when /clang/ - ldflags << " -undefined dynamic_lookup" - end - - ldflags - end - private_class_method :generate_ldflags - # @return [String] def self.generate_cflags [ diff --git a/_gem/lib/go_gem/util.rb b/_gem/lib/go_gem/util.rb index b3a0de26..e27946ed 100644 --- a/_gem/lib/go_gem/util.rb +++ b/_gem/lib/go_gem/util.rb @@ -14,5 +14,19 @@ module Util def self.ruby_minor_version_build_tag(ruby_version = RUBY_VERSION) "ruby_#{ruby_version.to_f.to_s.gsub(".", "_")}" end + + # @return [String] + def self.generate_ldflags + ldflags = "-L#{RbConfig::CONFIG["libdir"]} -l#{RbConfig::CONFIG["RUBY_SO_NAME"]}" + + case `#{RbConfig::CONFIG["CC"]} --version` # rubocop:disable Lint/LiteralAsCondition + when /Free Software Foundation/ + ldflags << " -Wl,--unresolved-symbols=ignore-all" + when /clang/ + ldflags << " -undefined dynamic_lookup" + end + + ldflags + end end end diff --git a/_gem/sig/go_gem/rake_task.rbs b/_gem/sig/go_gem/rake_task.rbs index 7944719e..1d6c95c7 100644 --- a/_gem/sig/go_gem/rake_task.rbs +++ b/_gem/sig/go_gem/rake_task.rbs @@ -32,8 +32,6 @@ module GoGem def self.generate_goflags: () -> String - def self.generate_ldflags: () -> String - def self.generate_cflags: () -> String private diff --git a/_gem/sig/go_gem/util.rbs b/_gem/sig/go_gem/util.rbs index 0da14a18..e7060653 100644 --- a/_gem/sig/go_gem/util.rbs +++ b/_gem/sig/go_gem/util.rbs @@ -1,5 +1,7 @@ module GoGem module Util def self.ruby_minor_version_build_tag: (?String ruby_version) -> String + + def self.generate_ldflags: () -> String end end From 6f436b153e1b32fbd1e6a78f631cb23b6156f213 Mon Sep 17 00:00:00 2001 From: sue445 Date: Sat, 18 Jan 2025 00:18:18 +0900 Subject: [PATCH 2/7] nits: Move to `GoGem::Util.generate_ldflags` --- _gem/lib/go_gem/rake_task.rb | 1 - _gem/lib/go_gem/util.rb | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/_gem/lib/go_gem/rake_task.rb b/_gem/lib/go_gem/rake_task.rb index dcbf849a..565eaeab 100644 --- a/_gem/lib/go_gem/rake_task.rb +++ b/_gem/lib/go_gem/rake_task.rb @@ -110,7 +110,6 @@ def self.build_env_vars cflags.gsub!("-Wsuggest-attribute=format", "") cflags.gsub!("-Wold-style-definition", "") cflags.gsub!("-Wsuggest-attribute=noreturn", "") - ldflags.gsub!("-Wl,--unresolved-symbols=ignore-all", "") end ld_library_path = RbConfig::CONFIG["libdir"].to_s diff --git a/_gem/lib/go_gem/util.rb b/_gem/lib/go_gem/util.rb index e27946ed..606b67a6 100644 --- a/_gem/lib/go_gem/util.rb +++ b/_gem/lib/go_gem/util.rb @@ -26,6 +26,9 @@ def self.generate_ldflags ldflags << " -undefined dynamic_lookup" end + # FIXME: Workaround for Ubuntu (GitHub Actions) + ldflags.gsub!("-Wl,--unresolved-symbols=ignore-all", "") if RUBY_PLATFORM =~ /linux/i + ldflags end end From d211df02d53ad3236d75fe6d90830827c742266f Mon Sep 17 00:00:00 2001 From: sue445 Date: Sat, 18 Jan 2025 00:20:26 +0900 Subject: [PATCH 3/7] nits: Move to `GoGem::Util.generate_cflags` --- _gem/lib/go_gem/rake_task.rb | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/_gem/lib/go_gem/rake_task.rb b/_gem/lib/go_gem/rake_task.rb index 565eaeab..da84f6be 100644 --- a/_gem/lib/go_gem/rake_task.rb +++ b/_gem/lib/go_gem/rake_task.rb @@ -102,16 +102,6 @@ def self.build_env_vars ldflags = GoGem::Util.generate_ldflags cflags = generate_cflags - # FIXME: Workaround for Ubuntu (GitHub Actions) - if RUBY_PLATFORM =~ /linux/i - cflags.gsub!("-Wno-self-assign", "") - cflags.gsub!("-Wno-parentheses-equality", "") - cflags.gsub!("-Wno-constant-logical-operand", "") - cflags.gsub!("-Wsuggest-attribute=format", "") - cflags.gsub!("-Wold-style-definition", "") - cflags.gsub!("-Wsuggest-attribute=noreturn", "") - end - ld_library_path = RbConfig::CONFIG["libdir"].to_s { @@ -130,11 +120,27 @@ def self.generate_goflags # @return [String] def self.generate_cflags - [ - RbConfig::CONFIG["CFLAGS"], - "-I#{RbConfig::CONFIG["rubyarchhdrdir"]}", - "-I#{RbConfig::CONFIG["rubyhdrdir"]}", - ].join(" ") + cflags = + [ + RbConfig::CONFIG["CFLAGS"], + "-I#{RbConfig::CONFIG["rubyarchhdrdir"]}", + "-I#{RbConfig::CONFIG["rubyhdrdir"]}", + ].join(" ") + + # FIXME: Workaround for Ubuntu (GitHub Actions) + if RUBY_PLATFORM =~ /linux/i + cflags.gsub!("-Wno-self-assign", "") + cflags.gsub!("-Wno-parentheses-equality", "") + cflags.gsub!("-Wno-constant-logical-operand", "") + cflags.gsub!("-Wsuggest-attribute=format", "") + cflags.gsub!("-Wold-style-definition", "") + cflags.gsub!("-Wsuggest-attribute=noreturn", "") + end + + # FIXME: Workaround for Alpine + cflags.gsub!("-Wpointer-arith", "") if RUBY_PLATFORM =~ /linux-musl/i + + cflags end private_class_method :generate_cflags From 4e5b0a638dd17171127f4fe6d172036ffb9d5e1c Mon Sep 17 00:00:00 2001 From: sue445 Date: Sat, 18 Jan 2025 00:30:00 +0900 Subject: [PATCH 4/7] nits: strip flags --- _gem/lib/go_gem/rake_task.rb | 2 +- _gem/lib/go_gem/util.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_gem/lib/go_gem/rake_task.rb b/_gem/lib/go_gem/rake_task.rb index da84f6be..a538e93d 100644 --- a/_gem/lib/go_gem/rake_task.rb +++ b/_gem/lib/go_gem/rake_task.rb @@ -140,7 +140,7 @@ def self.generate_cflags # FIXME: Workaround for Alpine cflags.gsub!("-Wpointer-arith", "") if RUBY_PLATFORM =~ /linux-musl/i - cflags + cflags.strip end private_class_method :generate_cflags diff --git a/_gem/lib/go_gem/util.rb b/_gem/lib/go_gem/util.rb index 606b67a6..fe892bd3 100644 --- a/_gem/lib/go_gem/util.rb +++ b/_gem/lib/go_gem/util.rb @@ -29,7 +29,7 @@ def self.generate_ldflags # FIXME: Workaround for Ubuntu (GitHub Actions) ldflags.gsub!("-Wl,--unresolved-symbols=ignore-all", "") if RUBY_PLATFORM =~ /linux/i - ldflags + ldflags.strip end end end From 2d87892c9c84c44377a65b6bcb7779af10304a4f Mon Sep 17 00:00:00 2001 From: sue445 Date: Sat, 18 Jan 2025 00:28:30 +0900 Subject: [PATCH 5/7] Use `GoGem::Util.generate_ldflags` in `create_go_makefile` --- _gem/lib/go_gem/mkmf.rb | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/_gem/lib/go_gem/mkmf.rb b/_gem/lib/go_gem/mkmf.rb index 14305e95..894dd1ac 100644 --- a/_gem/lib/go_gem/mkmf.rb +++ b/_gem/lib/go_gem/mkmf.rb @@ -28,13 +28,7 @@ def $objs.empty?; false; end create_makefile(target, srcprefix) - case `#{RbConfig::CONFIG["CC"]} --version` # rubocop:disable Lint/LiteralAsCondition - when /Free Software Foundation/ - ldflags = "-Wl,--unresolved-symbols=ignore-all" - when /clang/ - ldflags = "-undefined dynamic_lookup" - end - + ldflags = GoGem::Util.generate_ldflags current_dir = File.expand_path(".") goflags = "-tags=#{GoGem::Util.ruby_minor_version_build_tag}" From 2185d639b73ad67bd0cf4443f2c19e1fddd7e85c Mon Sep 17 00:00:00 2001 From: sue445 Date: Fri, 24 Jan 2025 22:58:49 +0900 Subject: [PATCH 6/7] Move to `GoGem::Util` --- _gem/lib/go_gem/rake_task.rb | 36 ++--------------------------------- _gem/lib/go_gem/util.rb | 30 +++++++++++++++++++++++++++++ _gem/sig/go_gem/rake_task.rbs | 4 ---- _gem/sig/go_gem/util.rbs | 4 ++++ 4 files changed, 36 insertions(+), 38 deletions(-) diff --git a/_gem/lib/go_gem/rake_task.rb b/_gem/lib/go_gem/rake_task.rb index a538e93d..c7d8665c 100644 --- a/_gem/lib/go_gem/rake_task.rb +++ b/_gem/lib/go_gem/rake_task.rb @@ -100,50 +100,18 @@ def initialize(gem_name) # @return [Hash] def self.build_env_vars ldflags = GoGem::Util.generate_ldflags - cflags = generate_cflags + cflags = GoGem::Util.generate_cflags ld_library_path = RbConfig::CONFIG["libdir"].to_s { - "GOFLAGS" => generate_goflags, + "GOFLAGS" => GoGem::Util.generate_goflags, "CGO_CFLAGS" => cflags, "CGO_LDFLAGS" => ldflags, "LD_LIBRARY_PATH" => ld_library_path, } end - # @return [String] - def self.generate_goflags - "-tags=#{GoGem::Util.ruby_minor_version_build_tag}" - end - private_class_method :generate_goflags - - # @return [String] - def self.generate_cflags - cflags = - [ - RbConfig::CONFIG["CFLAGS"], - "-I#{RbConfig::CONFIG["rubyarchhdrdir"]}", - "-I#{RbConfig::CONFIG["rubyhdrdir"]}", - ].join(" ") - - # FIXME: Workaround for Ubuntu (GitHub Actions) - if RUBY_PLATFORM =~ /linux/i - cflags.gsub!("-Wno-self-assign", "") - cflags.gsub!("-Wno-parentheses-equality", "") - cflags.gsub!("-Wno-constant-logical-operand", "") - cflags.gsub!("-Wsuggest-attribute=format", "") - cflags.gsub!("-Wold-style-definition", "") - cflags.gsub!("-Wsuggest-attribute=noreturn", "") - end - - # FIXME: Workaround for Alpine - cflags.gsub!("-Wpointer-arith", "") if RUBY_PLATFORM =~ /linux-musl/i - - cflags.strip - end - private_class_method :generate_cflags - # @yield def within_target_dir Dir.chdir(target_dir) do # rubocop:disable Style/ExplicitBlockArgument diff --git a/_gem/lib/go_gem/util.rb b/_gem/lib/go_gem/util.rb index fe892bd3..c0a40e24 100644 --- a/_gem/lib/go_gem/util.rb +++ b/_gem/lib/go_gem/util.rb @@ -31,5 +31,35 @@ def self.generate_ldflags ldflags.strip end + + # @return [String] + def self.generate_cflags + cflags = + [ + RbConfig::CONFIG["CFLAGS"], + "-I#{RbConfig::CONFIG["rubyarchhdrdir"]}", + "-I#{RbConfig::CONFIG["rubyhdrdir"]}", + ].join(" ") + + # FIXME: Workaround for Ubuntu (GitHub Actions) + if RUBY_PLATFORM =~ /linux/i + cflags.gsub!("-Wno-self-assign", "") + cflags.gsub!("-Wno-parentheses-equality", "") + cflags.gsub!("-Wno-constant-logical-operand", "") + cflags.gsub!("-Wsuggest-attribute=format", "") + cflags.gsub!("-Wold-style-definition", "") + cflags.gsub!("-Wsuggest-attribute=noreturn", "") + end + + # FIXME: Workaround for Alpine + cflags.gsub!("-Wpointer-arith", "") if RUBY_PLATFORM =~ /linux-musl/i + + cflags.strip + end + + # @return [String] + def self.generate_goflags + "-tags=#{ruby_minor_version_build_tag}" + end end end diff --git a/_gem/sig/go_gem/rake_task.rbs b/_gem/sig/go_gem/rake_task.rbs index 1d6c95c7..b293c777 100644 --- a/_gem/sig/go_gem/rake_task.rbs +++ b/_gem/sig/go_gem/rake_task.rbs @@ -30,10 +30,6 @@ module GoGem def self.build_env_vars: () -> { "GOFLAGS" => String, "CGO_CFLAGS" => String, "CGO_LDFLAGS" => String, "LD_LIBRARY_PATH" => String } - def self.generate_goflags: () -> String - - def self.generate_cflags: () -> String - private def define_go_test_task: () -> void diff --git a/_gem/sig/go_gem/util.rbs b/_gem/sig/go_gem/util.rbs index e7060653..2e45578c 100644 --- a/_gem/sig/go_gem/util.rbs +++ b/_gem/sig/go_gem/util.rbs @@ -3,5 +3,9 @@ module GoGem def self.ruby_minor_version_build_tag: (?String ruby_version) -> String def self.generate_ldflags: () -> String + + def self.generate_cflags: () -> String + + def self.generate_goflags: () -> String end end From d613aadea632adb512f2ca0939bbf653c173d313 Mon Sep 17 00:00:00 2001 From: sue445 Date: Fri, 24 Jan 2025 23:03:17 +0900 Subject: [PATCH 7/7] Resolved Lint/RedundantCopDisableDirective --- _gem/lib/go_gem/rake_task.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_gem/lib/go_gem/rake_task.rb b/_gem/lib/go_gem/rake_task.rb index c7d8665c..5ee51c70 100644 --- a/_gem/lib/go_gem/rake_task.rb +++ b/_gem/lib/go_gem/rake_task.rb @@ -44,7 +44,7 @@ module GoGem # end # end # end - class RakeTask < ::Rake::TaskLib # rubocop:disable Metrics/ClassLength + class RakeTask < ::Rake::TaskLib DEFAULT_TASK_NAMESPACE = :go DEFAULT_GO_BIN_PATH = "go"