-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathpixi.toml
More file actions
240 lines (202 loc) · 8.85 KB
/
pixi.toml
File metadata and controls
240 lines (202 loc) · 8.85 KB
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
# This file describes the [pixi](https://pixi.sh) interface to intervalxt, see
# the README for how to use pixi with intervalxt.
[workspace]
channels = ["conda-forge"]
description = "Interval Exchange Transformations"
name = "intervalxt"
platforms = ["linux-64", "osx-64", "osx-arm64"]
[environments]
libintervalxt = ["libintervalxt"]
pyintervalxt-python310 = ["libintervalxt", "pyintervalxt", "python310"]
pyintervalxt-python311 = ["libintervalxt", "pyintervalxt", "python311"]
pyintervalxt-python312 = ["libintervalxt", "pyintervalxt", "python312"]
dev = ["dev", "libintervalxt", "pyintervalxt"]
env-coverage = ["coverage", "libintervalxt", "pyintervalxt"]
##############
# ACTIVATION #
##############
[activation.env]
MAKEFLAGS = "-j$(nproc)"
CFLAGS = "-g3"
CXXFLAGS = "-g3 -fvisibility=hidden -fvisibility-inlines-hidden"
[target.osx-64.activation.env]
# Cppyy still uses clang-17 symbols so we need to build libintervalxt with such
# symbols so cppyy can find templates that contain enable_if.
# Re-enable mem_fun_ref in macOS when building with C++17 (used by dependency PPL.)
CXXFLAGS = "-g3 -fvisibility=hidden -fvisibility-inlines-hidden -fclang-abi-compat=17 -D_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS"
[target.osx-arm64.activation.env]
# Cppyy still uses clang-17 symbols so we need to build libintervalxt with such
# symbols so cppyy can find templates that contain enable_if.
# Re-enable mem_fun_ref in macOS when building with C++17 (used by dependency PPL.)
CXXFLAGS = "-g3 -fvisibility=hidden -fvisibility-inlines-hidden -fclang-abi-compat=17 -D_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS"
[feature.coverage.activation.env]
CFLAGS = "-coverage -O0 -UNDEBUG"
CXXFLAGS = "-coverage -O0 -UNDEBUG"
#########
# TASKS #
#########
[tasks.bootstrap]
cmd = "./bootstrap"
inputs = ["configure.ac", "{libintervalxt,pyintervalxt}/configure.ac", "Makefile.am", "{libintervalxt,pyintervalxt}/**/Makefile.am"]
outputs = ["configure", "{libintervalxt,pyintervalxt}/configure", "Makefile.in", "{libintervalxt,pyintervalxt}/**/*.in"]
[feature.libintervalxt.tasks.configure-libintervalxt]
cmd = './configure --prefix="$CONDA_PREFIX"'
cwd = "libintervalxt"
depends-on = ["bootstrap"]
inputs = ["libintervalxt/configure", "libintervalxt/**/*.in"]
[feature.libintervalxt.target.linux.tasks.configure-libintervalxt]
cmd = './configure --prefix="$CONDA_PREFIX" --with-version-script'
cwd = "libintervalxt"
depends-on = ["bootstrap"]
inputs = ["libintervalxt/configure", "libintervalxt/**/*.in"]
[feature.libintervalxt.tasks.build-libintervalxt]
cmd = "make check TESTS="
cwd = "libintervalxt"
depends-on = ["configure-libintervalxt"]
[feature.libintervalxt.tasks.test-libintervalxt]
cmd = "make check"
cwd = "libintervalxt"
depends-on = ["build-libintervalxt"]
[feature.pyintervalxt.tasks.test-libintervalxt-valgrind]
cmd = "make check-valgrind"
cwd = "libintervalxt"
depends-on = ["build-libintervalxt"]
[feature.pyintervalxt.tasks.configure-pyintervalxt]
cmd = './configure --prefix="$CONDA_PREFIX"'
cwd = "pyintervalxt"
depends-on = ["bootstrap"]
inputs = ["pyintervalxt/configure", "pyintervalxt/**/*.in"]
[feature.pyintervalxt.tasks.build-pyintervalxt]
cmd = "make"
cwd = "pyintervalxt"
depends-on = ["configure-pyintervalxt"]
[feature.pyintervalxt.tasks.test-pyintervalxt]
cmd = "make check"
cwd = "pyintervalxt"
depends-on = ["build-pyintervalxt", "build-libintervalxt"]
[feature.pyintervalxt.tasks.test-pyintervalxt-valgrind]
cmd = "make check-valgrind"
cwd = "pyintervalxt"
depends-on = ["build-pyintervalxt", "build-libintervalxt"]
[feature.dev.tasks]
codespell = { cmd = "codespell $(git ls-files)" }
# "build" is a shortcut that should (together with its dependencies) run in the "dev" environment.
# To achieve this, we need to split it into two tasks like this (otherwise,
# pixi is going to ask which environment the dependencies should run in.)
build = { cmd = "pixi run dev-build" }
dev-build = { depends-on = ["build-libintervalxt", "build-pyintervalxt"] }
# "test" is a shortcut that should (together with its dependencies) run in the "dev" environment.
# To achieve this, we need to split it into two tasks like this (otherwise,
# pixi is going to ask which environment the dependencies should run in.)
test = { cmd = "pixi run dev-test" }
dev-test = { depends-on = ["test-libintervalxt", "test-pyintervalxt"] }
# "clean" is a shortcut that should (together with its dependencies) run in the "dev" environment.
# To achieve this, we need to split it into two tasks like this (otherwise,
# pixi is going to ask which environment the dependencies should run in.)
clean = { cmd = "pixi run dev-clean" }
dev-clean = { cmd = "make clean", depends-on = ["configure"] }
# "compile-commands" is a shortcut that generates a compile_commands.json that many
# IDEs expect to make sense of C/C++ code.
# This shortcut should run with its dependencies in the "dev" environment.
# To achieve this, we need to split it into two tasks like this (otherwise,
# pixi is going to ask which environment the dependencies should run in.)
compile-commands = { cmd = "pixi run dev-compile-commands" }
dev-compile-commands = { cwd = "libintervalxt", cmd = "compiledb make -n check TESTS=", depends-on = ["build-libintervalxt"] }
[feature.dev.tasks.configure]
cmd = './configure --prefix="$CONDA_PREFIX"'
inputs = ["configure", "{libintervalxt,pyintervalxt}/configure", "Makefile.in", "{libintervalxt,pyintervalxt}/**/*.in"]
outputs = ["Makefile", "{libintervalxt,pyintervalxt}/**/Makefile"]
depends-on = ["bootstrap"]
[feature.dev.tasks.distcheck]
cmd = "make distcheck"
depends-on = ["configure"]
[feature.dev.target.linux-64.tasks.compiler-warnings-clang]
# The env hack is necessary to work around https://github.com/prefix-dev/pixi/issues/3287
# We disable -Wdeprecated-declarations because we use our own deprecated API, e.g., for testing.
# We disable -Wsign-compare because .size() in C++ is well-known to be broken.
cmd = """
/usr/bin/env -u '?' sh -c '
make clean &&
make check TESTS= CPP=clang-cpp CC=clang CXX=clang++ CXXFLAGS=\"$CXXFLAGS -Werror -Wall -Wextra -Wno-deprecated-declarations -Wno-sign-compare -UNDEBUG\" &&
make clean &&
make check TESTS= CPP=clang-cpp CC=clang CXX=clang++ CXXFLAGS=\"$CXXFLAGS -Werror -Wall -Wextra -Wno-deprecated-declarations -Wno-sign-compare -fclang-abi-compat=17 -DNDEBUG\"
'
"""
cwd = "libintervalxt"
depends-on = "configure-libintervalxt"
[feature.dev.target.linux-64.tasks.compiler-warnings-gcc]
# The env hack is necessary to work around https://github.com/prefix-dev/pixi/issues/3287
# We disable -Wsign-compare because .size() in C++ is well-known to be broken.
# We disable -Wdeprecated-declarations because we use our own deprecated API, e.g., for testing.
# We disable -Wdangling-reference because our tests rely on GENERATE_REF that does actually create a dangling reference.
cmd = """
/usr/bin/env -u '?' sh -c '
make clean &&
make check TESTS= CXXFLAGS=\"$CXXFLAGS -Werror -Wall -Wextra -Wno-sign-compare -Wno-deprecated-declarations -Wno-dangling-reference -UNDEBUG\" &&
make clean &&
make check TESTS= CXXFLAGS=\"$CXXFLAGS -Werror -Wall -Wextra -Wno-sign-compare -Wno-deprecated-declarations -Wno-dangling-reference -DNDEBUG\"
'
"""
cwd = "libintervalxt"
depends-on = "configure-libintervalxt"
[feature.dev.tasks.configure-libintervalxt]
cmd = './configure --prefix="$CONDA_PREFIX" --with-benchmark'
cwd = "libintervalxt"
depends-on = ["bootstrap"]
inputs = ["libintervalxt/configure", "libintervalxt/**/*.in"]
[feature.dev.target.linux.tasks.configure-libintervalxt]
cmd = './configure --prefix="$CONDA_PREFIX" --with-benchmark --with-version-script'
cwd = "libintervalxt"
depends-on = ["bootstrap"]
inputs = ["libintervalxt/configure", "libintervalxt/**/*.in"]
[feature.coverage.tasks.configure-libintervalxt]
# The gcov build has visibility issues when the version script is enabled.
cmd = './configure --prefix="$CONDA_PREFIX"'
cwd = "libintervalxt"
depends-on = ["bootstrap"]
inputs = ["libintervalxt/configure", "libintervalxt/**/*.in"]
################
# DEPENDENCIES #
################
[dependencies]
automake = "*"
make = "*"
libtool = "*"
coreutils = "*"
[feature.libintervalxt.dependencies]
cxx-compiler = "*"
gmp = "*"
libflint = "*"
libboost-headers = "*"
libeantic = "*"
benchmark = "*"
fmt = "12.*"
gmpxxll = "*"
libexactreal = "*"
ppl = "*"
[feature.pyintervalxt.dependencies]
cppyy = ">=3.1"
cppyythonizations = "*"
gmpxxyy = "*"
pyexactreal = "*"
pytest = "*"
python = "*"
setuptools = "*"
[feature.pyintervalxt.pypi-dependencies]
pyintervalxt = { path = "pyintervalxt/src", editable = true }
[feature.dev.dependencies]
codespell = "*"
compiledb = "*"
asv = ">=0.6.4,<0.7"
rever = "*"
[feature.dev.pypi-dependencies]
cppasv = { git = "https://github.com/flatsurf/cppasv.git" }
[feature.dev.target.linux.dependencies]
# A recent functioning valgrind is only available on conda-forge linux builds.
valgrind = "*"
[feature.python310.dependencies]
python = "3.10.*"
[feature.python311.dependencies]
python = "3.11.*"
[feature.python312.dependencies]
python = "3.12.*"