diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 66ca4baa..2a9f95e3 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -4,10 +4,6 @@ name: Build and push docker images on: workflow_dispatch: push: - tags: - - "v*" - branches: - - "main" concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -33,7 +29,6 @@ jobs: - ruby_target: arm64-darwin - ruby_target: x64-mingw32 - ruby_target: x64-mingw-ucrt - # - ruby_target: x86-mingw32 # - ruby_target: x86-linux steps: - uses: actions/checkout@v4 @@ -100,19 +95,65 @@ jobs: cache-to: ${{ secrets.DOCKER_HUB_USERNAME }}/${{ matrix.platform.ruby_target }}:cache-${{ steps.vars.outputs.rb-sys-version }} - name: Run tests + shell: bash run: | + echo "::group::Install deps" + rb_sys_dock_cache_dir="$HOME/.cache/rb-sys-dock" sudo chmod 777 tmp/oxi-test cd tmp/oxi-test - - gem install rb_sys - cargo update -p rb-sys - cargo update -p rb-sys-build - cargo update -p rb-sys-env - export RB_SYS_DOCK_UID=$(id -u) - export RB_SYS_DOCK_GID=$(id -g) - export RCD_IMAGE=${{ secrets.DOCKER_HUB_USERNAME }}/${{ matrix.platform.ruby_target }}:sha-${{ github.sha }} - - rb-sys-dock --platform ${{ matrix.platform.ruby_target }} --build --version "sha-$GITHUB_SHA" + sed -i "s|gem 'rb_sys', '.*'|gem 'rb_sys', path: '$rb_sys_gem_path/gem'|" Gemfile + + mkdir .cargo + echo "[patch.crates-io]" >> .cargo/config.toml + for package in rb-sys rb-sys-build rb-sys-env; do + echo "$package = { git = 'https://github.com/oxidize-rb/rb-sys', rev = '$GITHUB_SHA' }" >> .cargo/config.toml + cargo update -p "$package" + done + + mkdir -p "$rb_sys_dock_cache_dir" + export RB_SYS_DOCK_UID="$(id -u)" + export RB_SYS_DOCK_GID="$(id -g)" + export RB_SYS_DOCK_CACHE_DIR="$rb_sys_dock_cache_dir" + bundle install --jobs 4 --retry 3 + echo "::endgroup::" + + echo "::group::Cross build oxi-test gem (sha-$GITHUB_SHA)" + bundle exec rb-sys-dock --platform ${{ matrix.platform.ruby_target }} --build --tag "sha-$GITHUB_SHA" --verbose + echo "::endgroup::" + + if [ -f pkg/oxi-test-0.1.0-${{ matrix.platform.ruby_target }}.gem ]; then + echo "::group::Unpack oxi-test gem for testing" + gem unpack pkg/oxi-test-0.1.0-${{ matrix.platform.ruby_target }}.gem --target=tmp + tree tmp/oxi-test-0.1.0-${{ matrix.platform.ruby_target }} + echo "::endgroup::" + echo "✅ oxi-test gem built successfully" + else + echo "::group::Debug directory" + tree . + echo "::endgroup::" + echo "❌ oxi-test gem build failed" + exit 1 + fi + + - name: Analyze image bloat + run: | + image="${{ secrets.DOCKER_HUB_USERNAME }}/${{ matrix.platform.ruby_target }}:sha-$GITHUB_SHA" + lowest_efficiency="0.95" + highest_user_wasted_percent="0.05" + + case "${{ matrix.platform.ruby_target }}" in + x86_64-linux) + lowest_efficiency="0.82" + highest_user_wasted_percent="0.27" + ;; + esac + + echo "Running dive on $image with max wasted percent of $lowest_efficiency" + + docker run --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive "$image" \ + --ci \ + --lowestEfficiency "$lowest_efficiency" \ + --highestUserWastedPercent "$highest_user_wasted_percent" - name: Docker push uses: docker/build-push-action@v5 diff --git a/docker/Dockerfile.aarch64-linux b/docker/Dockerfile.aarch64-linux index 74a31bbd..53880034 100644 --- a/docker/Dockerfile.aarch64-linux +++ b/docker/Dockerfile.aarch64-linux @@ -16,21 +16,11 @@ ENV RUBY_TARGET="aarch64-linux" \ CMAKE_aarch64_unknown_linux_gnu="/opt/cmake/bin/cmake" \ CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER="/usr/bin/aarch64-linux-gnu-gcc" -COPY setup/lib.sh /lib.sh - -COPY setup/rubygems.sh / -RUN /rubygems.sh - -COPY setup/cmake.sh / -RUN /cmake.sh - -RUN bash -c "source /lib.sh && install_packages libclang-dev clang llvm-dev libc6-arm64-cross libc6-dev-arm64-cross" - -COPY setup/rustup.sh / -RUN /rustup.sh - -COPY setup/rubybashrc.sh / -RUN /rubybashrc.sh - -COPY setup/rb-sys-dock.sh / -RUN /rb-sys-dock.sh +COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh / + +RUN bash -c "source /lib.sh && install_packages libclang-dev clang llvm-dev libc6-arm64-cross libc6-dev-arm64-cross" && \ + /rustup.sh && \ + /rubygems.sh && \ + /cmake.sh && \ + /rubybashrc.sh && \ + /rb-sys-dock.sh diff --git a/docker/Dockerfile.aarch64-linux-musl b/docker/Dockerfile.aarch64-linux-musl index 17c5da85..9fd53d37 100644 --- a/docker/Dockerfile.aarch64-linux-musl +++ b/docker/Dockerfile.aarch64-linux-musl @@ -1,4 +1,4 @@ -FROM ghcr.io/rake-compiler/rake-compiler-dock-image:snapshot-mri-aarch64-linux-musl +FROM ghcr.io/rake-compiler/rake-compiler-dock-image:1.5.0-mri-aarch64-linux-musl ENV RUBY_TARGET="aarch64-linux-musl" \ RUST_TARGET="aarch64-unknown-linux-musl" \ @@ -17,21 +17,11 @@ ENV RUBY_TARGET="aarch64-linux-musl" \ BINDGEN_EXTRA_CLANG_ARGS_aarch64_unknown_linux_musl="--sysroot=/usr/aarch64-linux-musl" \ CMAKE_aarch64_unknown_linux_musl="cmake" -COPY setup/lib.sh /lib.sh +COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh / -COPY setup/rustup.sh / -RUN /rustup.sh - -COPY setup/rubygems.sh / -RUN /rubygems.sh - -COPY setup/cmake.sh / -RUN /cmake.sh - -RUN bash -c "source /lib.sh && install_packages libclang-12-dev llvm-12-dev" - -COPY setup/rubybashrc.sh / -RUN /rubybashrc.sh - -COPY setup/rb-sys-dock.sh / -RUN /rb-sys-dock.sh +RUN bash -c "source /lib.sh && install_packages libclang-12-dev llvm-12-dev" && \ + /rustup.sh && \ + /rubygems.sh && \ + /cmake.sh && \ + /rubybashrc.sh && \ + /rb-sys-dock.sh diff --git a/docker/Dockerfile.arm-linux b/docker/Dockerfile.arm-linux index c2a71a03..6a0cf163 100644 --- a/docker/Dockerfile.arm-linux +++ b/docker/Dockerfile.arm-linux @@ -15,21 +15,11 @@ ENV RUBY_TARGET="arm-linux" \ PKG_CONFIG_PATH="/usr/lib/arm-linux-gnueabihf/pkgconfig" \ CMAKE_arm_unknown_linux_gnueabihf="/opt/cmake/bin/cmake" -COPY setup/lib.sh /lib.sh - -COPY setup/rustup.sh / -RUN /rustup.sh - -COPY setup/rubygems.sh / -RUN /rubygems.sh - -COPY setup/cmake.sh / -RUN /cmake.sh - -RUN bash -c "source /lib.sh && install_packages libclang-dev clang llvm-dev libc6-armhf-cross libc6-dev-armhf-cross" - -COPY setup/rubybashrc.sh / -RUN /rubybashrc.sh - -COPY setup/rb-sys-dock.sh / -RUN /rb-sys-dock.sh +COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh / + +RUN bash -c "source /lib.sh && install_packages libclang-dev clang llvm-dev libc6-armhf-cross libc6-dev-armhf-cross" && \ + /rustup.sh && \ + /rubygems.sh && \ + /cmake.sh && \ + /rubybashrc.sh && \ + /rb-sys-dock.sh diff --git a/docker/Dockerfile.arm64-darwin b/docker/Dockerfile.arm64-darwin index fd42cc97..2d3056f7 100644 --- a/docker/Dockerfile.arm64-darwin +++ b/docker/Dockerfile.arm64-darwin @@ -16,24 +16,12 @@ ENV RUBY_TARGET="arm64-darwin" \ PKG_CONFIG="aarch64-apple-darwin-pkg-config" \ CMAKE_aarch64_apple_darwin="/opt/cmake/bin/cmake" -COPY setup/lib.sh /lib.sh - -COPY setup/cmake.sh / -RUN /cmake.sh - -COPY setup/rustup.sh / -RUN /rustup.sh - -COPY setup/rubybashrc.sh / -RUN /rubybashrc.sh - -COPY setup/rb-sys-dock.sh / -RUN /rb-sys-dock.sh - -COPY setup/rubygems.sh / -RUN /rubygems.sh - -RUN bash -c "source /lib.sh && install_packages libclang-dev clang libc6-arm64-cross libc6-dev-arm64-cross" - -COPY setup/osxcross-shebang.sh / -RUN /osxcross-shebang.sh +COPY setup/lib.sh setup/osxcross-shebang.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh / + +RUN bash -c "source /lib.sh && install_packages libclang-dev clang libc6-arm64-cross libc6-dev-arm64-cross" && \ + /rustup.sh && \ + /rubygems.sh && \ + /cmake.sh && \ + /rubybashrc.sh && \ + /rb-sys-dock.sh && \ + /osxcross-shebang.sh diff --git a/docker/Dockerfile.x64-mingw-ucrt b/docker/Dockerfile.x64-mingw-ucrt index 232c980c..4457ac1c 100644 --- a/docker/Dockerfile.x64-mingw-ucrt +++ b/docker/Dockerfile.x64-mingw-ucrt @@ -15,21 +15,11 @@ ENV RUBY_TARGET="x64-mingw-ucrt" \ PKG_CONFIG_PATH_x86_64_pc_windows_gnu="/usr/x86_64-w64-mingw32/pkgconfig" \ CMAKE_x86_64_pc_windows_gnu="/opt/cmake/bin/cmake" -COPY setup/lib.sh /lib.sh - -COPY setup/rustup.sh / -RUN /rustup.sh - -COPY setup/rubygems.sh / -RUN /rubygems.sh - -COPY setup/cmake.sh / -RUN /cmake.sh - -RUN bash -c "source /lib.sh && install_packages libclang-dev" - -COPY setup/rubybashrc.sh / -RUN /rubybashrc.sh - -COPY setup/rb-sys-dock.sh / -RUN /rb-sys-dock.sh +COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh / + +RUN bash -c "source /lib.sh && install_packages libclang-dev" && \ + /rustup.sh && \ + /rubygems.sh && \ + /cmake.sh && \ + /rubybashrc.sh && \ + /rb-sys-dock.sh diff --git a/docker/Dockerfile.x64-mingw32 b/docker/Dockerfile.x64-mingw32 index 0823719c..a561b5a3 100644 --- a/docker/Dockerfile.x64-mingw32 +++ b/docker/Dockerfile.x64-mingw32 @@ -15,21 +15,12 @@ ENV RUBY_TARGET="x64-mingw32" \ PKG_CONFIG_PATH_x86_64_pc_windows_gnu="/usr/x86_64-w64-mingw32/pkgconfig" \ CMAKE_x86_64_pc_windows_gnu="/opt/cmake/bin/cmake" -COPY setup/lib.sh /lib.sh +COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh / -COPY setup/rustup.sh / -RUN /rustup.sh +RUN bash -c "source /lib.sh && install_packages libclang-dev" && \ + /rustup.sh && \ + /rubygems.sh && \ + /cmake.sh && \ + /rubybashrc.sh && \ + /rb-sys-dock.sh -COPY setup/rubygems.sh / -RUN /rubygems.sh - -COPY setup/cmake.sh / -RUN /cmake.sh - -RUN bash -c "source /lib.sh && install_packages libclang-dev" - -COPY setup/rubybashrc.sh / -RUN /rubybashrc.sh - -COPY setup/rb-sys-dock.sh / -RUN /rb-sys-dock.sh diff --git a/docker/Dockerfile.x86-linux b/docker/Dockerfile.x86-linux index edc82bc6..0eb077b4 100644 --- a/docker/Dockerfile.x86-linux +++ b/docker/Dockerfile.x86-linux @@ -16,29 +16,20 @@ ENV RUBY_TARGET="x86-linux" \ BINDGEN_EXTRA_CLANG_ARGS_i686_unknown_linux_gnu="--sysroot=/usr -I/usr/lib/gcc/i686-redhat-linux/4.8.2/include" \ CMAKE_i686_unknown_linux_gnu="/opt/cmake/bin/cmake" -COPY setup/lib.sh /lib.sh - -RUN source /lib.sh && install_packages libedit libedit-devel g++-multilib - -COPY setup/rustup.sh / -RUN /rustup.sh i686-unknown-linux-gnu $RUST_TARGET $RUSTUP_DEFAULT_TOOLCHAIN +COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh / RUN set -ex; \ wget https://vault.centos.org/centos/8/AppStream/x86_64/os/Packages/clang-libs-12.0.1-4.module_el8.5.0+1025+93159d6c.i686.rpm \ https://vault.centos.org/centos/8/AppStream/x86_64/os/Packages/llvm-libs-12.0.1-2.module_el8.5.0+918+ed335b90.i686.rpm \ https://vault.centos.org/centos/8/BaseOS/x86_64/os/Packages/ncurses-libs-6.1-9.20180224.el8.i686.rpm; \ - rpm -Uvh --nodeps *.rpm; \ - ln -s /usr/lib/libtinfo.so.6 /usr/lib/libtinfo.so.5; \ - rm *.rpm; - -COPY setup/rubygems.sh / -RUN /rubygems.sh - -COPY setup/cmake.sh / -RUN /cmake.sh - -COPY setup/rubybashrc.sh / -RUN /rubybashrc.sh - -COPY setup/rb-sys-dock.sh / -RUN /rb-sys-dock.sh + rpm -Uvh --nodeps *.rpm && \ + ln -s /usr/lib/libtinfo.so.6 /usr/lib/libtinfo.so.5 && \ + dnf clean all && \ + bash -c "source /lib.sh && install_packages libedit libedit-devel g++-multilib" && \ + /rustup.sh i686-unknown-linux-gnu $RUST_TARGET $RUSTUP_DEFAULT_TOOLCHAIN && \ + /rubygems.sh && \ + /cmake.sh && \ + /rubybashrc.sh && \ + /rb-sys-dock.sh && \ + rm *.rpm && \ + rm -rf /var/cache/yum; diff --git a/docker/Dockerfile.x86-mingw32 b/docker/Dockerfile.x86-mingw32 index dcc145fa..fb45e351 100644 --- a/docker/Dockerfile.x86-mingw32 +++ b/docker/Dockerfile.x86-mingw32 @@ -1,5 +1,9 @@ FROM ghcr.io/rake-compiler/rake-compiler-dock-image:1.5.0-mri-x86-mingw32 +ARG LLVM_MINGW_VERSION=20231128 \ + LLVM_MINGW_SHA256=2d532648bfd202bfe5edfa8b7f6c55970f65639779f34115a9a8bfa6f7d87f0b \ + LLVM_MINGW_LIBCLANG_VERSION=14.0.0 + ENV RUBY_TARGET="x86-mingw32" \ RUST_TARGET="i686-pc-windows-gnu" \ RUSTUP_DEFAULT_TOOLCHAIN="stable" \ @@ -7,7 +11,7 @@ ENV RUBY_TARGET="x86-mingw32" \ RUSTUP_HOME="/usr/local/rustup" \ CARGO_HOME="/usr/local/cargo" \ PATH="/usr/local/cargo/bin:$PATH" \ - BINDGEN_EXTRA_CLANG_ARGS_i686_pc_windows_gnu="--sysroot=/usr/i686-w64-mingw32 -I/llvm-mingw/llvm-mingw-20220323-msvcrt-i686/include -I/llvm-mingw/llvm-mingw-20220323-msvcrt-i686/lib/clang/14.0.0/include" \ + BINDGEN_EXTRA_CLANG_ARGS_i686_pc_windows_gnu="--sysroot=/usr/i686-w64-mingw32 -I/llvm-mingw/llvm-mingw-${LLVM_MINGW_VERSION}-msvcrt-i686/include -I/llvm-mingw/llvm-mingw-${LLVM_MINGW_VERSION}-msvcrt-i686/lib/clang/${LLVM_MINGW_LIBCLANG_VERSION}/include" \ LIBCLANG_PATH="/usr/lib/llvm-10/lib/" \ CC_i686_pc_windows_gnu="i686-w64-mingw32-gcc" \ CXX_i686_pc_windows_gnu="i686-w64-mingw32-g++" \ @@ -15,27 +19,17 @@ ENV RUBY_TARGET="x86-mingw32" \ PKG_CONFIG_PATH_i686_pc_windows_gnu="/usr/i686-w64-mingw32/pkgconfig" \ CMAKE_i686_pc_windows_gnu="/opt/cmake/bin/cmake" -COPY setup/lib.sh /lib.sh - -COPY setup/rustup.sh / -RUN /rustup.sh - -COPY setup/rubygems.sh / -RUN /rubygems.sh - -COPY setup/cmake.sh / -RUN /cmake.sh - -RUN bash -c "source /lib.sh && install_packages libclang-dev" +COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh / RUN set -ex; \ - curl -Lo /llvm-mingw.zip https://github.com/mstorsjo/llvm-mingw/releases/download/20220323/llvm-mingw-20220323-msvcrt-i686.zip; \ - mkdir /llvm-mingw; \ - unzip /llvm-mingw.zip -d /llvm-mingw; \ - rm /llvm-mingw.zip; - -COPY setup/rubybashrc.sh / -RUN /rubybashrc.sh - -COPY setup/rb-sys-dock.sh / -RUN /rb-sys-dock.sh + curl -Lo /llvm-mingw.zip https://github.com/mstorsjo/llvm-mingw/releases/download/${LLVM_MINGW_VERSION}/llvm-mingw-${LLVM_MINGW_VERSION}-msvcrt-i686.zip; \ + echo "${LLVM_MINGW_SHA256} /llvm-mingw.zip" | sha256sum -c - && \ + mkdir /llvm-mingw && \ + unzip /llvm-mingw.zip -d /llvm-mingw && \ + rm /llvm-mingw.zip && \ + bash -c "source /lib.sh && install_packages libclang-dev" && \ + /rustup.sh && \ + /rubygems.sh && \ + /cmake.sh && \ + /rubybashrc.sh && \ + /rb-sys-dock.sh diff --git a/docker/Dockerfile.x86_64-darwin b/docker/Dockerfile.x86_64-darwin index 9071308d..6509daaa 100644 --- a/docker/Dockerfile.x86_64-darwin +++ b/docker/Dockerfile.x86_64-darwin @@ -1,4 +1,4 @@ -FROM ghcr.io/rake-compiler/rake-compiler-dock-image:1.4.0-mri-x86_64-darwin +FROM ghcr.io/rake-compiler/rake-compiler-dock-image:1.5.0-mri-x86_64-darwin ENV RUBY_TARGET="x86_64-darwin" \ RUST_TARGET="x86_64-apple-darwin" \ @@ -16,24 +16,12 @@ ENV RUBY_TARGET="x86_64-darwin" \ PKG_CONFIG="x86_64-apple-darwin-pkg-config" \ CMAKE_x86_64_apple_darwin="/opt/cmake/bin/cmake" -COPY setup/lib.sh /lib.sh +COPY setup/lib.sh setup/osxcross-shebang.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh / -COPY setup/cmake.sh / -RUN /cmake.sh - -COPY setup/rustup.sh / -RUN /rustup.sh - -COPY setup/rubybashrc.sh / -RUN /rubybashrc.sh - -COPY setup/rb-sys-dock.sh / -RUN /rb-sys-dock.sh - -COPY setup/rubygems.sh / -RUN /rubygems.sh - -RUN bash -c "source /lib.sh && install_packages libclang-dev clang" - -COPY setup/osxcross-shebang.sh / -RUN /osxcross-shebang.sh +RUN bash -c "source /lib.sh && install_packages libclang-dev clang" && \ + /rustup.sh && \ + /rubygems.sh && \ + /cmake.sh && \ + /rubybashrc.sh && \ + /rb-sys-dock.sh && \ + /osxcross-shebang.sh diff --git a/docker/Dockerfile.x86_64-linux b/docker/Dockerfile.x86_64-linux index 38a603ce..818b9113 100644 --- a/docker/Dockerfile.x86_64-linux +++ b/docker/Dockerfile.x86_64-linux @@ -1,4 +1,4 @@ -FROM ghcr.io/rake-compiler/rake-compiler-dock-image:1.4.0-mri-x86_64-linux +FROM ghcr.io/rake-compiler/rake-compiler-dock-image:1.5.0-mri-x86_64-linux ENV RUBY_TARGET="x86_64-linux" \ RUST_TARGET="x86_64-unknown-linux-gnu" \ @@ -14,22 +14,12 @@ ENV RUBY_TARGET="x86_64-linux" \ BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_linux_gnu="--sysroot=/usr -I/usr/lib/gcc/x86_64-redhat-linux/4.8.2/include" \ CMAKE_x86_64_unknown_linux_gnu="/opt/cmake/bin/cmake" +COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh / -COPY setup/lib.sh /lib.sh - -COPY setup/rustup.sh / -RUN /rustup.sh - -COPY setup/rubygems.sh / -RUN /rubygems.sh - -COPY setup/cmake.sh / -RUN /cmake.sh - -RUN source /lib.sh && install_packages llvm-toolset-7 - -COPY setup/rubybashrc.sh / -RUN /rubybashrc.sh - -COPY setup/rb-sys-dock.sh / -RUN /rb-sys-dock.sh +RUN bash -c "source /lib.sh && install_packages llvm-toolset-7" && \ + /rustup.sh && \ + /rubygems.sh && \ + /cmake.sh && \ + /rubybashrc.sh && \ + /rb-sys-dock.sh && \ + rm -rf /var/cache/yum diff --git a/docker/Dockerfile.x86_64-linux-musl b/docker/Dockerfile.x86_64-linux-musl index 13fb84d7..af3c6886 100644 --- a/docker/Dockerfile.x86_64-linux-musl +++ b/docker/Dockerfile.x86_64-linux-musl @@ -1,4 +1,4 @@ -FROM ghcr.io/rake-compiler/rake-compiler-dock-image:snapshot-mri-x86_64-linux-musl +FROM ghcr.io/rake-compiler/rake-compiler-dock-image:1.5.0-mri-x86_64-linux-musl ENV RUBY_TARGET="x86_64-linux-musl" \ RUST_TARGET="x86_64-unknown-linux-musl" \ @@ -17,21 +17,11 @@ ENV RUBY_TARGET="x86_64-linux-musl" \ BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_linux_musl="--sysroot=/usr/x86_64-unknown-linux-musl" \ CMAKE_x86_64_unknown_linux_musl="cmake" -COPY setup/lib.sh /lib.sh +COPY setup/lib.sh setup/rustup.sh setup/rubygems.sh setup/cmake.sh setup/rubybashrc.sh setup/rb-sys-dock.sh / -COPY setup/rustup.sh / -RUN /rustup.sh - -COPY setup/rubygems.sh / -RUN /rubygems.sh - -COPY setup/cmake.sh / -RUN /cmake.sh - -RUN bash -c "source /lib.sh && install_packages libclang-12-dev llvm-12-dev" - -COPY setup/rubybashrc.sh / -RUN /rubybashrc.sh - -COPY setup/rb-sys-dock.sh / -RUN /rb-sys-dock.sh +RUN bash -c "source /lib.sh && install_packages libclang-12-dev llvm-12-dev" && \ + /rustup.sh && \ + /rubygems.sh && \ + /cmake.sh && \ + /rubybashrc.sh && \ + /rb-sys-dock.sh diff --git a/docker/setup/lib.sh b/docker/setup/lib.sh index 0fedfaa6..f8070e85 100644 --- a/docker/setup/lib.sh +++ b/docker/setup/lib.sh @@ -19,7 +19,7 @@ install_packages() { for pkg in "${@}"; do if ! yum list installed "${pkg}" > /dev/null 2> /dev/null; then yum install -y "${pkg}" - yum clean all + rm -rf /var/cache/yum purge_list+=("${pkg}") fi diff --git a/docker/setup/rubygems.sh b/docker/setup/rubygems.sh index 93d10382..f03dc802 100755 --- a/docker/setup/rubygems.sh +++ b/docker/setup/rubygems.sh @@ -12,6 +12,7 @@ main() { gem update --no-document --system $rubygems_version gem install bundler:$bundler_version --no-document + gem install rb_sys --no-document # prevent bundler from trampolining itself to a higher version echo "export BUNDLER_VERSION=\"$bundler_version\"" >> /etc/rubybashrc diff --git a/docker/setup/rustup.sh b/docker/setup/rustup.sh index 6c8ac4d7..46909c59 100755 --- a/docker/setup/rustup.sh +++ b/docker/setup/rustup.sh @@ -24,9 +24,6 @@ main() { # Use git CLI to fetch crates (avoid memory issues in QEMU environments) printf "[net]\ngit-fetch-with-cli = true" >> "$CARGO_HOME/config.toml" - # Pre-fetch the registry index - cargo init --name tmp . - cargo fetch chmod -R a+w "$RUSTUP_HOME" "$CARGO_HOME" echo "export RUSTUP_PERMIT_COPY_RENAME=\"true\"" >> "/etc/rubybashrc" diff --git a/gem/rb_sys.gemspec b/gem/rb_sys.gemspec index d64abfeb..9a5890c5 100644 --- a/gem/rb_sys.gemspec +++ b/gem/rb_sys.gemspec @@ -11,7 +11,7 @@ Gem::Specification.new do |spec| spec.summary = "Helpers for compiling Rust extensions for ruby" spec.homepage = "https://oxidize-rb.github.io/rb-sys/" spec.licenses = ["MIT", "Apache-2.0"] - spec.required_ruby_version = ">= 2.3.0" + spec.required_ruby_version = ">= 2.5.0" spec.metadata["homepage_uri"] = spec.homepage spec.metadata["source_code_uri"] = "https://github.com/oxidize-rb/rb-sys" @@ -24,5 +24,6 @@ Gem::Specification.new do |spec| # Security spec.cert_chain = ["certs/ianks.pem"] spec.signing_key = File.expand_path("~/.ssh/gem-private_key.pem") if $0.end_with?("gem") + spec.metadata["rubygems_mfa_required"] = "true" end