v0.15.5
Loading...
Searching...
No Matches
package.py
Go to the documentation of this file.
1# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
2# Spack Project Developers. See the top-level COPYRIGHT file for details.
3#
4# SPDX-License-Identifier: (Apache-2.0 OR MIT)
5
6
7from spack import *
8
9
11 """MofemUsersModules creates installation environment for user-provided
12 modules and extends of mofem-cephas package. For more information how to
13 work with Spack and MoFEM see
14 http://mofem.eng.gla.ac.uk/mofem/html/install_spack.html"""
15
16 homepage = "http://mofem.eng.gla.ac.uk"
17 git = "https://likask@bitbucket.org/mofem/users-modules-cephas.git"
18
19 version('master', branch='master')
20 version('develop', branch='develop')
21 version('lukasz', branch='lukasz/develop')
22 version('karol', branch='karol/develop')
23 version('0.14.1', branch='Version0.14.1')
24 version('0.14.0', branch='Version0.14.0')
25 version('0.13.2', branch='Version0.13.2')
26 version('0.13.0', branch='Version0.13.0')
27 version('0.12.3', branch='Version0.12.3')
28 version('0.12.2', branch='Version0.12.2')
29 version('0.12.1', branch='Version0.12.1')
30 version('0.12.0', branch='Version0.12.0')
31 version('0.11.1', branch='Version0.11.1')
32 version('0.11.0', branch='Version0.11.0')
33 version('0.10.0', branch='Version0.10.0')
34 version('0.9.2', branch='Version0.9.2')
35 version('0.9.1', tag='v0.9.1-release')
36 version('0.9.0', commit='173cefb39de9699935568d5d33db4b51a8813ef6')
37 version('0.8.23', commit='12d9df7fd31e95b90d245e1eee055769424e04a9')
38 version('0.8.21', commit='21825107ca949bd7ec5ea7bbd523bd2fd890be7f')
39 version('0.8.20', commit='1b43c08113a8f4c77cd25ee2f4071660a1a79695')
40 version('0.8.19', commit='0e79a7be9369ec2cd63301f5ed939a1b5d5c1fdc')
41 version('0.8.18', commit='860be021ca6891477166e14c56cfeeb087e967ff')
42 version('0.8.17', commit='60b2341f1635f595d571096dd8c70a7cf7538aeb')
43 version('0.8.16', commit='f6af51ad7db5b5dbc9d9acc6e753277a857c9f24')
44 version('0.8.15', commit='4843b2d92ec21ad100a8d637698f56b3a2e14af3')
45 version('0.8.14', commit='cfaa32133c574a31beaeb36202d033280521ddff')
46 version('0.8.12', commit='7b2ce5595a95d1b919f50103513c44bb2bc9e6d2')
47 version('0.8.11', commit='329b06d758137f1ec830f157d383b5ea415963de')
48 version('0.8.10', commit='ca03a8222b20f9c8ff93a2d6f4c3babbcfde2058')
49 version('0.8.8', commit='eb40f3c218badcd528ab08ee952835fb2ff07fd3')
50 version('0.8.7', commit='a83b236f26f258f4d6bafc379ddcb9503088df56')
51
52 maintainers = ['likask']
53
54 variant('install_id', default="0",
55 description='Internal install ID used by Jenkins')
56 variant('copy_user_modules', default=True,
57 description='Copy user modules directory instead linking')
58 variant('docker', default=False, description='Build in docker volume')
59 variant('mgis', default=False, description='Build with mgis package (MFront)')
60
61 extends('mofem-cephas')
62 depends_on('mofem-cephas@:0.14.99', when='@0.14.0:0.14.99')
63 depends_on('mofem-cephas@0.13.2', when='@0.13.2:0.13.99')
64 depends_on('mofem-cephas@0.13.0', when='@0.13.0:0.13.1')
65 depends_on('mofem-cephas@0.12.1', when='@0.12.2:0.12.3')
66 depends_on('mofem-cephas@0.12.0', when='@0.12.1')
67 depends_on('mofem-cephas@0.12.0', when='@0.12.0')
68 depends_on('mofem-cephas@0.11.1', when='@0.11.1')
69 depends_on('mofem-cephas@0.11.0', when='@0.11.0')
70 depends_on('mofem-cephas@0.10.0', when='@0.10.0')
71 depends_on('mofem-cephas@0.9.2', when='@0.9.2')
72 depends_on('mofem-cephas@0.9.1', when='@0.9.1')
73 depends_on('mofem-cephas@0.9.0', when='@0.9.0')
74 depends_on('mofem-cephas@0.8.23:0.8.99', when='@0.8.23')
75 depends_on('mofem-cephas@0.8.21:0.8.22', when='@0.8.21')
76 depends_on('mofem-cephas@0.8.20', when='@0.8.20')
77 depends_on('mofem-cephas@0.8.19', when='@0.8.19')
78 depends_on('mofem-cephas@0.8.18', when='@0.8.18')
79 depends_on('mofem-cephas@0.8.17', when='@0.8.17')
80 depends_on('mofem-cephas@0.8.16', when='@0.8.16')
81 depends_on('mofem-cephas@0.8.15', when='@0.8.15')
82 depends_on('mofem-cephas@0.8.14', when='@0.8.14')
83 depends_on('mofem-cephas@0.8.12:0.8.13', when='@0.8.12')
84 depends_on('mofem-cephas@0.8.11', when='@0.8.11')
85 depends_on('mofem-cephas@0.8.10', when='@0.8.10')
86 depends_on('mofem-cephas@0.8.8:0.8.9', when='@0.8.8')
87 depends_on('mofem-cephas@0.8.7', when='@0.8.7')
88 depends_on('mofem-cephas@master', when='@master')
89 depends_on('mofem-cephas@develop', when='@develop')
90 depends_on('mofem-cephas@lukasz', when='@lukasz')
91 depends_on('mofem-cephas@develop', when='@karol')
92
93 variant('shared', default=False,
94 description='Builds a shared version of the library')
95
96 # Build variants
97 variant('basic_fe', default=True, description='Build basic finite elements')
98 variant('basic_tutorials', default=True, description='Build basic tutorials')
99
100 variant('build_tut_fun0', default=True, description='Build tutorial')
101 variant('build_tut_fun1', default=True, description='Build tutorial')
102 variant('build_tut_fun2', default=True, description='Build tutorial')
103 variant('build_tut_msh1', default=True, description='Build tutorial')
104 variant('build_tut_msh2', default=True, description='Build tutorial')
105 variant('build_tut_scl0', default=True, description='Build tutorial')
106 variant('build_tut_scl1', default=True, description='Build tutorial')
107 variant('build_tut_scl2', default=True, description='Build tutorial')
108 variant('build_tut_scl3', default=True, description='Build tutorial')
109 variant('build_tut_scl4', default=True, description='Build tutorial')
110 variant('build_tut_scl5', default=True, description='Build tutorial')
111 variant('build_tut_scl6', default=True, description='Build tutorial')
112 variant('build_tut_scl7', default=True, description='Build tutorial')
113 variant('build_tut_scl8', default=True, description='Build tutorial')
114 variant('build_tut_scl9', default=True, description='Build tutorial')
115 variant('build_tut_scl10', default=True, description='Build tutorial')
116 variant('build_tut_scl11', default=True, description='Build tutorial')
117 variant('build_tut_clx0', default=True, description='Build tutorial')
118 variant('build_tut_vec0', default=True, description='Build tutorial')
119 variant('build_tut_vec1', default=True, description='Build tutorial')
120 variant('build_tut_vec2', default=True, description='Build tutorial')
121 variant('build_tut_vec3', default=True, description='Build tutorial')
122 variant('build_tut_vec4', default=True, description='Build tutorial')
123 variant('build_tut_vec5', default=True, description='Build tutorial')
124 variant('build_tut_vec6', default=True, description='Build tutorial')
125 variant('build_tut_mix0', default=True, description='Build tutorial')
126 variant('build_tut_mix1', default=True, description='Build tutorial')
127 variant('build_tut_max0', default=True, description='Build tutorial')
128 variant('build_tut_max1', default=True, description='Build tutorial')
129 variant('build_tut_adv0', default=True, description='Build tutorial')
130 variant('build_tut_adv1', default=True, description='Build tutorial')
131 variant('build_tut_adv2', default=True, description='Build tutorial')
132 variant('build_tut_cor0to1', default=True, description='Build tutorial')
133 variant('build_tut_cor2to5', default=True, description='Build tutorial')
134 variant('build_tut_cor6', default=True, description='Build tutorial')
135 variant('build_tut_cor7', default=True, description='Build tutorial')
136 variant('build_tut_cor8', default=True, description='Build tutorial')
137 variant('build_tut_cor9', default=True, description='Build tutorial')
138 variant('build_tut_cor10', default=True, description='Build tutorial')
139
141 env.set('CTEST_OUTPUT_ON_FAILURE', '1')
142
143 @property
145 spec = self.spec
146 build_type = spec.variants['build_type'].value
147 build_dir = 'um-build-%s-%s' % (build_type,spec.dag_hash(7))
148 if '+docker' in spec:
149 return join_path('/mofem_install',build_dir)
150 else:
151 return join_path(self.stage.path, build_dir)
152
153 def cmake_args(self):
154 spec = self.spec
155 from_variant = self.define_from_variant
156
157 options = []
158
159 # obligatory options
160 options.extend([
161 '-DCMAKE_EXPORT_COMPILE_COMMANDS=ON',
162 '-DMPI_RUN_FLAGS=--allow-run-as-root',
163 '-DWITH_SPACK=YES'])
164
165 options.append(self.define(
166 'MOFEM_DIR', spec['mofem-cephas'].prefix.users_module))
167 options.append(self.define_from_variant(
168 'STAND_ALLONE_USERS_MODULES', 'copy_user_modules'))
169 options.append(
170 self.define_from_variant('BUILD_SHARED_LIBS', 'shared'))
171
172 options.append(
173 from_variant('BUILD_BASIC_FINITE_ELEMENTS', 'basic_fe'))
174 options.append(
175 from_variant('BUILD_TUTORIALS', 'basic_tutorials'))
176
177 for name, v in spec.variants.items():
178 if (name.startswith('build_tut_')):
179 if '+basic_tutorials' in spec:
180 options.append(
181 from_variant(name.upper(), name))
182 else:
183 options.append(
184 from_variant(name.upper(), 'basic_tutorials'))
185
186
187 return options
188
189 # This function is not needed to run code installed by extension, nor in
190 # the install process. However, the source code of users modules is
191 # necessary to compile other sub-modules. Also, for users like to have
192 # access to source code to play, change and make it. Having source code at
193 # hand one can compile in own build directory it in package view when the
194 # extension is activated.
195 @run_after('install')
197 source = self.stage.source_path
198 prefix = self.prefix
199 install_tree(source, prefix.users_modules)
200
201 def check(self):
202 """Searches the CMake-generated Makefile for the target ``test``
203 and runs it if found.
204 """
205 with working_dir(self.build_directorybuild_directory):
206 ctest(parallel=False)
setup_build_environment(self, env)
Definition package.py:140