From d9e227863380efa93a3501d622efa837fa1182be Mon Sep 17 00:00:00 2001 From: "Sean T. Allen" Date: Fri, 20 Jan 2023 22:27:03 +0000 Subject: [PATCH] Stop building the "x86-64-unknown-linux-gnu" ponyc package The "x86-64-unknown-linux-gnu" package was intended to be "generic", however, it is not actually generic. It is a glibc version that is built on "some glibc using Linux" and will work if it is installed on a Linux that is compatible at a library level withthe system that we built the package on. Quite some time ago, Theo and I (who made the initial decision to include a "x86-64-unknown-linux-gnu" package) realized that the "x86-64-unknown-linux-gnu" package idea was "a very bad idea". There are a couple large problems with this approach: 1- anyone using the pacakge on glibc distro that isn't library compatible with our "x86-64-unknown-linux-gnu" build will have the installed ponyc fail in interesting and confounding ways. That's a bad user experience. 2- in order to not fall horribly behind, from time to time, we need to "rev" the environment used to build our "x86-64-unknown-linux-gnu" packages. For us that has meant changing the Ubuntu version periodically. That then means that people who had an environment that worked will do an update and install a ponyc that doesn't work because it is for a different set of libraries. That's a bad user experience as well. This PR drops "x86-64-unknown-linux-gnu" from being built and mirrors a change in ponyup that dropped support for using the package via ponyup. See https://github.com/ponylang/ponyup/pull/245 for more information about the ponyup change. --- .ci-dockerfiles/cross-aarch64/Dockerfile | 2 +- .ci-dockerfiles/cross-arm/Dockerfile | 2 +- .ci-dockerfiles/cross-armhf/Dockerfile | 2 +- .ci-dockerfiles/cross-riscv64/Dockerfile | 2 +- .../Dockerfile | 32 ------------------- .../build-and-push.bash | 15 --------- .cirrus.yml | 14 -------- .release-notes/no-more-gnu.md | 5 +++ 8 files changed, 9 insertions(+), 65 deletions(-) delete mode 100644 .ci-dockerfiles/x86-64-unknown-linux-gnu-builder/Dockerfile delete mode 100644 .ci-dockerfiles/x86-64-unknown-linux-gnu-builder/build-and-push.bash create mode 100644 .release-notes/no-more-gnu.md diff --git a/.ci-dockerfiles/cross-aarch64/Dockerfile b/.ci-dockerfiles/cross-aarch64/Dockerfile index 6d5b49034b..22ecd6b0fd 100644 --- a/.ci-dockerfiles/cross-aarch64/Dockerfile +++ b/.ci-dockerfiles/cross-aarch64/Dockerfile @@ -1,4 +1,4 @@ -FROM ponylang/ponyc-ci-x86-64-unknown-linux-gnu-builder:20230115 +FROM ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu20.04-builder:20230115 ARG CROSS_TRIPLE=aarch64-unknown-linux-gnu ARG CROSS_CC=aarch64-linux-gnu-gcc diff --git a/.ci-dockerfiles/cross-arm/Dockerfile b/.ci-dockerfiles/cross-arm/Dockerfile index e2f839825b..c2101360ac 100644 --- a/.ci-dockerfiles/cross-arm/Dockerfile +++ b/.ci-dockerfiles/cross-arm/Dockerfile @@ -1,4 +1,4 @@ -FROM ponylang/ponyc-ci-x86-64-unknown-linux-gnu-builder:20230115 +FROM ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu20.04-builder:20230115 ARG CROSS_TRIPLE=arm-unknown-linux-gnueabi ARG CROSS_CC=arm-linux-gnueabi-gcc diff --git a/.ci-dockerfiles/cross-armhf/Dockerfile b/.ci-dockerfiles/cross-armhf/Dockerfile index 0077e6b4ee..e491ef6467 100644 --- a/.ci-dockerfiles/cross-armhf/Dockerfile +++ b/.ci-dockerfiles/cross-armhf/Dockerfile @@ -1,4 +1,4 @@ -FROM ponylang/ponyc-ci-x86-64-unknown-linux-gnu-builder:20230115 +FROM ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu20.04-builder:20230115 ARG CROSS_TRIPLE=arm-unknown-linux-gnueabihf ARG CROSS_CC=arm-linux-gnueabihf-gcc diff --git a/.ci-dockerfiles/cross-riscv64/Dockerfile b/.ci-dockerfiles/cross-riscv64/Dockerfile index 1add9824a3..90ffca7c20 100644 --- a/.ci-dockerfiles/cross-riscv64/Dockerfile +++ b/.ci-dockerfiles/cross-riscv64/Dockerfile @@ -1,4 +1,4 @@ -FROM ponylang/ponyc-ci-x86-64-unknown-linux-gnu-builder:20230115 +FROM ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu20.04-builder:20230115 USER root diff --git a/.ci-dockerfiles/x86-64-unknown-linux-gnu-builder/Dockerfile b/.ci-dockerfiles/x86-64-unknown-linux-gnu-builder/Dockerfile deleted file mode 100644 index 21f67a4b3d..0000000000 --- a/.ci-dockerfiles/x86-64-unknown-linux-gnu-builder/Dockerfile +++ /dev/null @@ -1,32 +0,0 @@ -FROM ubuntu:20.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 \ - git \ - make \ - xz-utils \ - zlib1g-dev \ - curl \ - python3-pip \ - lldb \ - && rm -rf /var/lib/apt/lists/* \ - && apt-get -y autoremove --purge \ - && apt-get -y clean \ - && pip3 install cloudsmith-cli - -# install a version of cmake that will meet out needs -RUN curl --output cmake-3.25.1-linux-x86_64.sh https://cmake.org/files/v3.25/cmake-3.25.1-linux-x86_64.sh \ - && sh cmake-3.25.1-linux-x86_64.sh --prefix=/usr/local --exclude-subdir - -# add user pony in order to not run tests as root -RUN useradd -ms /bin/bash -d /home/pony -g root pony -USER pony -WORKDIR /home/pony diff --git a/.ci-dockerfiles/x86-64-unknown-linux-gnu-builder/build-and-push.bash b/.ci-dockerfiles/x86-64-unknown-linux-gnu-builder/build-and-push.bash deleted file mode 100644 index d8d8eb04f8..0000000000 --- a/.ci-dockerfiles/x86-64-unknown-linux-gnu-builder/build-and-push.bash +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -set -o errexit -set -o nounset - -# -# *** You should already be logged in to DockerHub when you run this *** -# - -NAME="ponylang/ponyc-ci-x86-64-unknown-linux-gnu-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/.cirrus.yml b/.cirrus.yml index d9a3eaafca..7d412a4beb 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -288,13 +288,6 @@ task: timeout_in: 120m matrix: - - name: "nightly: x86-64-unknown-linux-gnu" - container: - image: ponylang/ponyc-ci-x86-64-unknown-linux-gnu-builder:20230115 - environment: - IMAGE: ponylang/ponyc-ci-x86-64-unknown-linux-gnu-builder:20230115 - TRIPLE_VENDOR: unknown - TRIPLE_OS: linux-gnu - name: "nightly: x86-64-unknown-linux-ubuntu18.04" container: image: ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu18.04-builder:20230115 @@ -450,13 +443,6 @@ task: timeout_in: 120m matrix: - - name: "release: x86-64-unknown-linux-gnu" - container: - image: ponylang/ponyc-ci-x86-64-unknown-linux-gnu-builder:20230115 - environment: - IMAGE: ponylang/ponyc-ci-x86-64-unknown-linux-gnu-builder:20230115 - TRIPLE_VENDOR: unknown - TRIPLE_OS: linux-gnu - name: "release: x86-64-unknown-linux-ubuntu18.04" container: image: ponylang/ponyc-ci-x86-64-unknown-linux-ubuntu18.04-builder:20230115 diff --git a/.release-notes/no-more-gnu.md b/.release-notes/no-more-gnu.md new file mode 100644 index 0000000000..c00206bdeb --- /dev/null +++ b/.release-notes/no-more-gnu.md @@ -0,0 +1,5 @@ +## Stop building "x86-64-unknown-linux-gnu" packages + +Previously we built a "generic gnu" ponyc package and made it available via Cloudsmith and ponyup. Unfortunately, there is no such thing as a "generic gnu" ponyc build that is universally usable. The ponyc package only worked if the library versions on your Glibc based Linux distribution matched those of our build environment. + +We've stoped building the "generic gnu" aka "x86-64-unknown-linux-gnu" packages of ponyc as they had limited utility and a couple of different ways of creating a very bad user experience. Please see our [Linux installation instructions](https://github.com/ponylang/ponyc/blob/main/INSTALL.md#linux) for a list of Linux distributions we currently create ponyc packages for.