Skip to content

Commit 1800644

Browse files
committed
do not override CMAKE_ARGS in build scripts
1 parent 7c8e35e commit 1800644

File tree

4 files changed

+39
-50
lines changed

4 files changed

+39
-50
lines changed

scripts/_build_helper.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def run(cmd: list[str], env: dict[str, str] = None, cwd: str = None):
6969
)
7070

7171

72-
def get_output(cmd: list[str], cwd: str = None):
72+
def capture_cmd_output(cmd: list[str], cwd: str = None):
7373
print("+", " ".join(cmd))
7474
return (
7575
subprocess.check_output(cmd, cwd=cwd or os.getcwd())
@@ -78,14 +78,14 @@ def get_output(cmd: list[str], cwd: str = None):
7878
)
7979

8080

81-
def warn(msg: str, script: str):
82-
print(f"[{script}][warning] {msg}", file=sys.stderr)
83-
84-
8581
def err(msg: str, script: str):
8682
print(f"[{script}][error] {msg}", file=sys.stderr)
8783

8884

85+
def log_cmake_args(cmake_args: list[str], script: str):
86+
print(f"[{script}] Using CMake args:\n{' '.join(cmake_args)}")
87+
88+
8989
def make_cmake_args(
9090
c_compiler: str = None,
9191
cxx_compiler: str = None,
@@ -106,12 +106,13 @@ def make_cmake_args(
106106
if other_opts:
107107
args.extend(other_opts.split())
108108

109-
return " ".join(filter(None, args))
109+
return args
110110

111111

112112
def build_extension(
113113
setup_dir: str,
114114
env: dict[str, str],
115+
cmake_args: list[str],
115116
cmake_executable: str = None,
116117
generator: str = None,
117118
build_type: str = None,
@@ -123,6 +124,9 @@ def build_extension(
123124
cmd.append(f"--generator={generator}")
124125
if build_type:
125126
cmd.append(f"--build-type={build_type}")
127+
if cmake_args:
128+
cmd.append("--")
129+
cmd += cmake_args
126130
run(
127131
cmd,
128132
env=env,

scripts/build_locally.py

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
clean_build_dir,
2727
err,
2828
install_editable,
29+
log_cmake_args,
2930
make_cmake_args,
3031
resolve_compilers,
31-
warn,
3232
)
3333

3434

@@ -184,30 +184,25 @@ def main():
184184

185185
# CUDA/HIP targets
186186
if args.target_cuda:
187-
cmake_args += f" -DDPCTL_TARGET_CUDA={args.target_cuda}"
187+
cmake_args += [f"-DDPCTL_TARGET_CUDA={args.target_cuda}"]
188188
if args.target_hip:
189-
cmake_args += f" -DDPCTL_TARGET_HIP={args.target_hip}"
189+
cmake_args += [f"-DDPCTL_TARGET_HIP={args.target_hip}"]
190190

191-
cmake_args += (
192-
" -DDPCTL_ENABLE_L0_PROGRAM_CREATION="
191+
cmake_args += [
192+
"-DDPCTL_ENABLE_L0_PROGRAM_CREATION="
193193
f"{'ON' if level_zero_enabled else 'OFF'}"
194-
)
195-
196-
env = os.environ.copy()
194+
]
197195

198-
# ignore pre-existing CMAKE_ARGS for determinism in build driver
199-
if "CMAKE_ARGS" in env and env["CMAKE_ARGS"].strip():
200-
warn("Ignoring pre-existing CMAKE_ARGS in environment", "build_locally")
201-
del env["CMAKE_ARGS"]
202-
203-
env["CMAKE_ARGS"] = cmake_args
204-
print(f"[build_locally] CMake args:\n {cmake_args}")
196+
log_cmake_args(cmake_args, "build_locally")
205197

206198
print("[build_locally] Building extensions in-place...")
207199

200+
env = os.environ.copy()
201+
208202
build_extension(
209203
setup_dir,
210204
env,
205+
cmake_args,
211206
cmake_executable=args.cmake_executable,
212207
generator=args.generator,
213208
build_type=args.build_type,

scripts/gen_coverage.py

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,22 @@
2626

2727
from _build_helper import ( # noqa: E402
2828
build_extension,
29+
capture_cmd_output,
2930
clean_build_dir,
3031
err,
31-
get_output,
3232
install_editable,
33+
log_cmake_args,
3334
make_cmake_args,
3435
resolve_compilers,
3536
run,
36-
warn,
3737
)
3838

3939

4040
def find_bin_llvm(compiler):
4141
if os.path.isabs(compiler):
4242
bin_dir = os.path.dirname(compiler)
4343
else:
44-
compiler_path = get_output(["which", compiler])
44+
compiler_path = capture_cmd_output(["which", compiler])
4545
if not compiler_path:
4646
raise RuntimeError(f"Compiler {compiler} not found in PATH")
4747
bin_dir = os.path.dirname(compiler_path)
@@ -180,30 +180,25 @@ def main():
180180
verbose=args.verbose,
181181
)
182182

183-
cmake_args += " -DDPCTL_GENERATE_COVERAGE=ON"
184-
cmake_args += " -DDPCTL_BUILD_CAPI_TESTS=ON"
185-
cmake_args += f" -DDPCTL_COVERAGE_REPORT_OUTPUT={setup_dir}"
183+
cmake_args += ["-DDPCTL_GENERATE_COVERAGE=ON"]
184+
cmake_args += ["-DDPCTL_BUILD_CAPI_TESTS=ON"]
185+
cmake_args += [f"-DDPCTL_COVERAGE_REPORT_OUTPUT={setup_dir}"]
186186

187187
if args.gtest_config:
188-
cmake_args += " -DCMAKE_PREFIX_PATH={args.gtest_config}"
188+
cmake_args += [f"-DCMAKE_PREFIX_PATH={args.gtest_config}"]
189189

190190
env = os.environ.copy()
191191

192-
if "CMAKE_ARGS" in env and env["CMAKE_ARGS"].strip():
193-
warn("Ignoring pre-existing CMAKE_ARGS in environment", "gen_coverage")
194-
del env["CMAKE_ARGS"]
195-
196192
if bin_llvm:
197193
env["PATH"] = ":".join((env.get("PATH", ""), bin_llvm))
198194
env["LLVM_TOOLS_HOME"] = bin_llvm
199195

200-
env["CMAKE_ARGS"] = cmake_args
201-
202-
print(f"[gen_coverage] Using CMake args:\n {env['CMAKE_ARGS']}")
196+
log_cmake_args(cmake_args, "gen_coverage")
203197

204198
build_extension(
205199
setup_dir,
206200
env,
201+
cmake_args,
207202
cmake_executable=args.cmake_executable,
208203
generator=args.generator,
209204
build_type="Coverage",
@@ -218,7 +213,7 @@ def main():
218213
.strip("\n")
219214
)
220215

221-
cmake_build_dir = get_output(
216+
cmake_build_dir = capture_cmd_output(
222217
["find", "_skbuild", "-name", "cmake-build"],
223218
cwd=setup_dir,
224219
)

scripts/gen_docs.py

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@
2424

2525
from _build_helper import ( # noqa: E402
2626
build_extension,
27+
capture_cmd_output,
2728
clean_build_dir,
2829
err,
29-
get_output,
3030
install_editable,
31+
log_cmake_args,
3132
make_cmake_args,
3233
resolve_compilers,
3334
run,
34-
warn,
3535
)
3636

3737

@@ -151,31 +151,26 @@ def main():
151151
verbose=args.verbose,
152152
)
153153

154-
cmake_args += " -DDPCTL_GENERATE_DOCS=ON"
154+
cmake_args += ["-DDPCTL_GENERATE_DOCS=ON"]
155155

156156
if args.doxyrest_root:
157-
cmake_args += " -DDPCTL_ENABLE_DOXYREST=ON"
158-
cmake_args += f" -DDoxyrest_DIR={args.doxyrest_root}"
157+
cmake_args += ["-DDPCTL_ENABLE_DOXYREST=ON"]
158+
cmake_args += [f"-DDoxyrest_DIR={args.doxyrest_root}"]
159159

160-
env = os.environ.copy()
161-
162-
if "CMAKE_ARGS" in env and env["CMAKE_ARGS"].strip():
163-
warn("Ignoring pre-existing CMAKE_ARGS in environment", "gen_docs")
164-
del env["CMAKE_ARGS"]
160+
log_cmake_args(cmake_args, "gen_docs")
165161

166-
env["CMAKE_ARGS"] = cmake_args
167-
168-
print(f"[gen_docs] Using CMake args:\n {env['CMAKE_ARGS']}")
162+
env = os.environ.copy()
169163

170164
build_extension(
171165
setup_dir,
172166
env,
167+
cmake_args,
173168
cmake_executable=args.cmake_executable,
174169
generator=args.generator,
175170
build_type="Release",
176171
)
177172
install_editable(setup_dir, env)
178-
cmake_build_dir = get_output(
173+
cmake_build_dir = capture_cmd_output(
179174
["find", "_skbuild", "-name", "cmake-build"], cwd=setup_dir
180175
)
181176

0 commit comments

Comments
 (0)