Skip to content

Commit

Permalink
fix: correct path when building sdist package (#1687)
Browse files Browse the repository at this point in the history
* Edit path when building sdist package

This patch changes the working directory from the temp to the project
when building sdist package.This resolves issues with relative paths
in configuration files.

Resolves #1683

* Add a test for the `package` placeholder exposure

The change extends the existing test — `test_simple`. It checks that
the temporary wheel build directory is the project root extracted from
the source distribution. It does so by testing the presence of the
`setup.py` in the current working directory, as a side effect.

* Edit quotes in the CLI argument for Windows compatibility

Co-authored-by: Sviatoslav Sydorenko (Святослав Сидоренко) <[email protected]>

* Use single quotes to avoid syntax errors from f-string

Co-authored-by: Sviatoslav Sydorenko (Святослав Сидоренко) <[email protected]>

---------

Co-authored-by: Sviatoslav Sydorenko (Святослав Сидоренко) <[email protected]>
  • Loading branch information
OlenaYefymenko and webknjaz authored Jan 24, 2024
1 parent c0e4b16 commit a1e3efb
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
2 changes: 1 addition & 1 deletion cibuildwheel/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ def main() -> None:
# This is now the new package dir
args.package_dir = project_dir.resolve()

with chdir(temp_dir):
with chdir(project_dir):
build_in_directory(args)
finally:
# avoid https://github.com/python/cpython/issues/86962 by performing
Expand Down
15 changes: 14 additions & 1 deletion test/test_from_sdist.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,23 @@ def test_simple(tmp_path):
sdist_dir.mkdir()
sdist_path = make_sdist(basic_project, sdist_dir)

setup_py_assertion_snippet = textwrap.dedent(
"""
import os
assert os.path.exists('setup.py')
assert os.path.exists('{package}/setup.py')
""",
)
setup_py_assertion_cmd = f'python3 -c "{setup_py_assertion_snippet !s}"'

# build the wheels from sdist
actual_wheels = cibuildwheel_from_sdist_run(
sdist_path,
add_env={"CIBW_BUILD": "cp39-*"},
add_env={
"CIBW_BEFORE_BUILD": setup_py_assertion_cmd,
"CIBW_BUILD": "cp39-*",
},
)

# check that the expected wheels are produced
Expand Down

0 comments on commit a1e3efb

Please sign in to comment.