Skip to content

Commit

Permalink
Fix ruby 3.4 compatibility
Browse files Browse the repository at this point in the history
  • Loading branch information
PikachuEXE committed Dec 20, 2024
1 parent 91bb771 commit 7eb8e47
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 7 deletions.
13 changes: 10 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,18 @@ jobs:
strategy:
fail-fast: false
matrix:
ruby: ['2.7', '3.0', '3.1', '3.2', '3.3'] # 3.4+ is not yet supported by google-protobuf
ruby:
- '2.7'
- '3.0'
- '3.1'
- '3.2'
- '3.3'
# Note: 3.4+ is not yet supported by google-protobuf
- '3.4.0-rc1'
os: ['ubuntu-latest', 'windows-latest']
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
Expand All @@ -21,4 +28,4 @@ jobs:
run: bundle exec rake test
- name: RuboCop
run: bundle exec rake lint
if: matrix.ruby != '3.1' && matrix.ruby != '3.2' && matrix.ruby != '3.3'
if: matrix.ruby != '3.1' && matrix.ruby != '3.2' && matrix.ruby != '3.3' && matrix.ruby != '3.4.0-rc1'
32 changes: 28 additions & 4 deletions ext/pg_query/extconf.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,36 @@
$INCFLAGS = "-I#{File.join(__dir__, 'include', 'postgres', 'port', 'win32_msvc')} " + $INCFLAGS
end

SYMFILE =
if RUBY_PLATFORM =~ /freebsd/
File.join(__dir__, 'pg_query_ruby_freebsd.sym')
def have_ruby_abi_version()
# ruby_abi_version is only available in development versions: https://github.com/ruby/ruby/pull/6231
return false if RUBY_PATCHLEVEL >= 0

m = /(\d+)\.(\d+)/.match(RUBY_VERSION)
if m.nil?
puts "Failed to parse ruby version: #{RUBY_VERSION}. Assuming ruby_abi_version symbol is NOT present."
return false
end
major = m[1].to_i
minor = m[2].to_i
if major >= 3 and minor >= 2
puts "Ruby version #{RUBY_VERSION} >= 3.2. Assuming ruby_abi_version symbol is present."
return true
end
puts "Ruby version #{RUBY_VERSION} < 3.2. Assuming ruby_abi_version symbol is NOT present."
false
end

def ext_export_filename()
name = if RUBY_PLATFORM =~ /freebsd/
'pg_query_ruby_freebsd'
elsif RUBY_PLATFORM !~ /cygwin|mswin|mingw|bccwin|wince|emx/
File.join(__dir__, 'pg_query_ruby.sym')
'pg_query_ruby'
end
name += '-with-ruby-abi-version' if have_ruby_abi_version()
"#{name}.sym"
end

SYMFILE = File.join(__dir__, ext_export_filename())

if RUBY_PLATFORM =~ /darwin/
$DLDFLAGS << " -Wl,-exported_symbols_list #{SYMFILE}" unless defined?(::Rubinius)
Expand Down
2 changes: 2 additions & 0 deletions ext/pg_query/pg_query_ruby-with-ruby-abi-version.sym
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
_Init_pg_query
_ruby_abi_version
2 changes: 2 additions & 0 deletions ext/pg_query/pg_query_ruby_freebsd-with-ruby-abi-version.sym
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Init_pg_query
_ruby_abi_version

0 comments on commit 7eb8e47

Please sign in to comment.