diff --git a/test/ci/manjaro:stable/Dockerfile b/test/ci/manjaro:stable/Dockerfile new file mode 100644 index 000000000..791defed5 --- /dev/null +++ b/test/ci/manjaro:stable/Dockerfile @@ -0,0 +1,87 @@ +FROM manjarolinux/base:latest as base + +# squashing the whole base image into one layer +FROM scratch AS release +COPY --from=base / / + +ARG TARGETPLATFORM + +ARG CACHEBUST=1 +ENV LANG=en_US.UTF-8 + +ENV PATH="/usr/bin:${PATH}" + +RUN uname -m && \ + pacman-key --init && \ + pacman-mirrors -f 5 + +RUN [[ "${TARGETPLATFORM}" == "linux/amd64" ]] || exit 0 && \ + pacman -Syy --noconfirm --needed archlinux-keyring manjaro-keyring && \ + pacman-key --populate archlinux manjaro + +RUN [[ "${TARGETPLATFORM}" == "linux/arm64" ]] || exit 0 && \ + pacman -Syy --noconfirm --needed archlinuxarm-keyring manjaro-arm-keyring && \ + pacman-key --populate archlinuxarm manjaro-arm + +RUN pacman -S --noconfirm --needed \ + shadow \ + git \ + git-lfs \ + cmake \ + libseccomp \ + autoconf \ + automake \ + binutils \ + bison \ + fakeroot \ + file \ + findutils \ + flex \ + gawk \ + gcc \ + gettext \ + grep \ + groff \ + gzip \ + libtool \ + m4 \ + make \ + pacman \ + patch \ + pkgconf \ + sed \ + sudo \ + texinfo \ + lsb-release \ + manjaro-release \ + boost \ + which && \ + # docker context give real space limits + sed -i -e 's~CheckSpace.*~#CheckSpace~g' '/etc/pacman.conf' && \ + pacman -Syyu --noconfirm --needed + +RUN ls /etc/*-release && cat /etc/*-release + +# user 'builder' can be used as the running user for applications prohibiting root usage (pacman) +RUN id -u builder &>/dev/null || (useradd -d /builder -m builder && \ + echo "builder ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers) + +RUN pacman -Syu --noconfirm rust + +USER builder + +RUN cd && git clone https://aur.archlinux.org/paru.git && \ + cd paru && makepkg -s && \ + sudo pacman -U --noconfirm paru*.zst && \ + cd /builder && rm -rf paru + +RUN paru -S --noconfirm scotch scalapack parmetis metis + +RUN cd && curl -O http://mumps.enseeiht.fr/MUMPS_5.4.1.tar.gz && \ + tar xvzf MUMPS_5.4.1.tar.gz + +COPY Makefile.inc /builder/MUMPS_5.4.1 + +RUN cd /builder/MUMPS_5.4.1 && make + +CMD ["/usr/bin/bash"] diff --git a/test/ci/manjaro:stable/Makefile.inc b/test/ci/manjaro:stable/Makefile.inc new file mode 100644 index 000000000..bd6598d34 --- /dev/null +++ b/test/ci/manjaro:stable/Makefile.inc @@ -0,0 +1,167 @@ +# +# This file is part of MUMPS 5.4.1, released +# on Tue Aug 3 09:49:43 UTC 2021 +# +################################################################################ +# +# Makefile.inc.generic +# +# This defines some parameters dependent on your platform; you should +# look for the approriate file in the directory ./Make.inc/ and copy it +# into a file called Makefile.inc. For example, from the MUMPS root +# directory, use +# "cp Make.inc/Makefile.inc.generic ./Makefile.inc" +# (see the main README file for details) +# +# If you do not find any suitable Makefile in Makefile.inc, use this file: +# "cp Make.inc/Makefile.inc.generic ./Makefile.inc" and modify it according +# to the comments given below. If you manage to build MUMPS on a new platform, +# and think that this could be useful to others, you may want to send us +# the corresponding Makefile.inc file. +# +################################################################################ + + +######################################################################## +#Begin orderings +# +# NOTE that PORD is distributed within MUMPS by default. It is recommended to +# install other orderings. For that, you need to obtain the corresponding package +# and modify the variables below accordingly. +# For example, to have Metis available within MUMPS: +# 1/ download Metis and compile it +# 2/ uncomment (suppress # in first column) lines +# starting with LMETISDIR, LMETIS +# 3/ add -Dmetis in line ORDERINGSF +# ORDERINGSF = -Dpord -Dmetis +# 4/ Compile and install MUMPS +# make clean; make (to clean up previous installation) +# +# Metis/ParMetis and SCOTCH/PT-SCOTCH (ver 6.0 and later) orderings are recommended. +# + +SCOTCHDIR = /usr +ISCOTCH = -I$(SCOTCHDIR)/include/scotch +# +# You have to choose one among the following two lines depending on +# the type of analysis you want to perform. If you want to perform only +# sequential analysis choose the first (remember to add -Dscotch in the ORDERINGSF +# variable below); for both parallel and sequential analysis choose the second +# line (remember to add -Dptscotch in the ORDERINGSF variable below) + +#LSCOTCH = -L$(SCOTCHDIR)/lib -lesmumps -lscotch -lscotcherr +#LSCOTCH = -L$(SCOTCHDIR)/lib -lptesmumps -lptscotch -lptscotcherr +LSCOTCH = -L$(SCOTCHDIR)/lib -lptesmumps -lscotch -lptscotch -lptscotcherr -lptscotcherrexit + +LPORDDIR = $(topdir)/PORD/lib/ +IPORD = -I$(topdir)/PORD/include/ +LPORD = -L$(LPORDDIR) -lpord + +LMETISDIR = /usr +IMETIS = -I$(LMETISDIR)/include + +# You have to choose one among the following two lines depending on +# the type of analysis you want to perform. If you want to perform only +# sequential analysis choose the first (remember to add -Dmetis in the ORDERINGSF +# variable below); for both parallel and sequential analysis choose the second +# line (remember to add -Dparmetis in the ORDERINGSF variable below) + +#LMETIS = -L$(LMETISDIR) -lmetis +LMETIS = -L$(LMETISDIR) -lparmetis -lmetis + +# The following variables will be used in the compilation process. +# Please note that -Dptscotch and -Dparmetis imply -Dscotch and -Dmetis respectively. +# If you want to use Metis 4.X or an older version, you should use -Dmetis4 instead of -Dmetis +# or in addition with -Dparmetis (if you are using parmetis 3.X or older). +ORDERINGSF = -Dscotch -Dmetis -Dpord -Dptscotch -Dparmetis +#ORDERINGSF = -Dpord +ORDERINGSC = $(ORDERINGSF) + +LORDERINGS = $(LMETIS) $(LPORD) $(LSCOTCH) +IORDERINGSF = $(ISCOTCH) +IORDERINGSC = $(IMETIS) $(IPORD) $(ISCOTCH) + +#End orderings +######################################################################## + +######################################################################## +# DEFINE HERE SOME COMMON COMMANDS, THE COMPILER NAMES, ETC... + +# PLAT : use it to add a default suffix to the generated libraries +PLAT = +# Library extension, + C and Fortran "-o" option +# may be different under Windows +LIBEXT = .a +OUTC = -o +OUTF = -o +# RM : remove files +RM = /bin/rm -f +# CC : C compiler +CC = mpicc +# FC : Fortran 90 compiler +FC = mpif90 +# FL : Fortran linker +FL = mpif90 +# AR : Archive object in a library +# keep a space at the end if options have to be separated from lib name +AR = ar vr +# RANLIB : generate index of an archive file +# (optionnal use "RANLIB = echo" in case of problem) +RANLIB = ranlib +#RANLIB = echo + +# DEFINE HERE YOUR LAPACK LIBRARY + +LAPACK = -llapack + +# SCALAP should define the SCALAPACK and BLACS libraries. +SCALAP = -lscalapack + +# INCLUDE DIRECTORY FOR MPI +INCPAR = -I/usr/include + +# LIBRARIES USED BY THE PARALLEL VERSION OF MUMPS: $(SCALAP) and MPI +LIBPAR = $(SCALAP) $(LAPACK) -L/usr/lib -lmpi + +# The parallel version is not concerned by the next two lines. +# They are related to the sequential library provided by MUMPS, +# to use instead of ScaLAPACK and MPI. +INCSEQ = -I$(topdir)/libseq +LIBSEQ = $(LAPACK) -L$(topdir)/libseq -lmpiseq + +# DEFINE HERE YOUR BLAS LIBRARY + +LIBBLAS = -lblas + +# DEFINE HERE YOUR PTHREAD LIBRARY +LIBOTHERS = -lpthread + +# FORTRAN/C COMPATIBILITY: +# Use: +# -DAdd_ if your Fortran compiler adds an underscore at the end +# of symbols, +# -DAdd__ if your Fortran compiler adds 2 underscores, +# +# -DUPPER if your Fortran compiler uses uppercase symbols +# +# leave empty if your Fortran compiler does not change the symbols. +# + +CDEFS = -DAdd_ + +#COMPILER OPTIONS +OPTF = -O2 -fopenmp -fPIC -w -fallow-argument-mismatch +OPTC = -O2 -fopenmp -fPIC +OPTL = -O2 -fopenmp -fPIC + +# CHOOSE BETWEEN USING THE SEQUENTIAL OR THE PARALLEL VERSION. + +#Sequential: +#INCS = $(INCSEQ) +#LIBS = $(LIBSEQ) +#LIBSEQNEEDED = libseqneeded + +#Parallel: +INCS = $(INCPAR) +LIBS = $(LIBPAR) +LIBSEQNEEDED =