From 88e93c454ab78f841776c6eae2a8f76fac5a8dc0 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Mon, 28 Jul 2025 12:34:49 -0700 Subject: [PATCH 1/3] Add musl binary gem support This will allow Alpine-based containers to use the precompiled gems without having to install `gcompat`. Relates to https://github.com/ged/ruby-pg/issues/648 --- .github/workflows/binary-gems.yml | 16 +++++++++------- Rakefile | 6 ++++-- spec/env/Dockerfile.alpine | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/.github/workflows/binary-gems.yml b/.github/workflows/binary-gems.yml index b15849b4e..fbed528d2 100644 --- a/.github/workflows/binary-gems.yml +++ b/.github/workflows/binary-gems.yml @@ -27,8 +27,10 @@ jobs: - platform: "x64-mingw-ucrt" - platform: "x64-mingw32" - platform: "x86-mingw32" - - platform: "x86_64-linux" - - platform: "aarch64-linux" + - platform: "x86_64-linux-gnu" + - platform: "x86_64-linux-musl" + - platform: "aarch64-linux-gnu" + - platform: "aarch64-linux-musl" - platform: "x86_64-darwin" - platform: "arm64-darwin" steps: @@ -75,10 +77,10 @@ jobs: PGVERSION: 16.6-1-windows-x64 - os: ubuntu-latest ruby: "3.2" - platform: "x86_64-linux" + platform: "x86_64-linux-gnu" - os: ubuntu-24.04-arm ruby: "3.4" - platform: "aarch64-linux" + platform: "aarch64-linux-gnu" - os: macos-latest ruby: "3.4" platform: "arm64-darwin" @@ -164,11 +166,11 @@ jobs: include: - from_image: fedora:39 image_platform: linux/x86_64 - gem_platform: x86_64-linux + gem_platform: x86_64-linux-gnu dockerfile: centos - from_image: alpine image_platform: linux/x86_64 - gem_platform: x86_64-linux + gem_platform: x86_64-linux-musl dockerfile: alpine runs-on: ubuntu-latest @@ -191,7 +193,7 @@ jobs: fail-fast: false matrix: include: - - gem_platform: x86_64-linux + - gem_platform: x86_64-linux-gnu runs-on: ubuntu-latest steps: diff --git a/Rakefile b/Rakefile index 823e36efc..e0d22e5c2 100644 --- a/Rakefile +++ b/Rakefile @@ -49,8 +49,10 @@ CrossLibraries = [ ['x64-mingw-ucrt', 'mingw64', 'x86_64-w64-mingw32'], ['x86-mingw32', 'mingw', 'i686-w64-mingw32'], ['x64-mingw32', 'mingw64', 'x86_64-w64-mingw32'], - ['x86_64-linux', 'linux-x86_64', 'x86_64-linux-gnu'], - ['aarch64-linux', 'linux-aarch64', 'aarch64-linux-gnu'], + ['x86_64-linux-gnu', 'linux-x86_64', 'x86_64-linux-gnu'], + ['x86_64-linux-musl', 'linux-x86_64', 'x86_64-unknown-linux-musl'], + ['aarch64-linux-gnu', 'linux-aarch64', 'aarch64-linux-gnu'], + ['aarch64-linux-musl', 'linux-aarch64', 'aarch64-linux-musl'], ['x86_64-darwin', 'darwin64-x86_64', 'x86_64-apple-darwin'], ['arm64-darwin', 'darwin64-arm64', 'arm64-apple-darwin'], ].map do |platform, openssl_config, toolchain| diff --git a/spec/env/Dockerfile.alpine b/spec/env/Dockerfile.alpine index 576cf7528..ab05e4314 100644 --- a/spec/env/Dockerfile.alpine +++ b/spec/env/Dockerfile.alpine @@ -2,7 +2,7 @@ ARG from_image FROM ${from_image} RUN uname -a -RUN apk add ruby ruby-rake ruby-dev git gcc make musl-dev gcompat postgresql16 sudo +RUN apk add ruby ruby-rake ruby-dev git gcc make musl-dev postgresql16 sudo RUN git config --global --add safe.directory /build RUN ruby --version From 7bbc87f17c6610a053f1d3b558f7ebe0eb2fa17b Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Mon, 28 Jul 2025 23:49:20 -0700 Subject: [PATCH 2/3] Bump Ruby version used in Yugabyte test RubyGems version >= 3.3.22 is needed, so just bump the Ruby version from 3.0 to 3.1. This fixes https://github.com/ged/ruby-pg/actions/runs/16579089729/job/46916537537. --- misc/yugabyte/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/yugabyte/docker-compose.yml b/misc/yugabyte/docker-compose.yml index 03d4560cc..eb523e233 100644 --- a/misc/yugabyte/docker-compose.yml +++ b/misc/yugabyte/docker-compose.yml @@ -14,7 +14,7 @@ services: start_period: 10s pg: - image: ruby:3.0 + image: ruby:3.1 working_dir: /app volumes: - .:/app From a1a593015c87939c6719cc510fa4a26d7bd374b1 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Fri, 1 Aug 2025 10:31:22 -0700 Subject: [PATCH 3/3] Keep `linux` binary gem naming for GNU builds As discussed in https://github.com/ged/ruby-pg/pull/649#issuecomment-3145123266. --- .github/workflows/binary-gems.yml | 18 +++++++++++------- Rakefile | 4 ++-- spec/env/Dockerfile.alpine | 3 +++ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/.github/workflows/binary-gems.yml b/.github/workflows/binary-gems.yml index fbed528d2..614c30c17 100644 --- a/.github/workflows/binary-gems.yml +++ b/.github/workflows/binary-gems.yml @@ -27,9 +27,9 @@ jobs: - platform: "x64-mingw-ucrt" - platform: "x64-mingw32" - platform: "x86-mingw32" - - platform: "x86_64-linux-gnu" + - platform: "x86_64-linux" - platform: "x86_64-linux-musl" - - platform: "aarch64-linux-gnu" + - platform: "aarch64-linux" - platform: "aarch64-linux-musl" - platform: "x86_64-darwin" - platform: "arm64-darwin" @@ -77,10 +77,10 @@ jobs: PGVERSION: 16.6-1-windows-x64 - os: ubuntu-latest ruby: "3.2" - platform: "x86_64-linux-gnu" + platform: "x86_64-linux" - os: ubuntu-24.04-arm ruby: "3.4" - platform: "aarch64-linux-gnu" + platform: "aarch64-linux" - os: macos-latest ruby: "3.4" platform: "arm64-darwin" @@ -166,8 +166,12 @@ jobs: include: - from_image: fedora:39 image_platform: linux/x86_64 - gem_platform: x86_64-linux-gnu + gem_platform: x86_64-linux dockerfile: centos + - from_image: alpine + image_platform: linux/x86_64 + gem_platform: x86_64-linux + dockerfile: alpine - from_image: alpine image_platform: linux/x86_64 gem_platform: x86_64-linux-musl @@ -183,7 +187,7 @@ jobs: - name: Build image and Run tests run: | docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker build --rm --platform ${{matrix.image_platform}} --build-arg from_image=${{matrix.from_image}} -t ruby-test -f spec/env/Dockerfile.${{matrix.dockerfile}} . + docker build --rm --platform ${{matrix.image_platform}} --build-arg from_image=${{matrix.from_image}} --build-arg gem_platform=${{matrix.gem_platform}} -t ruby-test -f spec/env/Dockerfile.${{matrix.dockerfile}} . docker run --rm -t --network=host -v `pwd`:/build ruby-test job_binary_yugabyte: @@ -193,7 +197,7 @@ jobs: fail-fast: false matrix: include: - - gem_platform: x86_64-linux-gnu + - gem_platform: x86_64-linux runs-on: ubuntu-latest steps: diff --git a/Rakefile b/Rakefile index e0d22e5c2..f629bddc6 100644 --- a/Rakefile +++ b/Rakefile @@ -49,9 +49,9 @@ CrossLibraries = [ ['x64-mingw-ucrt', 'mingw64', 'x86_64-w64-mingw32'], ['x86-mingw32', 'mingw', 'i686-w64-mingw32'], ['x64-mingw32', 'mingw64', 'x86_64-w64-mingw32'], - ['x86_64-linux-gnu', 'linux-x86_64', 'x86_64-linux-gnu'], + ['x86_64-linux', 'linux-x86_64', 'x86_64-linux-gnu'], ['x86_64-linux-musl', 'linux-x86_64', 'x86_64-unknown-linux-musl'], - ['aarch64-linux-gnu', 'linux-aarch64', 'aarch64-linux-gnu'], + ['aarch64-linux', 'linux-aarch64', 'aarch64-linux-gnu'], ['aarch64-linux-musl', 'linux-aarch64', 'aarch64-linux-musl'], ['x86_64-darwin', 'darwin64-x86_64', 'x86_64-apple-darwin'], ['arm64-darwin', 'darwin64-arm64', 'arm64-apple-darwin'], diff --git a/spec/env/Dockerfile.alpine b/spec/env/Dockerfile.alpine index ab05e4314..659e017d6 100644 --- a/spec/env/Dockerfile.alpine +++ b/spec/env/Dockerfile.alpine @@ -1,8 +1,11 @@ ARG from_image +ARG gem_platform FROM ${from_image} RUN uname -a RUN apk add ruby ruby-rake ruby-dev git gcc make musl-dev postgresql16 sudo +# Conditionally install gcompat only for x86_64-linux (not x86_64-linux-musl) +RUN if [ "$gem_platform" = "x86_64-linux" ]; then apk add gcompat; fi RUN git config --global --add safe.directory /build RUN ruby --version