From dd6b8767fe20a09368412e81bad44ae4ccb8a75f Mon Sep 17 00:00:00 2001 From: "Sean T. Allen" Date: Thu, 25 Apr 2024 21:56:40 +0000 Subject: [PATCH] Add prebuilt ponyc binaries for Ubuntu 24.04 --- .../Dockerfile | 34 +++++++++++++++++++ .../build-and-push.bash | 15 ++++++++ .../x86-64-unknown-linux-gnu/Dockerfile | 4 +-- .../x86-64-unknown-linux-gnu/Dockerfile | 4 +-- .../cloudsmith-package-sychronised.yml | 4 +-- .github/workflows/nightlies.yml | 4 +++ .github/workflows/pr.yml | 6 ++-- .github/workflows/release.yml | 4 +++ .github/workflows/stress-test-runtime.yml | 16 ++++----- .github/workflows/update-lib-cache.yml | 1 + .release-notes/ubuntu24.md | 9 +++++ INSTALL.md | 6 ++-- RELEASE_PROCESS.md | 1 + 13 files changed, 89 insertions(+), 19 deletions(-) create mode 100644 .ci-dockerfiles/x86-64-unknown-linux-ubuntu24.04-builder/Dockerfile create mode 100644 .ci-dockerfiles/x86-64-unknown-linux-ubuntu24.04-builder/build-and-push.bash create mode 100644 .release-notes/ubuntu24.md diff --git a/.ci-dockerfiles/x86-64-unknown-linux-ubuntu24.04-builder/Dockerfile b/.ci-dockerfiles/x86-64-unknown-linux-ubuntu24.04-builder/Dockerfile new file mode 100644 index 0000000000..592519dcf7 --- /dev/null +++ b/.ci-dockerfiles/x86-64-unknown-linux-ubuntu24.04-builder/Dockerfile @@ -0,0 +1,34 @@ +FROM ubuntu:24.04 + +# Keep annoying tzdata prompt from coming up +# Thanks cmake! +ENV DEBIAN_FRONTEND noninteractive +ENV DEBCONF_NONINTERACTIVE_SEEN true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + apt-transport-https \ + build-essential \ + clang \ + cmake \ + git \ + lldb \ + make \ + xz-utils \ + zlib1g-dev \ + curl \ + python3-pip \ + wget \ + systemtap-sdt-dev \ + && rm -rf /var/lib/apt/lists/* \ + && apt-get -y autoremove --purge \ + && apt-get -y clean \ + && pip3 install --break-system-packages cloudsmith-cli + +# needed for GitHub actions +RUN git config --global --add safe.directory /__w/ponyc/ponyc + +# add user pony in order to not run tests as root +RUN useradd -u 1001 -ms /bin/bash -d /home/pony -g root pony +USER pony +WORKDIR /home/pony diff --git a/.ci-dockerfiles/x86-64-unknown-linux-ubuntu24.04-builder/build-and-push.bash b/.ci-dockerfiles/x86-64-unknown-linux-ubuntu24.04-builder/build-and-push.bash new file mode 100644 index 0000000000..d0522d055b --- /dev/null +++ b/.ci-dockerfiles/x86-64-unknown-linux-ubuntu24.04-builder/build-and-push.bash @@ -0,0 +1,15 @@ +#!/bin/bash + +set -o errexit +set -o nounset + +# +# *** You should already be logged in to GHCR when you run this *** +# + +NAME="ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder" +TODAY=$(date +%Y%m%d) +DOCKERFILE_DIR="$(dirname "$0")" + +docker build --pull -t "${NAME}:${TODAY}" "${DOCKERFILE_DIR}" +docker push "${NAME}:${TODAY}" diff --git a/.dockerfiles/latest/x86-64-unknown-linux-gnu/Dockerfile b/.dockerfiles/latest/x86-64-unknown-linux-gnu/Dockerfile index 0861f2bff9..ed979a3ff6 100644 --- a/.dockerfiles/latest/x86-64-unknown-linux-gnu/Dockerfile +++ b/.dockerfiles/latest/x86-64-unknown-linux-gnu/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:22.04 +FROM ubuntu:24.04 ENV PATH "/root/.local/share/ponyup/bin:$PATH" @@ -9,7 +9,7 @@ RUN apt-get update \ curl \ g++ \ git \ - lsb-core \ + lsb-release \ make \ && rm -rf /var/lib/apt/lists/* diff --git a/.dockerfiles/release/x86-64-unknown-linux-gnu/Dockerfile b/.dockerfiles/release/x86-64-unknown-linux-gnu/Dockerfile index 804d4a51ab..65abac8b18 100644 --- a/.dockerfiles/release/x86-64-unknown-linux-gnu/Dockerfile +++ b/.dockerfiles/release/x86-64-unknown-linux-gnu/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:22.04 +FROM ubuntu:24.04 ENV PATH "/root/.local/share/ponyup/bin:$PATH" @@ -9,7 +9,7 @@ RUN apt-get update \ curl \ g++ \ git \ - lsb-core \ + lsb-release \ make \ && rm -rf /var/lib/apt/lists/* diff --git a/.github/workflows/cloudsmith-package-sychronised.yml b/.github/workflows/cloudsmith-package-sychronised.yml index a7aae9891a..52ea1a791f 100644 --- a/.github/workflows/cloudsmith-package-sychronised.yml +++ b/.github/workflows/cloudsmith-package-sychronised.yml @@ -15,7 +15,7 @@ jobs: build-latest-gnu-docker-image: if: | github.event.client_payload.data.repository == 'nightlies' && - github.event.client_payload.data.name == 'ponyc-x86-64-unknown-linux-ubuntu22.04.tar.gz' + github.event.client_payload.data.name == 'ponyc-x86-64-unknown-linux-ubuntu24.04.tar.gz' name: Build latest GNU Docker image runs-on: ubuntu-latest @@ -105,7 +105,7 @@ jobs: build-release-gnu-docker-image: if: | github.event.client_payload.data.repository == 'releases' && - github.event.client_payload.data.name == 'ponyc-x86-64-unknown-linux-ubuntu22.04.tar.gz' + github.event.client_payload.data.name == 'ponyc-x86-64-unknown-linux-ubuntu24.04.tar.gz' name: Build release GNU Docker image runs-on: ubuntu-latest diff --git a/.github/workflows/nightlies.yml b/.github/workflows/nightlies.yml index 457259e52f..9ce99e8841 100644 --- a/.github/workflows/nightlies.yml +++ b/.github/workflows/nightlies.yml @@ -12,6 +12,10 @@ jobs: fail-fast: false matrix: include: + - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425 + name: x86-64-unknown-linux-ubuntu24.04 + triple-os: linux-ubuntu24.04 + triple-vendor: unknown - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu22.04-builder:20230924 name: x86-64-unknown-linux-ubuntu22.04 triple-os: linux-ubuntu22.04 diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 4a34bc10c2..d8e796a68c 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -87,7 +87,7 @@ jobs: fail-fast: false matrix: include: - - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu22.04-builder:20230924 + - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425 name: x86-64 Linux glibc debugger: lldb - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-musl-builder:20231003 @@ -444,10 +444,10 @@ jobs: fail-fast: false matrix: include: - - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu22.04-builder:20230924 + - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425 debugger: lldb directives: dtrace - - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu22.04-builder:20230924 + - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425 debugger: lldb directives: pool_memalign diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 281e247051..412444f67c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,6 +35,10 @@ jobs: fail-fast: false matrix: include: + - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425 + name: x86-64-unknown-linux-ubuntu24.04 + triple-os: linux-ubuntu24.04 + triple-vendor: unknown - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu22.04-builder:20230924 name: x86-64-unknown-linux-ubuntu22.04 triple-os: linux-ubuntu22.04 diff --git a/.github/workflows/stress-test-runtime.yml b/.github/workflows/stress-test-runtime.yml index c7163004a9..1c3e106be9 100644 --- a/.github/workflows/stress-test-runtime.yml +++ b/.github/workflows/stress-test-runtime.yml @@ -12,20 +12,20 @@ jobs: fail-fast: false matrix: include: - - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu22.04-builder:20230924 - name: x86-64-unknown-linux-ubuntu22.04 [release] + - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425 + name: x86-64-unknown-linux-ubuntu24.04 [release] target: test-stress-release debugger: lldb - - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu22.04-builder:20230924 - name: x86-64-unknown-linux-ubuntu22.04 [debug] + - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425 + name: x86-64-unknown-linux-ubuntu24.04 [debug] target: test-stress-debug debugger: lldb - - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu22.04-builder:20230924 - name: x86-64-unknown-linux-ubuntu22.04 [cd] [release] + - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425 + name: x86-64-unknown-linux-ubuntu24.04 [cd] [release] target: test-stress-with-cd-release debugger: lldb - - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu22.04-builder:20230924 - name: x86-64-unknown-linux-ubuntu22.04 [cd] [debug] + - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425 + name: x86-64-unknown-linux-ubuntu24.04 [cd] [debug] target: test-stress-with-cd-debug debugger: lldb - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-musl-builder:20231003 diff --git a/.github/workflows/update-lib-cache.yml b/.github/workflows/update-lib-cache.yml index 39310e160a..e34e05dcfa 100644 --- a/.github/workflows/update-lib-cache.yml +++ b/.github/workflows/update-lib-cache.yml @@ -17,6 +17,7 @@ jobs: fail-fast: false matrix: include: + - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu24.04-builder:20240425 - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu22.04-builder:20230924 - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu20.04-builder:20230830 - image: ghcr.io/ponylang/ponyc-ci-x86-64-unknown-linux-musl-builder:20231003 diff --git a/.release-notes/ubuntu24.md b/.release-notes/ubuntu24.md new file mode 100644 index 0000000000..a72b7f1cd7 --- /dev/null +++ b/.release-notes/ubuntu24.md @@ -0,0 +1,9 @@ +## Add prebuilt ponyc binaries for Ubuntu 24.04 + +We've added prebuilt ponyc binaries specifically made to work on Ubuntu 24.04. + +You can opt into using the Ubuntu binaries when using ponyup by running: + +```bash +ponyup default ubuntu24.04 +``` diff --git a/INSTALL.md b/INSTALL.md index c4529b33fe..619f37de22 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -22,8 +22,8 @@ Currently, we have packages for the following Glibc based distributions: - Fedora 39 - Linux Mint 19, 20, 21 -- Pop!_OS 20.04, 22.04 -- Ubuntu 20.04, 22.04 +- Pop!_OS 20.04, 22.04, 24.04 +- Ubuntu 20.04, 22.04, 24.04 ### Supported Alpine versions @@ -47,8 +47,10 @@ Linux Mint 20.x | x86_64-linux-ubuntu20.04 Linux Mint 21.x | x86_64-linux-ubuntu22.04 Pop!_OS 20.04 | x86_64-linux-ubuntu20.04 Pop!_OS 22.04 | x86_64-linux-ubuntu22.04 +Pop!_OS 24.04 | x86_64-linux-ubuntu24.04 Ubuntu 20.04 | x86_64-linux-ubuntu20.04 Ubuntu 22.04 | x86_64-linux-ubuntu22.04 +Ubuntu 24.04 | x86_64-linux-ubuntu24.04 ### Install the latest release diff --git a/RELEASE_PROCESS.md b/RELEASE_PROCESS.md index 6200312bc3..ad83bb7c99 100644 --- a/RELEASE_PROCESS.md +++ b/RELEASE_PROCESS.md @@ -49,6 +49,7 @@ Package names will be: * ponyc-x86-64-unknown-linux-musl.tar.gz * ponyc-x86-64-unknown-linux-ubuntu20.04.tar.gz * ponyc-x86-64-unknown-linux-ubuntu22.04.tar.gz +* ponyc-x86-64-unknown-linux-ubuntu24.04.tar.gz and should have a version field listing that matches the current release e.g. `0.3.1`.