diff --git a/.ci-dockerfiles/ubuntu24.04-bootstrap-tester/Dockerfile b/.ci-dockerfiles/ubuntu24.04-bootstrap-tester/Dockerfile new file mode 100644 index 0000000..d1a9735 --- /dev/null +++ b/.ci-dockerfiles/ubuntu24.04-bootstrap-tester/Dockerfile @@ -0,0 +1,14 @@ +FROM ubuntu:24.04 + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + clang \ + curl \ + git \ + libssl-dev \ + lsb-release \ + make \ + && rm -rf /var/lib/apt/lists/* + +RUN git config --global --add safe.directory /__w/ponyup/ponyup diff --git a/.ci-dockerfiles/ubuntu24.04-bootstrap-tester/build-and-push.bash b/.ci-dockerfiles/ubuntu24.04-bootstrap-tester/build-and-push.bash new file mode 100644 index 0000000..b3de869 --- /dev/null +++ b/.ci-dockerfiles/ubuntu24.04-bootstrap-tester/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 *** +# + +TODAY=$(date +%Y%m%d) +DOCKERFILE_DIR="$(dirname "$0")" +DOCKER_TAG="ghcr.io/ponylang/ponyup-ci-ubuntu24.04-bootstrap-tester:${TODAY}" + +docker build --pull -t "${DOCKER_TAG}" "${DOCKERFILE_DIR}" +docker push "${DOCKER_TAG}" diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 125a99e..78380f8 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -80,6 +80,16 @@ jobs: - name: Bootstrap test run: SSL=3.0.x .ci-scripts/test-bootstrap.sh + ubuntu24_04-bootstrap: + name: Ubuntu 24.04 bootstrap + runs-on: ubuntu-latest + container: + image: ghcr.io/ponylang/ponyup-ci-ubuntu24.04-bootstrap-tester:20240425 + steps: + - uses: actions/checkout@v4.1.1 + - name: Bootstrap test + run: SSL=3.0.x .ci-scripts/test-bootstrap.sh + arm64-macos-bootstrap: name: arm64 MacOS bootstrap runs-on: macos-14 diff --git a/.release-notes/ubuntu24.md b/.release-notes/ubuntu24.md new file mode 100644 index 0000000..eb32117 --- /dev/null +++ b/.release-notes/ubuntu24.md @@ -0,0 +1,3 @@ +## Add Ubuntu 24.04 support + +We've added support for identifying Ubuntu 24.04 and downloading packages for it. As of the time of this release, no release versions of `ponyc` are available- only nightly versions. Release versions of `ponyc` will be available once a version of `ponyc` post 0.58.3 is released. diff --git a/README.md b/README.md index b2fb221..161c98e 100644 --- a/README.md +++ b/README.md @@ -123,7 +123,7 @@ Defaults: pic=true ### Platform options -Ponyup is able to detect the CPU architecture and operating system of the platform on which it is running. The `--platform` option is used to override any field in the platform identifier (e.g. `x86_64-linux-ubuntu22.04`). +Ponyup is able to detect the CPU architecture and operating system of the platform on which it is running. The `--platform` option is used to override any field in the platform identifier (e.g. `x86_64-linux-ubuntu24.04`). ### Common Issues @@ -133,4 +133,4 @@ Ponyup is able to detect the CPU architecture and operating system of the platfo error: unexpected selection: ponyc-release-x86_64-unknown-linux ``` - This is likely caused by a target triple that does not specify the libc ABI for the platform, as detected by `cc -dumpmachine`. The solution is to manually set the platform identifier using `ponyup default `, where `` is a platform identifier such as `x86_64-linux-ubuntu22.04`. + This is likely caused by a target triple that does not specify the libc ABI for the platform, as detected by `cc -dumpmachine`. The solution is to manually set the platform identifier using `ponyup default `, where `` is a platform identifier such as `x86_64-linux-ubuntu24.04`. diff --git a/cmd/cli.pony b/cmd/cli.pony index 94bf7e0..75ef0e0 100644 --- a/cmd/cli.pony +++ b/cmd/cli.pony @@ -47,7 +47,7 @@ primitive CLI "Install or update a package", [ OptionSpec.string( "platform", - "Specify platform (such as x86_64-linux-ubuntu22.04)", + "Specify platform (such as x86_64-linux-ubuntu24.04)", None, "") ], @@ -59,7 +59,7 @@ primitive CLI "Select the default version for a package", [ OptionSpec.string( "platform", - "Specify platform (such as x86_64-linux-ubuntu22.04)", + "Specify platform (such as x86_64-linux-ubuntu24.04)", None, "") ], @@ -68,7 +68,7 @@ primitive CLI ])? CommandSpec.leaf( "default", - "Set the default platform (such as x86_64-linux-ubuntu22.04)", + "Set the default platform (such as x86_64-linux-ubuntu24.04)", [], [ ArgSpec.string("platform") ])? diff --git a/cmd/packages.pony b/cmd/packages.pony index a6149a5..8c323e9 100644 --- a/cmd/packages.pony +++ b/cmd/packages.pony @@ -20,7 +20,7 @@ primitive Packages It is assumed that Arch field does not contain a `-` character, such as x86-64 which must be replaced by either x86_64, x64, or amd64. Vendor fields (unknown, pc, apple, etc.) are ignored. ABI fields are used to detect the - libc implementation (glibc or musl) or distribution (ubuntu22.04) on + libc implementation (glibc or musl) or distribution (ubuntu24.04) on Linux-based platforms. Such ABI fields are required for Linux for some packages, such as ponyc. diff --git a/ponyup-init.sh b/ponyup-init.sh index 94b8184..d64dcd5 100755 --- a/ponyup-init.sh +++ b/ponyup-init.sh @@ -92,6 +92,9 @@ Linux*) case $(cc -dumpmachine) in *gnu) case "$(lsb_release -d)" in + *"Ubuntu 24.04"*) + platform_triple_distro="ubuntu24.04" + ;; *"Ubuntu 22.04"*) platform_triple_distro="ubuntu22.04" ;; @@ -104,6 +107,9 @@ Linux*) *"Linux Mint 20"*) platform_triple_distro="ubuntu20.04" ;; + *"Pop!_OS 24.04"*) + platform_triple_distro="ubuntu24.04" + ;; *"Pop!_OS 22.04"*) platform_triple_distro="ubuntu22.04" ;;