From 49bc974f6c39ed2cbd42d985defaf9f0f8050442 Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Mon, 9 Dec 2024 17:07:35 -0800 Subject: [PATCH 1/2] ci: migrate from focal to jammy, el8 Problem: focal CI builds are failing. Specifically, a flux-pmix test program that uses libflux-optparse.so without other flux stuff cannot be linked due to unresolved jansson symbols. Details are in flux-framework/flux-core#6496 Just move the focal builders to jammy to get CI working again here, except the ompi 2.x and 3.x builds don't seem to work in jammy: checking for struct sockaddr_in... yes checking if --with-cuda is set... not set (--with-cuda=) ./configure: line 13031: syntax error near unexpected token `)' ./configure: line 13031: ` )' so move those builders to el8 instead. Tidy up builder descriptions. --- .github/workflows/main.yml | 28 +++++++------- src/test/docker/jammy/Dockerfile | 63 ++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 14 deletions(-) create mode 100644 src/test/docker/jammy/Dockerfile diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 27b0da4..b0662f2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -22,28 +22,28 @@ jobs: strategy: matrix: include: - - name: "focal - ompi v5.0.x, chain_lint" - image: "focal" + - name: "jammy - chain_lint" + image: "jammy" ompi_branch: "v5.0.0rc12" openpmix_branch: "v4.2.3" coverage: false env: chain_lint: t - - name: "el8 - ompi v5.0.x, distcheck" + - name: "el8 - distcheck" image: "el8" ompi_branch: "v5.0.0rc12" openpmix_branch: "v4.2.3" coverage: false env: DISTCHECK: t - - name: "el8 - pmix v3.2.3, ompi v4.1.4" + - name: "el8 - ompi v4.1.4" image: "el8" ompi_branch: "v4.1.4" openpmix_branch: "v3.2.3" coverage: false env: {} - - name: "coverage" - image: "focal" + - name: "jammy - coverage" + image: "jammy" ompi_branch: "v5.0.0rc12" openpmix_branch: "v4.2.3" coverage: true @@ -55,26 +55,26 @@ jobs: openpmix_branch: "v4.2.3" coverage: false env: {} - - name: "focal - ompi v4.1.x" - image: "focal" + - name: "jammy - ompi v4.1.x" + image: "jammy" ompi_branch: "v4.1.x" openpmix_branch: "v4.2.2" coverage: false env: {} - - name: "focal - ompi v4.0.x" - image: "focal" + - name: "jammy - ompi v4.0.x" + image: "jammy" ompi_branch: "v4.0.x" openpmix_branch: "v4.2.2" coverage: false env: {} - - name: "focal - ompi v3.1.x" - image: "focal" + - name: "el8 - ompi v3.1.x" + image: "el8" ompi_branch: "v3.1.x" openpmix_branch: "v4.2.2" coverage: false env: {} - - name: "focal - ompi v3.0.x" - image: "focal" + - name: "el8 - ompi v3.0.x" + image: "el8" ompi_branch: "v3.0.x" openpmix_branch: "v4.2.2" coverage: false diff --git a/src/test/docker/jammy/Dockerfile b/src/test/docker/jammy/Dockerfile new file mode 100644 index 0000000..4f0b0f3 --- /dev/null +++ b/src/test/docker/jammy/Dockerfile @@ -0,0 +1,63 @@ +FROM fluxrm/flux-core:jammy + +ARG USER=fluxuser +ARG UID=1000 +ARG OMPI_BRANCH=v5.0.x +ARG OPENPMIX_BRANCH=v4.2.4 + +RUN \ + if test "$USER" != "fluxuser"; then \ + sudo groupadd -g $UID $USER \ + && sudo useradd -g $USER -u $UID -d /home/$USER -m $USER \ + && sudo sh -c "printf \"$USER ALL= NOPASSWD: ALL\\n\" >> /etc/sudoers" \ + && sudo adduser $USER sudo ; \ + fi + +# remove installed mpich +RUN sudo apt purge -yy mpich libmpich-dev \ + && sudo apt clean + +# remove mca dir from hand-installed openpmix which will be overwritten below +RUN sudo rm -rf /usr/lib/pmix + +# install ompi prereqs +RUN sudo apt-get update \ + && sudo apt-get -qq install -y --no-install-recommends \ + libevent-dev \ + flex \ + openssh-client \ + && sudo apt clean \ + && sudo rm -rf /var/lib/apt/lists/* + +# build/install openpmix +RUN cd /tmp \ + && git clone -b ${OPENPMIX_BRANCH} \ + --recursive --depth=1 https://github.com/openpmix/openpmix \ + && cd openpmix \ + && git branch \ + && ./autogen.pl \ + && ./configure --prefix=/usr \ + --enable-debug --disable-sphinx \ + && make -j $(nproc) \ + && sudo make install \ + && cd .. \ + && rm -rf openpmix + +# build/install ompi +RUN cd /tmp \ + && git clone -b ${OMPI_BRANCH} \ + --recursive --depth=1 https://github.com/open-mpi/ompi \ + && cd ompi \ + && git branch \ + && ./autogen.pl \ + && ./configure --prefix=/usr \ + --disable-man-pages --enable-debug --enable-mem-debug \ + --with-pmix=external --with-libevent --disable-sphinx \ + && make -j $(nproc) \ + && sudo make install \ + && cd .. \ + && rm -rf ompi + +USER $USER +WORKDIR /home/$USER + From d17649186f08be6ecf4bd5b1c26028cc53601075 Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Tue, 10 Dec 2024 07:02:40 -0800 Subject: [PATCH 2/2] docker: remove unused images Problem: ci only uses el8 and jammy docker images, but bionic, focal, and el7 are still out there. Remove them. Update the default image in docker-run-checks.sh from focal to jammy. --- src/test/docker/bionic/Dockerfile | 60 --------------------------- src/test/docker/docker-run-checks.sh | 2 +- src/test/docker/el7/Dockerfile | 59 --------------------------- src/test/docker/focal/Dockerfile | 61 ---------------------------- 4 files changed, 1 insertion(+), 181 deletions(-) delete mode 100644 src/test/docker/bionic/Dockerfile delete mode 100644 src/test/docker/el7/Dockerfile delete mode 100644 src/test/docker/focal/Dockerfile diff --git a/src/test/docker/bionic/Dockerfile b/src/test/docker/bionic/Dockerfile deleted file mode 100644 index 5019fa1..0000000 --- a/src/test/docker/bionic/Dockerfile +++ /dev/null @@ -1,60 +0,0 @@ -FROM fluxrm/flux-core:bionic - -ARG USER=fluxuser -ARG UID=1000 -ARG OMPI_BRANCH=v5.0.x -ARG OPENPMIX_BRANCH=v4.2.2 - -RUN \ - if test "$USER" != "fluxuser"; then \ - sudo groupadd -g $UID $USER \ - && sudo useradd -g $USER -u $UID -d /home/$USER -m $USER \ - && sudo sh -c "printf \"$USER ALL= NOPASSWD: ALL\\n\" >> /etc/sudoers" \ - && sudo adduser $USER sudo ; \ - fi - -# ompi can't coexist with mpich -RUN sudo apt remove -yy mpich \ - && sudo apt clean - -# install ompi prereqs -RUN sudo apt-get update \ - && sudo apt-get -qq install -y --no-install-recommends \ - libevent-dev \ - flex \ - openssh-client \ - && sudo apt clean \ - && sudo rm -rf /var/lib/apt/lists/* - -# build/install openpmix -RUN cd /tmp \ - && git clone -b ${OPENPMIX_BRANCH} \ - --recursive --depth=1 https://github.com/openpmix/openpmix \ - && cd openpmix \ - && git branch \ - && ./autogen.pl \ - && ./configure --prefix=/usr \ - --enable-debug --disable-sphinx \ - && make -j $(nproc) \ - && sudo make install \ - && cd .. \ - && rm -rf openpmix - -# build/install ompi -RUN cd /tmp \ - && git clone -b ${OMPI_BRANCH} \ - --recursive --depth=1 https://github.com/open-mpi/ompi \ - && cd ompi \ - && git branch \ - && ./autogen.pl \ - && ./configure --prefix=/usr \ - --disable-man-pages --enable-debug --enable-mem-debug \ - --with-pmix=external --with-libevent --disable-sphinx \ - && make -j $(nproc) \ - && sudo make install \ - && cd .. \ - && rm -rf ompi - -USER $USER -WORKDIR /home/$USER - diff --git a/src/test/docker/docker-run-checks.sh b/src/test/docker/docker-run-checks.sh index 21ea108..d31af47 100755 --- a/src/test/docker/docker-run-checks.sh +++ b/src/test/docker/docker-run-checks.sh @@ -11,7 +11,7 @@ PROJECT=flux-pmix BASE_DOCKER_REPO=fluxrm/flux-core WORKDIR=/usr/src -IMAGE=focal +IMAGE=jammy JOBS=2 MOUNT_HOME_ARGS="--volume=$HOME:/home/$USER -e HOME" diff --git a/src/test/docker/el7/Dockerfile b/src/test/docker/el7/Dockerfile deleted file mode 100644 index a807ab3..0000000 --- a/src/test/docker/el7/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -FROM fluxrm/flux-core:el7 - -ARG USER=fluxuser -ARG UID=1000 -ARG OMPI_BRANCH=v5.0.x -ARG OPENPMIX_BRANCH=v4.2.2 - -RUN \ - if test "$USER" != "fluxuser"; then \ - sudo groupadd -g $UID $USER \ - && sudo useradd -g $USER -u $UID -d /home/$USER -m $USER \ - && sudo sh -c "printf \"$USER ALL= NOPASSWD: ALL\\n\" >> /etc/sudoers" \ - && sudo usermod -G wheel $USER \ - && sudo usermod -G wheel fluxuser ; \ - fi - -# ompi incompatible with mpich -RUN sudo yum -y remove mpich mpich-devel - -# install ompi prereqs -RUN sudo yum -y update \ - && sudo yum -y install \ - flex \ - libevent-devel \ - zlib-devel \ - && sudo yum clean all - - # build/install openpmix -RUN cd /tmp \ - && git clone -b ${OPENPMIX_BRANCH} \ - --recursive --depth=1 https://github.com/openpmix/openpmix \ - && cd openpmix \ - && git branch \ - && ./autogen.pl \ - && ./configure --prefix=/usr \ - --enable-debug --disable-sphinx \ - && make -j $(nproc) \ - && sudo make install \ - && cd .. \ - && rm -rf openpmix - -# build/install ompi -RUN cd /tmp \ - && git clone -b ${OMPI_BRANCH} \ - --recursive --depth=1 https://github.com/open-mpi/ompi \ - && cd ompi \ - && git branch \ - && ./autogen.pl \ - && ./configure --prefix=/usr \ - --disable-man-pages --enable-debug --enable-mem-debug \ - --with-pmix=external --with-libevent --disable-sphinx \ - && make -j $(nproc) \ - && sudo make install \ - && cd .. \ - && rm -rf ompi - -USER $USER -WORKDIR /home/$USER - diff --git a/src/test/docker/focal/Dockerfile b/src/test/docker/focal/Dockerfile deleted file mode 100644 index 4b7e92f..0000000 --- a/src/test/docker/focal/Dockerfile +++ /dev/null @@ -1,61 +0,0 @@ -FROM fluxrm/flux-core:focal - -ARG USER=fluxuser -ARG UID=1000 -ARG OMPI_BRANCH=v5.0.x -ARG OPENPMIX_BRANCH=v4.2.2 - -RUN \ - if test "$USER" != "fluxuser"; then \ - sudo groupadd -g $UID $USER \ - && sudo useradd -g $USER -u $UID -d /home/$USER -m $USER \ - && sudo sh -c "printf \"$USER ALL= NOPASSWD: ALL\\n\" >> /etc/sudoers" \ - && sudo adduser $USER sudo ; \ - fi - -# remove installed mpich / openmpi / pmix -RUN sudo apt purge -yy mpich libmpich-dev \ - openmpi-bin openmpi-common libopenmpi-dev libopenmpi3 libpmix2 \ - && sudo apt clean - -# install ompi prereqs -RUN sudo apt-get update \ - && sudo apt-get -qq install -y --no-install-recommends \ - libevent-dev \ - flex \ - openssh-client \ - && sudo apt clean \ - && sudo rm -rf /var/lib/apt/lists/* - -# build/install openpmix -RUN cd /tmp \ - && git clone -b ${OPENPMIX_BRANCH} \ - --recursive --depth=1 https://github.com/openpmix/openpmix \ - && cd openpmix \ - && git branch \ - && ./autogen.pl \ - && ./configure --prefix=/usr \ - --enable-debug --disable-sphinx \ - && make -j $(nproc) \ - && sudo make install \ - && cd .. \ - && rm -rf openpmix - -# build/install ompi -RUN cd /tmp \ - && git clone -b ${OMPI_BRANCH} \ - --recursive --depth=1 https://github.com/open-mpi/ompi \ - && cd ompi \ - && git branch \ - && ./autogen.pl \ - && ./configure --prefix=/usr \ - --disable-man-pages --enable-debug --enable-mem-debug \ - --with-pmix=external --with-libevent --disable-sphinx \ - && make -j $(nproc) \ - && sudo make install \ - && cd .. \ - && rm -rf ompi - -USER $USER -WORKDIR /home/$USER -