-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
94 lines (81 loc) · 2.64 KB
/
Dockerfile
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
# Using scientific linux as base
FROM sl:7
LABEL maintainer="[email protected]"
ENV ROOT_VERSION=5.34.36
COPY packages packages
# Install ROOT dependencies and some additional packages
RUN yum update -y \
&& yum install -y yum-conf-epel.noarch \
&& yum install -y $(cat packages) \
&& rm -f /packages
### PSQL(9.6) ###
RUN yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm \
&& yum install -y postgresql96 postgresql96-devel
ENV PATH=/usr/pgsql-9.6/bin:$PATH \
LD_LIBRARY_PATH=/usr/pgsql-9.6/lib:$LD_LIBRARY_PATH
# Clean
RUN yum clean all && rm -rf /var/cache/yum && rm -rf /usr/tmp/*
# Set up pip (numpy + psycopg2)
RUN pip install --no-cache-dir --upgrade pip setuptools \
&& pip install --no-cache-dir numpy psycopg2
# Download ROOT
WORKDIR /root
RUN curl -O https://root.cern.ch/download/root_v${ROOT_VERSION}.source.tar.gz \
&& mkdir root-${ROOT_VERSION} \
&& tar xzf root_v${ROOT_VERSION}.source.tar.gz -C root-${ROOT_VERSION} --strip-components 1 \
&& rm -rf ${HOME}/root_v${ROOT_VERSION}.source.tar.gz
# # Install
WORKDIR /tmp
RUN mkdir -p /opt/root \
&& cmake ${HOME}/root-${ROOT_VERSION}/ -DCMAKE_C_COMPILER=$(which gcc) \
-DCMAKE_CXX_COMPILER=$(which g++) \
-DCMAKE_INSTALL_PREFIX=/opt/root \
-Dfail-on-missing=ON \
-Dfftw3:BOOL=ON -Droofit:BOOL=ON \
-Dmathmore:BOOL=ON \
-Dminuit:BOOL=ON \
-Dminuit2:BOOL=ON \
-Dgsl_shared:BOOL=ON \
-Dqt:BOOL=ON \
-Dpgsql:BOOL=ON \
-DPOSTGRESQL_INCLUDE_DIR=/usr/pgsql-9.6/include \
-DPOSTGRESQL_LIBRARIES=/usr/pgsql-9.6/lib/libpq.so \
-Dbuiltin_afterimage=OFF \
-Dbuiltin_ftgl=OFF \
-Dbuiltin_gl2ps=OFF \
-Dbuiltin_glew=OFF \
-Dbuiltin_tbb=ON \
-Dbuiltin_unuran=OFF \
-Dbuiltin_vdt=ON \
-Dbuiltin_veccore=ON \
-Dbuiltin_xrootd=OFF \
-Dbonjour=OFF \
-Dgfal=OFF \
-Darrow=OFF \
-Dcastor=OFF \
-Dchirp=OFF \
-Dgeocad=OFF \
-Dglite=OFF \
-Dhdfs=OFF \
-Dmonalisa=OFF \
-Doracle=OFF \
-Dpythia6=OFF \
-Drfio=OFF \
-Droot7=OFF \
-Dsapdb=OFF \
-Dsrp=OFF \
-Dvc=OFF
RUN cmake --build . -- -j$(nproc) \
&& cmake --build . --target install \
&& rm -rf ${HOME}/root-${ROOT_VERSION} /tmp/*
ENV ROOTSYS="/opt/root"
ENV PATH="$ROOTSYS/bin:$PATH" \
LD_LIBRARY_PATH="$ROOTSYS/lib:$LD_LIBRARY_PATH" \
PYTHONPATH="$ROOTSYS/lib:$PYTHONPATH" \
DISPLAY=0
RUN echo ". ${ROOTSYS}/bin/thisroot.sh" >> ~/.bashrc
WORKDIR /root
RUN /sbin/ldconfig
CMD [ "/bin/bash" ]
# Another way of installing ROOT (in case building fails)
# https://redmine.jlab.org/projects/podd/wiki/ROOT_Installation_Guide