-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathxyce.dockerfile
128 lines (115 loc) · 3.29 KB
/
xyce.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
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
# SPDX-FileCopyrightText: 2022 Pepijn de Vos
#
# SPDX-License-Identifier: GPL-3.0-or-later
FROM ubuntu:latest AS build
RUN apt-get update -qq && \
DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \
ca-certificates \
curl \
gcc \
g++ \
gfortran \
make \
cmake \
bison \
flex \
libfl-dev \
libfftw3-dev \
libsuitesparse-dev \
libblas-dev \
liblapack-dev \
libtool \
autoconf \
automake
ENV XYCE_OUTDIR=/usr/local/
ENV PATH="${PATH}:/tmp${XYCE_OUTDIR}bin"
ENV LIBRARY_PATH="${LIBRARY_PATH}:/tmp${XYCE_OUTDIR}lib"
ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/tmp${XYCE_OUTDIR}lib"
ENV CPATH="${CPATH}:/tmp${XYCE_OUTDIR}include"
WORKDIR /tmp/build/
# Get Trilinos and Xyce
RUN mkdir -p Trilinos/trilinos-source && \
curl -fsSL https://github.com/trilinos/Trilinos/archive/trilinos-release-12-12-1.tar.gz | \
tar xz -C Trilinos/trilinos-source --strip-components=1 && \
mkdir -p Xyce && \
curl -fsSL https://github.com/Xyce/Xyce/archive/refs/tags/Release-7.4.0.tar.gz | \
tar xz -C Xyce --strip-components=1
ENV ARCHDIR=$XYCE_OUTDIR
ENV FLAGS="-O3 -fPIC"
# Build Trilinos
RUN cd Trilinos && \
cmake \
-G "Unix Makefiles" \
-DCMAKE_CXX_FLAGS="$FLAGS" \
-DCMAKE_C_FLAGS="$FLAGS" \
-DCMAKE_Fortran_FLAGS="$FLAGS" \
-DCMAKE_INSTALL_PREFIX="$XYCE_OUTDIR" \
-DCMAKE_MAKE_PROGRAM="make" \
-DBUILD_SHARED_LIBS=ON \
-DTrilinos_ENABLE_EXPLICIT_INSTANTIATION=ON \
-DTrilinos_ENABLE_NOX=ON \
-DNOX_ENABLE_LOCA=ON \
-DTrilinos_ENABLE_EpetraExt=ON \
-DEpetraExt_BUILD_BTF=ON \
-DEpetraExt_BUILD_EXPERIMENTAL=ON \
-DEpetraExt_BUILD_GRAPH_REORDERINGS=ON \
-DTrilinos_ENABLE_TrilinosCouplings=ON \
-DTrilinos_ENABLE_Ifpack=ON \
-DTrilinos_ENABLE_Isorropia=ON \
-DTrilinos_ENABLE_AztecOO=ON \
-DTrilinos_ENABLE_Belos=ON \
-DTrilinos_ENABLE_Triutils=ON \
-DTrilinos_ENABLE_Teuchos=ON \
-DTeuchos_ENABLE_COMPLEX=ON \
-DTrilinos_ENABLE_Amesos=ON \
-DAmesos_ENABLE_KLU=ON \
-DAmesos_ENABLE_UMFPACK=ON \
-DTrilinos_ENABLE_Sacado=ON \
-DTrilinos_ENABLE_Kokkos=OFF \
-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF \
-DTPL_ENABLE_AMD=ON \
-DAMD_LIBRARY_DIRS="/usr/lib" \
-DTPL_AMD_INCLUDE_DIRS="/usr/include/suitesparse" \
-DTPL_ENABLE_UMFPACK=ON \
-DUMFPACK_LIBRARY_DIRS="/usr/lib" \
-DTPL_UMFPACK_INCLUDE_DIRS="/usr/include/suitesparse" \
-DTPL_ENABLE_BLAS=ON \
-DTPL_ENABLE_LAPACK=ON \
./trilinos-source && \
make DESTDIR=/tmp -j$(nproc) install
ENV xyceBuildDir=/opt/Xyce/xyce-build/
# Build Xyce
RUN cd Xyce && ./bootstrap && \
cd .. && mkdir xyce-build && cd xyce-build && \
../Xyce/configure \
CXXFLAGS="-O3 -std=c++11" \
LDFLAGS="-Wl,-rpath=$xyceBuildDir/utils/XyceCInterface -Wl,-rpath=$xyceBuildDir/lib" \
CPPFLAGS="-I/usr/include/suitesparse" \
ADMS_CXXFLAGS="-O1" \
--disable-reaction_parser \
--disable-verbose_linear \
--disable-verbose_nonlinear \
--disable-verbose_time \
--enable-shared \
--enable-xyce-shareable && \
make DESTDIR=/tmp -j$(nproc) install
#--
FROM ubuntu:latest
COPY --from=build /tmp/usr/local /usr/local
RUN apt-get update -qq && \
DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \
ca-certificates \
libgfortran5 \
libfftw3-3 \
libblas3 \
liblapack3 \
libsuitesparseconfig5 \
libumfpack5 \
build-essential \
cmake \
pkg-config \
capnproto \
libcapnp-dev \
&& \
apt-get autoclean && apt-get clean && apt-get -y autoremove && \
update-ca-certificates