This is an automated email from the ASF dual-hosted git repository.
vatamane pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/couchdb-ci.git
The following commit(s) were added to refs/heads/main by this push:
new 1f785e9 Upgrade Erlang and Elixir
1f785e9 is described below
commit 1f785e908209efc47a459e38d3359832c6178f01
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[*]}