1FROM i386/debian:wheezy
2
3ENV DEBIAN_FRONTEND noninteractive
4
5RUN echo "deb http://archive.debian.org/debian wheezy main" > /etc/apt/sources.list
6RUN echo "deb http://archive.debian.org/debian-security wheezy/updates main" >> /etc/apt/sources.list
7
8RUN apt-get -o Acquire::Check-Valid-Until=false update && apt-get install -y git make autoconf python curl wget bzip2 gcc g++ texlive texinfo valgrind libgl1-mesa-dev libxi-dev libxmu-dev libxft-dev libxinerama-dev libxcursor-dev libxfixes-dev mesa-common-dev libglu1-mesa-dev zlib1g-dev emacs23-nox && apt-get clean
9
10ENV CFLAGS=-fPIC
11ENV CXXFLAGS=-fPIC
12ENV FFLAGS=-fPIC
13
14# -----------------------
15# GCC with PIC
16# -----------------------
17
18RUN curl -L -O https://ftpmirror.gnu.org/gcc/gcc-5.5.0/gcc-5.5.0.tar.gz && tar xf gcc-5.5.0.tar.gz && cd gcc-5.5.0 && ./contrib/download_prerequisites && cd .. && mkdir gccbuild && cd gccbuild && ../gcc-5.5.0/configure -v --build=i386-linux-gnu --host=i386-linux-gnu --target=i386-linux-gnu --prefix=/usr/local --enable-checking=release --enable-languages=c,c++,fortran --disable-multilib --with-pic && make -j 4 && make install && cd .. && rm -rf gcc-5.5.0.tar.gz gcc-5.5.0 gccbuild
19
20ENV PATH=/usr/local/bin:${PATH}
21ENV LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}
22ENV CC=/usr/local/bin/gcc
23ENV CXX=/usr/local/bin/g++
24ENV FC=/usr/local/bin/gfortran
25
26# -----------------------
27# OpenBLAS
28# -----------------------
29
30RUN git clone https://github.com/xianyi/OpenBLAS.git && cd OpenBLAS && git checkout v0.2.20 && make NUM_THREADS=8 TARGET=CORE2 && cp libopenblas_core2p-r0.2.20.a /usr/local/lib/libopenblas.a && cd .. && rm -rf OpenBLAS
31
32# -----------------------
33# Freetype
34# -----------------------
35
36RUN curl -L -O http://download.savannah.gnu.org/releases/freetype/freetype-2.9.tar.gz && tar zxf freetype-2.9.tar.gz && cd freetype-2.9 && ./configure --disable-shared && make && make install && cd .. && rm -rf freetype-2.9.tar.gz freetype-2.9
37
38# -----------------------
39# CMake
40# -----------------------
41
42RUN curl -L -O https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4.tar.gz && tar zxf cmake-3.13.4.tar.gz && cd cmake-3.13.4 && ./configure && make && make install && cd .. && rm -rf cmake-3.13.4.tar.gz cmake-3.13.4
43
44# -----------------------
45# OpenCASCADE
46# -----------------------
47
48# RUN curl -L -o occt.tgz "http://git.dev.opencascade.org/gitweb/?p=occt.git;a=snapshot;h=refs/tags/V7_5_1;sf=tgz" && tar xf occt.tgz && cd occt-* && mkdir build && cd build && CXXFLAGS="-fPIC -DIGNORE_NO_ATOMICS" cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_LIBRARY_TYPE=Static -DBUILD_MODULE_Draw=0 -DBUILD_MODULE_Visualization=0 -DBUILD_MODULE_ApplicationFramework=0 .. && make -j 4 && make install && cd ../.. && rm -rf occt.tgz occt-*
49
50# OCC 7.5.1 still has the annoying bounding box bug - this is OCCT master from Feb 4 2021
51RUN curl -L -o occt.tgz "http://git.dev.opencascade.org/gitweb/?p=occt.git;a=snapshot;h=4ad4054;sf=tgz" && tar xf occt.tgz && cd occt-* && mkdir build && cd build && CXXFLAGS="-fPIC -DIGNORE_NO_ATOMICS" cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_LIBRARY_TYPE=Static -DBUILD_MODULE_Draw=0 -DBUILD_MODULE_Visualization=0 -DBUILD_MODULE_ApplicationFramework=0 .. && make -j 4 && make install && cd ../.. && rm -rf occt.tgz occt-*
52
53# -----------------------
54# HDF5
55# -----------------------
56
57RUN curl -L -O https://support.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.10.5.tar.gz && tar zxvf hdf5-1.10.5.tar.gz && cd hdf5-1.10.5 && ./configure --disable-shared --prefix=/usr/local && make && make install && cd .. && rm -rf hdf5-1.10.5.tar.gz hdf5-1.10.5
58
59# -----------------------
60# CGNS
61# -----------------------
62
63RUN git clone https://github.com/CGNS/CGNS.git && cd CGNS && git checkout v3.4.0 && mkdir build && cd build && cmake -DCGNS_BUILD_SHARED=0 -DCGNS_ENABLE_HDF5=1 -DHDF5_VERSION=1.10.5 .. && make && make install && cd ../.. && rm -rf CGNS
64
65# -----------------------
66# PETSc
67# -----------------------
68
69RUN curl -L -O http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.14.4.tar.gz
70RUN tar zxf petsc-3.14.4.tar.gz
71ENV PETSC_DIR ${PWD}/petsc-3.14.4
72
73ENV PETSC_ARCH real_mumps_seq
74RUN cd ${PETSC_DIR} && ./configure CC=$CC CXX=$CXX FC=$FC CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS FFLAGS=$FFLAGS --with-clanguage=cxx --with-debugging=0 --with-mpi=0 --with-mpiuni-fortran-binding=0 --download-mumps=yes --with-mumps-serial --with-shared-libraries=0 --with-x=0 --with-ssl=0 --with-scalar-type=real --with-blaslapack-lib="/usr/local/lib/libopenblas.a /usr/local/lib/libgfortran.a /usr/local/lib/libquadmath.a -lpthread" && make
75
76ENV PETSC_ARCH complex_mumps_seq
77RUN cd ${PETSC_DIR} && ./configure CC=$CC CXX=$CXX FC=$FC CFLAGS=$CFLAGS CXXFLAGS=$CXXFLAGS FFLAGS=$FFLAGS --with-clanguage=cxx --with-debugging=0 --with-mpi=0 --with-mpiuni-fortran-binding=0 --download-mumps=yes --with-mumps-serial --with-shared-libraries=0 --with-x=0 --with-ssl=0 --with-scalar-type=complex --with-blaslapack-lib="/usr/local/lib/libopenblas.a /usr/local/lib/libgfortran.a /usr/local/lib/libquadmath.a -lpthread" && make
78
79RUN sed -i 's|-lgfortran -lquadmath -lpthread -lstdc++ -ldl -lgfortran -lm -lgfortran -lm -lgcc_s -lquadmath -lstdc++ -ldl|/usr/local/lib/libgfortran.a /usr/local/lib/libquadmath.a -lpthread -lstdc++ -static-libstdc++ -ldl -lm -lgcc_s|' /petsc-3.14.4/complex_mumps_seq/lib/petsc/conf/petscvariables
80
81RUN sed -i 's|-lgfortran -lquadmath -lpthread -lstdc++ -ldl -lgfortran -lm -lgfortran -lm -lgcc_s -lquadmath -lstdc++ -ldl|/usr/local/lib/libgfortran.a /usr/local/lib/libquadmath.a -lpthread -lstdc++ -static-libstdc++ -ldl -lm -lgcc_s|' /petsc-3.14.4/real_mumps_seq/lib/petsc/conf/petscvariables
82
83# -----------------------
84# SLEPc
85# -----------------------
86
87RUN curl -L -O https://slepc.upv.es/download/distrib/slepc-3.14.1.tar.gz
88RUN tar zxf slepc-3.14.1.tar.gz
89ENV SLEPC_DIR ${PWD}/slepc-3.14.1
90ENV PETSC_ARCH real_mumps_seq
91RUN cd ${SLEPC_DIR} && ./configure && make
92ENV PETSC_ARCH complex_mumps_seq
93RUN cd ${SLEPC_DIR} && ./configure && make
94
95# -----------------------
96# MED
97# -----------------------
98
99RUN curl -L -O http://files.salome-platform.org/Salome/other/med-4.1.0.tar.gz && tar zxf med-4.1.0.tar.gz && cd med-4.1.0 && LIBS=-ldl ./configure --with-hdf5=/usr/local --enable-build-static --disable-shared --disable-python --disable-fortran --disable-tests && make -i install && cd .. && rm -rf med-4.1.0.tar.gz med-4.1.0
100
101# -----------------------
102# FLTK
103# -----------------------
104
105# "docker build --build-arg REBUILD_FLTK=somethingnew"
106ARG REBUILD_FLTK=dummy
107RUN git clone https://github.com/fltk/fltk.git && cd fltk && make makeinclude && ./configure --enable-localzlib && make -j 4 && make install && cd ../.. && rm -rf fltk
108
109# -----------------------
110# MMG
111# -----------------------
112
113# Disable MMG for now: it crashes on this 32 bit docker (problem allocating hash for edges)...
114
115# RUN git clone https://github.com/MmgTools/mmg.git && cd mmg && mkdir build && cd build && cmake .. && make -j8 && make install && cd .. && rm -rf mmg
116
117# -----------------------
118# Minimal Gmsh library
119# -----------------------
120
121# "docker build --build-arg REBUILD_GMSH=somethingnew"
122ARG REBUILD_GMSH=
123
124RUN git clone https://gitlab.onelab.info/gmsh/gmsh.git && cd gmsh && mkdir build && cd build && cmake -DDEFAULT=0 -DENABLE_PARSER=1 -DENABLE_POST=1 -DENABLE_PLUGINS=1 -DENABLE_ANN=1 -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_LIB=1 -DENABLE_PRIVATE_API=1 .. && make -j 1 lib && make install/fast && cd ../.. && rm -rf gmsh
125
126VOLUME ["/etc/gitlab-runner"]
127RUN useradd -ms /bin/bash geuzaine
128USER geuzaine
129WORKDIR /home/geuzaine
130RUN mkdir -p ~/.ssh
131RUN chmod 700 ~/.ssh
132