forked from taw10/crystfel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile_centos7
133 lines (119 loc) · 5.38 KB
/
Dockerfile_centos7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
FROM centos:centos7
## Following hack is required for Centos7 image as Centos7 is EOL.
## yum-config-manager --nogpgcheck --add-repo https://archive.kernel.org/centos-vault/7.9.2009/os/x86_64/Packages/
## yum-config-manager --nogpgcheck --add-repo http://archive.kernel.org/centos-vault/7.9.2009/updates/x86_64/
## yum-config-manager --nogpgcheck --add-repo https://mirror.nsc.liu.se/centos-store/7.9.2009/os/x86_64/Packages/
## yum-config-manager --nogpgcheck --add-repo https://mirror.nsc.liu.se/centos-store/7.9.2009/updates/x86_64/Packages/
ENV CFPREFIX=/software/crystfel/devel
ENV PKG_CONFIG_PATH=$CFPREFIX/lib64/pkgconfig:$CFPREFIX/lib/pkgconfig
ENV LD_LIBRARY_PATH=$CFPREFIX/lib64:$CFPREFIX/lib
ENV LD_RUN_PATH=$CFPREFIX/lib64:$CFPREFIX/lib
ENV PATH=$CFPREFIX/bin:/opt/cmake-3.18.2-Linux-x86_64/bin/:$PATH
RUN yum-config-manager --disable \* && \
yum-config-manager --nogpgcheck --add-repo https://vault.centos.org/7.9.2009/os/x86_64/ && \
yum-config-manager --nogpgcheck --add-repo https://vault.centos.org/7.9.2009/updates/x86_64/ **\
yum-config-manager --enable vault.centos.org_7.9.2009_os_x86_64_ && \
yum-config-manager --save --setopt=vault.centos.org_7.9.2009_os_x86_64_.gpgkey="file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7" && \
yum-config-manager --enable vault.centos.org_7.9.2009_updates_x86_64_ && \
yum-config-manager --save --setopt=vault.centos.org_7.9.2009_updates_x86_64_.gpgkey="file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7"
RUN yum -y update ; \
yum -y group install 'Development Tools' ; \
yum -y install flex bison gcc-c++ gcc-gfortran gtk3-devel cairo-devel \
pango-devel gdk-pixbuf2-devel libpng-devel diffutils \
zeromq-devel python3-devel which wget lz4 lz4-devel \
bzip2-libs bzip2-devel libcurl-devel openssh-clients krb5-workstation cmake
RUN sed -i -E '/default_ccache_name/s//# default_ccache_name/g' /etc/krb5.conf ; \
sed -i -E '/#\s+default_realm\s* =\s*EXAMPLE.COM\s*/s//default_realm = DESY.DE/g' /etc/krb5.conf ; \
if [ ! -d ~/.ssh ]; then \
mkdir -p ~/.ssh; \
chmod 700 ~/.ssh; \
fi; \
wget -q https://wims.desy.de/system/ALL_afs/etc/ssh_known_hosts2 -O ~/.ssh/known_hosts
RUN python3 -m ensurepip --upgrade && python3 -m pip install meson ninja
# CMake
RUN cd /opt; \
wget -nv https://github.com/Kitware/CMake/releases/download/v3.18.2/cmake-3.18.2-Linux-x86_64.tar.gz; \
tar -xzf cmake-3.18.2-Linux-x86_64.tar.gz; \
rm ./cmake-3.18.2-Linux-x86_64.tar.gz
# HDF5
RUN wget -nv https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.1/src/hdf5-1.12.1.tar.bz2 ; \
tar -xf hdf5-1.12.1.tar.bz2 ; \
pushd hdf5-1.12.1; \
./configure --prefix=$CFPREFIX \
--enable-shared --disable-static \
--with-default-plugindir=${CFPREFIX}/lib64/plugins ;\
make -j 32; \
make install; \
popd; \
rm -rf hdf5-1.12.1 hdf5-1.12.1.tar.bz2
# HDF5 filter plugins
RUN git clone --depth 1 https://github.com/nexusformat/HDF5-External-Filter-Plugins.git ; \
pushd HDF5-External-Filter-Plugins; \
mkdir build; \
pushd build; \
cmake .. -DCMAKE_INSTALL_PREFIX=$CFPREFIX \
-DENABLE_BITSHUFFLE_PLUGIN=yes \
-DENABLE_LZ4_PLUGIN=yes \
-DENABLE_BZIP2_PLUGIN=yes \
-DCMAKE_BUILD_TYPE=Release ; \
popd; \
make -C build -j 32; \
make -C build install; \
popd ; \
rm -rf HDF5-External-Filter-Plugins
# GSL
RUN wget -nv http://ftp.fau.de/gnu/gsl/gsl-2.6.tar.gz ; \
tar -xzf gsl-2.6.tar.gz ; \
pushd gsl-2.6 ; \
./configure --prefix=$CFPREFIX ; \
make -j 32 ; \
make install ; \
popd ; \
rm -rf gsl-2.6 gsl-2.6.tar.gz
# FFTW
RUN wget -nv http://fftw.org/fftw-3.3.9.tar.gz ; \
tar -xzf fftw-3.3.9.tar.gz ; \
pushd fftw-3.3.9 ; \
./configure --enable-shared --prefix=$CFPREFIX ; \
make -j 32 ; \
make install ; \
popd ; \
rm -rf fftw-3.3.9 fftw-3.3.9.tar.gz ;
# MsgPack
RUN wget -nv https://github.com/msgpack/msgpack-c/releases/download/cpp-3.3.0/msgpack-3.3.0.tar.gz ; \
tar -xzf msgpack-3.3.0.tar.gz ; \
pushd msgpack-3.3.0; \
mkdir build; \
pushd build; \
cmake .. -DCMAKE_INSTALL_PREFIX=$CFPREFIX \
-DMSGPACK_BUILD_EXAMPLES=OFF \
-DMSGPACK_ENABLE_CXX=OFF \
-DCMAKE_BUILD_TYPE=Release ; \
popd ; \
make -C build -j 32 ; \
make -C build install ; \
popd ; \
rm -rf msgpack-3.3.0 msgpack-3.3.0.tar.gz
# ASAP::O
RUN git clone https://gitlab.desy.de/asapo/asapo.git ; \
pushd asapo ; \
git checkout 23.12.0-alpha ; \
mkdir build ; \
pushd build ; \
cmake .. -GNinja -DBUILD_CLIENTS_ONLY=ON -DBUILD_PYTHON=OFF \
-DCMAKE_INSTALL_PREFIX=$CFPREFIX \
-DCMAKE_BUILD_TYPE=RelWithDebInfo ; \
popd ; \
ninja -C build ; \
ninja -C build install ; \
popd
# Seedee
RUN git clone https://gitlab.desy.de/fs-sc/seedee.git ; \
pushd seedee ; \
mkdir build ; \
cd build ; \
cmake .. -GNinja -DCMAKE_INSTALL_PREFIX=$CFPREFIX -DCMAKE_BUILD_TYPE=RelWithDebInfo ; \
cd .. ; \
ninja -C build ; \
ninja -C build install ; \
popd