Skip to content

[BUG] Passing -C arguments for bdist_wheel with build seems to have no effect #5074

@arcivanov

Description

@arcivanov

setuptools version

80.9.0

Python version

3.12

OS

Fedora Linux

Additional environment information

No response

Description

build_meta doesn't seem to process -C options correctly when running from build.

I have filed with build just in case as well: pypa/build#929

All options passed seem to be completely disregarded. In the example below -C--dist-dir doesn't seem to work while passing python setup.py ... --dist-dir=... seems to be working perfectly.

This issue is especially grievous as Oct deadline for python setup.py is rapidly approaching.

Expected behavior

-C options actually are passed to the setuptools commands

How to Reproduce

  1. Take any simple setup.py project.
  2. Generate wheel either directly with python setup.py or via build passing --dist-dir option.
  3. Observe the differences.

Output

Using build:

bash-5.2$ python -m build -n --wheel -C--dist-dir=dist1
* Getting build dependencies for wheel...
running egg_info
writing src/test_axle_1.egg-info/PKG-INFO
writing dependency_links to src/test_axle_1.egg-info/dependency_links.txt
deleting src/test_axle_1.egg-info/requires.txt
writing top-level names to src/test_axle_1.egg-info/top_level.txt
reading manifest file 'src/test_axle_1.egg-info/SOURCES.txt'
writing manifest file 'src/test_axle_1.egg-info/SOURCES.txt'
* Building wheel...
running bdist_wheel
running build
running build_py
copying src/bar/__init__.py -> build/lib/bar
link build/lib/bar/foo.so exists - unlinking
reproducing link src/bar/foo.so (../../../foo.so) -> build/lib/bar
running build_scripts
copying scripts/script1 -> build/scripts-3.12
changing mode of build/scripts-3.12/script1 from 644 to 755
installing to build/bdist.linux-x86_64/wheel
running install
Distribution option extra_path is deprecated. See issue27919 for details.
running install_lib
creating build/bdist.linux-x86_64/wheel
creating build/bdist.linux-x86_64/wheel/bar
copying build/lib/bar/__init__.py -> build/bdist.linux-x86_64/wheel/./bar
registering link build/lib/bar/foo.so (../../../foo.so) -> build/bdist.linux-x86_64/wheel/./bar/foo.so
running install_headers
creating build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/headers
registering link headers/header2.h (header1.h) -> build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/headers
copying headers/header1.h -> build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/headers
running install_data
creating build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/data
creating build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/data/lib
registering link data/lib/foo.so (foo.1.so) -> build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/data/lib
copying data/lib/foo.1.so -> build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/data/lib
running install_egg_info
running egg_info
writing src/test_axle_1.egg-info/PKG-INFO
writing dependency_links to src/test_axle_1.egg-info/dependency_links.txt
writing requirements to src/test_axle_1.egg-info/requires.txt
writing top-level names to src/test_axle_1.egg-info/top_level.txt
reading manifest file 'src/test_axle_1.egg-info/SOURCES.txt'
writing manifest file 'src/test_axle_1.egg-info/SOURCES.txt'
Copying src/test_axle_1.egg-info to build/bdist.linux-x86_64/wheel/./test_axle_1-0.0.1-py3.12.egg-info
running install_scripts
creating build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/scripts
copying build/scripts-3.12/script1 -> build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/scripts
registering link build/scripts-3.12/script2 (script1) -> build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/scripts/script2
changing mode of build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/scripts/script1 to 755
creating build/bdist.linux-x86_64/wheel/./test_axle_1-0.0.1.pth
creating build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.dist-info/WHEEL
creating '/home/arcivanov/Documents/src/karellen/wheel-axle/src/integrationtest/resources/test_axle_1/dist/.tmp-8apk3yw6/test_axle_1-0.0.1-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
adding 'test_axle_1-0.0.1.pth'
adding 'bar/__init__.py'
adding 'test_axle_1-0.0.1.data/data/lib/foo.1.so'
adding 'test_axle_1-0.0.1.data/headers/header1.h'
adding 'test_axle_1-0.0.1.data/scripts/script1'
adding 'test_axle_1-0.0.1.dist-info/METADATA'
adding 'test_axle_1-0.0.1.dist-info/WHEEL'
adding 'test_axle_1-0.0.1.dist-info/axle.lck'
adding 'test_axle_1-0.0.1.dist-info/symlinks.txt'
adding 'test_axle_1-0.0.1.dist-info/top_level.txt'
adding 'test_axle_1-0.0.1.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel
Successfully built test_axle_1-0.0.1-py3-none-any.whl

Result:

bash-5.2$ ls -la
total 4
drwxr-xr-x. 1 arcivanov arcivanov   76 Aug 23 22:56 .
drwxr-xr-x. 1 arcivanov arcivanov   90 Jan 25  2025 ..
drwxr-xr-x  1 arcivanov arcivanov   66 Aug 23 22:53 build
drwxr-xr-x. 1 arcivanov arcivanov    6 Jan 28  2022 data
drwxr-xr-x  1 arcivanov arcivanov   68 Aug 23 23:39 dist
drwxr-xr-x. 1 arcivanov arcivanov   36 Jan 28  2022 headers
drwxr-xr-x. 1 arcivanov arcivanov   28 Jan 28  2022 scripts
-rwxr-xr-x. 1 arcivanov arcivanov 2193 Aug 23 22:56 setup.py
drwxr-xr-x. 1 arcivanov arcivanov   46 Aug 23 21:59 src

Using setup.py:

bash-5.2$ python setup.py bdist_wheel --dist-dir=dist1
running bdist_wheel
running build
running build_py
copying src/bar/__init__.py -> build/lib/bar
link build/lib/bar/foo.so exists - unlinking
reproducing link src/bar/foo.so (../../../foo.so) -> build/lib/bar
running build_scripts
copying scripts/script1 -> build/scripts-3.12
changing mode of build/scripts-3.12/script1 from 644 to 755
installing to build/bdist.linux-x86_64/wheel
running install
Distribution option extra_path is deprecated. See issue27919 for details.
running install_lib
creating build/bdist.linux-x86_64/wheel
creating build/bdist.linux-x86_64/wheel/bar
copying build/lib/bar/__init__.py -> build/bdist.linux-x86_64/wheel/./bar
registering link build/lib/bar/foo.so (../../../foo.so) -> build/bdist.linux-x86_64/wheel/./bar/foo.so
running install_headers
creating build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/headers
registering link headers/header2.h (header1.h) -> build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/headers
copying headers/header1.h -> build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/headers
running install_data
creating build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/data
creating build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/data/lib
registering link data/lib/foo.so (foo.1.so) -> build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/data/lib
copying data/lib/foo.1.so -> build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/data/lib
running install_egg_info
running egg_info
writing src/test_axle_1.egg-info/PKG-INFO
writing dependency_links to src/test_axle_1.egg-info/dependency_links.txt
writing requirements to src/test_axle_1.egg-info/requires.txt
writing top-level names to src/test_axle_1.egg-info/top_level.txt
reading manifest file 'src/test_axle_1.egg-info/SOURCES.txt'
writing manifest file 'src/test_axle_1.egg-info/SOURCES.txt'
Copying src/test_axle_1.egg-info to build/bdist.linux-x86_64/wheel/./test_axle_1-0.0.1-py3.12.egg-info
running install_scripts
creating build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/scripts
copying build/scripts-3.12/script1 -> build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/scripts
registering link build/scripts-3.12/script2 (script1) -> build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/scripts/script2
changing mode of build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.data/scripts/script1 to 755
creating build/bdist.linux-x86_64/wheel/./test_axle_1-0.0.1.pth
creating build/bdist.linux-x86_64/wheel/test_axle_1-0.0.1.dist-info/WHEEL
creating 'dist1/test_axle_1-0.0.1-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
adding 'test_axle_1-0.0.1.pth'
adding 'bar/__init__.py'
adding 'test_axle_1-0.0.1.data/data/lib/foo.1.so'
adding 'test_axle_1-0.0.1.data/headers/header1.h'
adding 'test_axle_1-0.0.1.data/scripts/script1'
adding 'test_axle_1-0.0.1.dist-info/METADATA'
adding 'test_axle_1-0.0.1.dist-info/WHEEL'
adding 'test_axle_1-0.0.1.dist-info/axle.lck'
adding 'test_axle_1-0.0.1.dist-info/symlinks.txt'
adding 'test_axle_1-0.0.1.dist-info/top_level.txt'
adding 'test_axle_1-0.0.1.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel

Result:

bash-5.2$ ls -la
total 4
drwxr-xr-x. 1 arcivanov arcivanov   86 Aug 23 23:43 .
drwxr-xr-x. 1 arcivanov arcivanov   90 Jan 25  2025 ..
drwxr-xr-x  1 arcivanov arcivanov   66 Aug 23 22:53 build
drwxr-xr-x. 1 arcivanov arcivanov    6 Jan 28  2022 data
drwxr-xr-x  1 arcivanov arcivanov   68 Aug 23 23:39 dist
drwxr-xr-x  1 arcivanov arcivanov   68 Aug 23 23:43 dist1                       <=================================
drwxr-xr-x. 1 arcivanov arcivanov   36 Jan 28  2022 headers
drwxr-xr-x. 1 arcivanov arcivanov   28 Jan 28  2022 scripts
-rwxr-xr-x. 1 arcivanov arcivanov 2193 Aug 23 22:56 setup.py
drwxr-xr-x. 1 arcivanov arcivanov   46 Aug 23 21:59 src

Metadata

Metadata

Assignees

No one assigned

    Labels

    Needs TriageIssues that need to be evaluated for severity and status.bug

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions