diff --git a/.woodpecker/build.yaml b/.woodpecker/build.yaml index 1450e6d..3ca6703 100644 --- a/.woodpecker/build.yaml +++ b/.woodpecker/build.yaml @@ -12,7 +12,7 @@ matrix: PLATFORM_ID: el9 ARCH: amd64 ARCH_ID: x86_64 - INSTANCE_TYPE: cpx41 + INSTANCE_TYPE: AX42 - PLATFORM: centos-8 PLATFORM_ID: el8 ARCH: arm64 @@ -22,7 +22,7 @@ matrix: PLATFORM_ID: el8 ARCH: amd64 ARCH_ID: x86_64 - INSTANCE_TYPE: cpx41 + INSTANCE_TYPE: AX42 - PLATFORM: ubuntu-2204 PLATFORM_ID: 2204 ARCH: arm64 @@ -32,7 +32,7 @@ matrix: PLATFORM_ID: 2204 ARCH: amd64 ARCH_ID: amd64 - INSTANCE_TYPE: cpx41 + INSTANCE_TYPE: AX42 - PLATFORM: ubuntu-2404 PLATFORM_ID: 2404 ARCH: arm64 @@ -42,7 +42,7 @@ matrix: PLATFORM_ID: 2404 ARCH: amd64 ARCH_ID: amd64 - INSTANCE_TYPE: cpx41 + INSTANCE_TYPE: AX42 # - PLATFORM: opensuse-155 # PLATFORM_ID: suse155 # ARCH: arm64 @@ -55,7 +55,17 @@ matrix: PLATFORM_ID: alpine320 ARCH: amd64 ARCH_ID: x86_64 - INSTANCE_TYPE: cpx41 + INSTANCE_TYPE: AX42 + - PLATFORM: alpine-321 + PLATFORM_ID: alpine321 + ARCH: arm64 + ARCH_ID: aarch64 + INSTANCE_TYPE: cax31 + - PLATFORM: alpine-321 + PLATFORM_ID: alpine321 + ARCH: amd64 + ARCH_ID: x86_64 + INSTANCE_TYPE: AX42 steps: # Ensures that we're always using the latest available upstream build chain @@ -210,7 +220,7 @@ services: image: docker:27-dind commands: - mkdir -p /tmp/${PLATFORM}/${ARCH} - - dockerd --tls=false --host=tcp://0.0.0.0:2375 + - dockerd --tls=false --mtu 1420 --host=tcp://0.0.0.0:2375 privileged: true ports: - 2375 diff --git a/builder/Dockerfile.alpine-321 b/builder/Dockerfile.alpine-321 new file mode 100644 index 0000000..64906b0 --- /dev/null +++ b/builder/Dockerfile.alpine-321 @@ -0,0 +1,28 @@ +FROM alpine:3.21 + +ENV OS_IDENTIFIER alpine-321 + +RUN set -x \ + && apk add -q R-dev curl ca-certificates bash g++ tzdata openjdk17 texmf-dist texlive-full tar sed patch tcl tk tk-dev xvfb + +# Install AWS CLI +RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-$(uname -m).zip" -o "awscliv2.zip" && \ + unzip awscliv2.zip && \ + ./aws/install && \ + rm -rf aws awscliv2.zip + +RUN curl -LO "https://github.com/goreleaser/nfpm/releases/download/v2.39.0/nfpm_2.39.0_$(arch).apk" && \ + apk add --allow-untrusted "./nfpm_2.39.0_$(arch).apk" && \ + rm "nfpm_2.39.0_$(arch).apk" + +RUN chmod 0777 /opt + +# Override the default pager used by R +ENV PAGER /usr/bin/pager + +ENV CONFIGURE_OPTIONS "--enable-R-shlib --with-tcltk --enable-memory-profiling --with-x=no --with-blas --with-lapack" + +COPY package.alpine-321 /package.sh +COPY build.sh . +COPY patches /patches +ENTRYPOINT ./build.sh diff --git a/builder/package.alpine-321 b/builder/package.alpine-321 new file mode 100644 index 0000000..2e0b28e --- /dev/null +++ b/builder/package.alpine-321 @@ -0,0 +1,74 @@ +#!/bin/bash + +if [[ ! -d /tmp/output/${OS_IDENTIFIER} ]]; then + mkdir -p "/tmp/output/${OS_IDENTIFIER}" +fi + +# R 3.x requires PCRE1. On Ubuntu 24, R 3.x also requires PCRE2 for Pango support. +pcre_libs='- pcre2-dev' +if [[ "${R_VERSION}" =~ ^3 ]]; then + pcre_libs='- pcre2-dev +- libpcre3-dev' +fi + +deflate_libs='# - libdeflate-dev' +if grep -q '^LIBS *=.*[-]ldeflate' ${R_INSTALL_PATH}/lib/R/etc/Makeconf; then + deflate_libs='- libdeflate-dev' +fi + +cat < /tmp/nfpm.yml +name: r-${R_VERSION} +version: 1 +version_schema: none +section: universe/math +priority: optional +arch: $(arch) +maintainer: Posit Software, PBC +description: | + GNU R statistical computation and graphics system +vendor: Posit Software, PBC +homepage: https://www.r-project.org +license: GPL-2 +depends: +- g++ +- gcc +- gfortran +- libbz2 +# - libc6 +- cairo +- libcurl +${deflate_libs} +# - libglib2.0-0t64 +# - libgomp1 +- icu-dev +- jpeg-dev +# - liblzma-dev +- openblas-dev +- pango +# - libpangocairo-1.0-0 +- libpaper +${pcre_libs} +- libpng-dev +- readline-dev +- tcl +- tiff-dev +- libtirpc-dev +- tk +# - libx11-6 +# - libxt6t64 +- make +# - ucf +- unzip +- zip +- zlib-ng-dev +contents: +- src: ${R_INSTALL_PATH} + dst: ${R_INSTALL_PATH} +EOF + +nfpm package \ + -f /tmp/nfpm.yml \ + -p apk \ + -t "/tmp/output/${OS_IDENTIFIER}" + +export PKG_FILE=$(ls /tmp/output/${OS_IDENTIFIER}/r-${R_VERSION}*.apk | head -1)