This is an automated email from the ASF dual-hosted git repository. vatamane pushed a commit to branch upgrade-erlang-drop-focal in repository https://gitbox.apache.org/repos/asf/couchdb-ci.git
commit 2034e75403bf718582a037fc52edaff924c1bada Author: Nick Vatamaniuc <[email protected]> AuthorDate: Thu Jun 19 23:07:08 2025 -0400 Upgrade Erlang and Elixir Remove unsupported Ubuntu Focal Tweak some dependencies: - add `time` the quickjs javascript conformance suite uses it - make sure lsb-release is installed with its recommends, otherwise we get a failure during OS detection on Ubuntu Noble - unconditionally install createrepo-c since Focal is gone --- README.md | 2 +- bin/apt-dependencies.sh | 17 +++--------- bin/install-dependencies.sh | 2 +- bin/install-elixir.sh | 2 +- bin/yum-dependencies.sh | 2 +- build.sh | 2 +- dockerfiles/almalinux-8 | 2 +- dockerfiles/almalinux-9 | 2 +- dockerfiles/debian-bookworm | 2 +- dockerfiles/debian-bullseye | 2 +- dockerfiles/ubuntu-focal | 66 --------------------------------------------- dockerfiles/ubuntu-jammy | 2 +- dockerfiles/ubuntu-noble | 2 +- pull-all-couchdbdev-docker | 16 +++++------ 14 files changed, 22 insertions(+), 99 deletions(-) diff --git a/README.md b/README.md index b738363..e3a5d37 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ On the other hand, some OSes won't run older Erlangs because of library changes, Just specify on the command line any of the `ERLANGVERSION`, `NODEVERSION`, or `ELIXIRVERSION` environment variables: ``` -NODEVERSION=20 ELIXIRVERSION=v1.17.3 ERLANGVERSION=26.2.5.11 ./build.sh platform debian-bookworm +NODEVERSION=20 ELIXIRVERSION=v1.18.4 ERLANGVERSION=26.2.5.13 ./build.sh platform debian-bookworm ``` ## Building images for other architectures diff --git a/bin/apt-dependencies.sh b/bin/apt-dependencies.sh index 7677ab7..d08538a 100755 --- a/bin/apt-dependencies.sh +++ b/bin/apt-dependencies.sh @@ -37,13 +37,13 @@ if [ ${EUID} -ne 0 ]; then fi # install lsb-release -apt-get update && apt-get install --no-install-recommends -y lsb-release +apt-get update && apt-get install -y lsb-release SCRIPTPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" . ${SCRIPTPATH}/detect-arch.sh >/dev/null . ${SCRIPTPATH}/detect-os.sh >/dev/null debians='(bullseye|bookworm)' -ubuntus='(focal|jammy|noble)' +ubuntus='(jammy|noble)' echo "Detected Ubuntu/Debian version: ${VERSION_CODENAME} arch: ${ARCH}" # ubuntu docker image seems to be missing /etc/timezone... @@ -70,14 +70,7 @@ apt-get install --no-install-recommends -y apt-transport-https curl git pkg-conf help2man curl debhelper devscripts dh-exec dh-python equivs \ dialog equivs lintian libwww-perl quilt \ reprepro fakeroot rsync \ - vim-tiny screen procps dirmngr ssh-client - - -# createrepo_c is optional, all distros have it except focal -# once focal is dropped can just added to the list above -# -apt-get install --no-install-recommends -y createrepo-c || true - + vim-tiny screen procps dirmngr ssh-client createrepo-c time # Node.js (ubuntu noble has version 18, otherwise build a package) @@ -149,7 +142,6 @@ if [ "$1" != "nojs" ]; then # older releases don't have libmozjs60+, and we provide 1.8.5 if [ "${VERSION_CODENAME}" != "noble" ] && \ [ "${VERSION_CODENAME}" != "jammy" ] && \ - [ "${VERSION_CODENAME}" != "focal" ] && \ [ "${VERSION_CODENAME}" != "bullseye" ] && \ [ "${VERSION_CODENAME}" != "bookworm" ] && \ [ "${ARCH}" != "s390x" ]; then @@ -164,9 +156,6 @@ if [ "$1" != "nojs" ]; then if [ "${VERSION_CODENAME}" == "noble" ]; then apt-get install --no-install-recommends -y libmozjs-102-dev libmozjs-115-dev fi - if [ "${VERSION_CODENAME}" == "focal" ]; then - apt-get install --no-install-recommends -y libmozjs-68-dev - fi if [ "${VERSION_CODENAME}" == "jammy" ]; then apt-get install --no-install-recommends -y libmozjs-78-dev libmozjs-91-dev fi diff --git a/bin/install-dependencies.sh b/bin/install-dependencies.sh index a99efed..544e10f 100755 --- a/bin/install-dependencies.sh +++ b/bin/install-dependencies.sh @@ -31,7 +31,7 @@ set -e # Defaults updated 2023-03-20 NODEVERSION=${NODEVERSION:-20} ERLANGVERSION=${ERLANGVERSION:-26.2.5.11} -ELIXIRVERSION=${ELIXIRVERSION:-v1.17.3} +ELIXIRVERSION=${ELIXIRVERSION:-v1.18.4} # This works if we're not called through a symlink diff --git a/bin/install-elixir.sh b/bin/install-elixir.sh index f749eb4..35ccb3e 100755 --- a/bin/install-elixir.sh +++ b/bin/install-elixir.sh @@ -28,7 +28,7 @@ set -e -ELIXIR_VSN=${ELIXIRVERSION:-v1.17.3} +ELIXIR_VSN=${ELIXIRVERSION:-v1.18.4} ERLANG_VSN=`erl -noshell -eval 'io:fwrite(erlang:system_info(otp_release)), halt().'` # See https://github.com/hexpm/bob URL=https://repo.hex.pm/builds/elixir/${ELIXIR_VSN}-otp-${ERLANG_VSN}.zip diff --git a/bin/yum-dependencies.sh b/bin/yum-dependencies.sh index 202cf73..25b1e1f 100755 --- a/bin/yum-dependencies.sh +++ b/bin/yum-dependencies.sh @@ -112,7 +112,7 @@ dnf groupinstall -y 'Development Tools' # help2man is for docs dnf install -y sudo git wget which autoconf autoconf-archive automake curl-devel libicu-devel \ libtool ncurses-devel nspr-devel zip readline-devel unzip perl \ - createrepo xfsprogs-devel java-21-openjdk-devel rpmdevtools + createrepo xfsprogs-devel java-21-openjdk-devel rpmdevtools time if [[ ${VERSION_ID} -eq 9 ]]; then dnf --enablerepo=crb install -y help2man elif [[ ${VERSION_ID} -eq 8 ]]; then diff --git a/build.sh b/build.sh index 3cdb6df..8ceb729 100755 --- a/build.sh +++ b/build.sh @@ -47,7 +47,7 @@ SCRIPTPATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # script as well # DEBIANS="debian-bullseye debian-bookworm" -UBUNTUS="ubuntu-focal ubuntu-jammy ubuntu-noble" +UBUNTUS="ubuntu-jammy ubuntu-noble" CENTOSES="almalinux-8 almalinux-9" PASSED_BUILDARGS="$buildargs" diff --git a/dockerfiles/almalinux-8 b/dockerfiles/almalinux-8 index 112ee51..99a6675 100644 --- a/dockerfiles/almalinux-8 +++ b/dockerfiles/almalinux-8 @@ -32,7 +32,7 @@ ARG js=js ARG erlang=erlang # Select version of Node, Erlang and Elixir to install ARG erlangversion=26.2.5.11 -ARG elixirversion=v1.17.3 +ARG elixirversion=v1.18.4 ARG nodeversion=20 # Create Jenkins user and group diff --git a/dockerfiles/almalinux-9 b/dockerfiles/almalinux-9 index de959eb..fd31436 100644 --- a/dockerfiles/almalinux-9 +++ b/dockerfiles/almalinux-9 @@ -32,7 +32,7 @@ ARG js=js ARG erlang=erlang # Select version of Node, Erlang and Elixir to install ARG erlangversion=26.2.5.11 -ARG elixirversion=v1.17.3 +ARG elixirversion=v1.18.4 ARG nodeversion=20 # Create Jenkins user and group diff --git a/dockerfiles/debian-bookworm b/dockerfiles/debian-bookworm index ae930c9..89e67b8 100644 --- a/dockerfiles/debian-bookworm +++ b/dockerfiles/debian-bookworm @@ -37,7 +37,7 @@ ARG js=js ARG erlang=erlang # Select version of Node, Erlang and Elixir ARG erlangversion=26.2.5.11 -ARG elixirversion=v1.17.3 +ARG elixirversion=v1.18.4 ARG nodeversion=20 # Create Jenkins user and group diff --git a/dockerfiles/debian-bullseye b/dockerfiles/debian-bullseye index 4dce862..eff092b 100644 --- a/dockerfiles/debian-bullseye +++ b/dockerfiles/debian-bullseye @@ -37,7 +37,7 @@ ARG js=js ARG erlang=erlang # Select version of Node, Erlang and Elixir ARG erlangversion=26.2.5.11 -ARG elixirversion=v1.17.3 +ARG elixirversion=v1.18.4 ARG nodeversion=20 # Create Jenkins user and group diff --git a/dockerfiles/ubuntu-focal b/dockerfiles/ubuntu-focal deleted file mode 100644 index c7dc168..0000000 --- a/dockerfiles/ubuntu-focal +++ /dev/null @@ -1,66 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations - -# NOTE: These are intended to be built using the arguments as -# described in ../build.sh. See that script for more details. - -FROM ubuntu:focal - -# Install Java -ENV JAVA_HOME=/opt/java/openjdk -COPY --from=eclipse-temurin:21 $JAVA_HOME $JAVA_HOME -ENV PATH="${JAVA_HOME}/bin:${PATH}" - -# These are needed for the Clouseau integration -ENV CLOUSEAU_JAVA_HOME=/opt/java/openjdk8 -COPY --from=ibm-semeru-runtimes:open-8-jre /opt/java/openjdk $CLOUSEAU_JAVA_HOME -ENV PATH=/usr/local/lib/erlang/bin:"${PATH}" - -# Choose whether to install SpiderMonkey 1.8.5, default yes -ARG js=js -# Choose whether to install Erlang, default yes -ARG erlang=erlang -# Select version of Node, Erlang and Elixir to install -ARG erlangversion=26.2.5.11 -ARG elixirversion=v1.17.3 -ARG nodeversion=20 - -# Create Jenkins user and group -RUN groupadd --gid 910 jenkins; \ - useradd --uid 910 --gid jenkins --create-home jenkins - -# Copy couchdb-ci repo into root's home directory -ADD --chown=root:root bin /root/couchdb-ci/bin/ -ADD --chown=root:root files /root/couchdb-ci/files/ - -# Jenkins builds in /usr/src/couchdb. -RUN mkdir -p /usr/src/couchdb; \ - chown -R jenkins:jenkins /usr/src/couchdb - -# Install all dependencies, and optionally SM 1.8.5 -# This allows us to use the same Dockerfile for building SM -RUN ERLANGVERSION=$erlangversion \ - ELIXIRVERSION=$elixirversion \ - NODEVERSION=$nodeversion \ - /root/couchdb-ci/bin/install-dependencies.sh $js $erlang - -# Allow Jenkins to sudo -RUN echo "jenkins ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/jenkins - -USER jenkins - -# overwrite this with 'CMD []' in a dependent Dockerfile -CMD ["/bin/bash"] diff --git a/dockerfiles/ubuntu-jammy b/dockerfiles/ubuntu-jammy index ce2588d..98cb035 100644 --- a/dockerfiles/ubuntu-jammy +++ b/dockerfiles/ubuntu-jammy @@ -35,7 +35,7 @@ ARG js=js ARG erlang=erlang # Select version of Node, Erlang and Elixir to install ARG erlangversion=26.2.5.11 -ARG elixirversion=v1.17.3 +ARG elixirversion=v1.18.4 ARG nodeversion=20 # Create Jenkins user and group diff --git a/dockerfiles/ubuntu-noble b/dockerfiles/ubuntu-noble index def4ce3..da41d91 100644 --- a/dockerfiles/ubuntu-noble +++ b/dockerfiles/ubuntu-noble @@ -35,7 +35,7 @@ ARG js=js ARG erlang=erlang # Select version of Node, Erlang and Elixir to install ARG erlangversion=26.2.5.11 -ARG elixirversion=v1.17.3 +ARG elixirversion=v1.18.4 ARG nodeversion=20 # Create Jenkins user and group diff --git a/pull-all-couchdbdev-docker b/pull-all-couchdbdev-docker index a4c1b89..e9b05d0 100644 --- a/pull-all-couchdbdev-docker +++ b/pull-all-couchdbdev-docker @@ -4,14 +4,14 @@ DOCKER_ORG="apache" # These are the images that are currently being used, so don't `docker rmi` them on cleanup. KEEP_IMAGES=( -couchdbci-debian:bookworm-erlang-25.3.2.20 -couchdbci-debian:bookworm-erlang-26.2.5.11 -couchdbci-debian:bookworm-erlang:27.3.3 -couchdbci-centos:9-erlang-26.2.5.11 -couchdbci-centos:8-erlang-26.2.5.11 -couchdbci-ubuntu:noble-erlang-26.2.5.11 -couchdbci-ubuntu:jammy-erlang-26.2.5.11 -couchdbci-ubuntu:focal-erlang-26.2.5.11 +couchdbci-debian:bookworm-erlang:27.3.4.1 +couchdbci-debian:bookworm-erlang:28.0.1 +couchdbci-debian:bookworm-erlang-26.2.5.13 +couchdbci-debian:bullseye-erlang:26.2.5.13 +couchdbci-ubuntu:noble-erlang-26.2.5.13 +couchdbci-ubuntu:jammy-erlang-26.2.5.13 +couchdbci-centos:9-erlang-26.2.5.13 +couchdbci-centos:8-erlang-26.2.5.13 ) for image in ${KEEP_IMAGES[*]}
