Summary: | devel/py-maturin: command name is wrong for non-default python versions | ||||||
---|---|---|---|---|---|---|---|
Product: | Ports & Packages | Reporter: | John Hein <jcfyecrayz> | ||||
Component: | Individual Port(s) | Assignee: | Kai Knoblich <kai> | ||||
Status: | Closed FIXED | ||||||
Severity: | Affects Some People | CC: | jcfyecrayz, john, kai, python | ||||
Priority: | --- | Flags: | kai:
maintainer-feedback+
kai: merge-quarterly+ |
||||
Version: | Latest | ||||||
Hardware: | Any | ||||||
OS: | Any | ||||||
Bug Depends on: | |||||||
Bug Blocks: | 272600 | ||||||
Attachments: |
|
This patch applies to maturin 0.13.2 and also the more recent 1.1.0 release. Duplicate of bug #272600? (In reply to John Hein from comment #1) Thanks for the patch. I'll have a look at it and doing some testing in the next few days. CC'ing python@ as well to give the info to a wider audience in the meantime. Maybe there will be further feedback from one or the other. (In reply to John W. O'Brien from comment #2) Both bug #272600, which points out to the problem, and bug #272618, which addresses the root cause of the problem, have their "raison d'ĂȘtre". I have therefore linked bug #272600 to bug #272618 accordingly and will also refer to it in the commit log. A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=00ae5289b23194d0b79413e62abc6ceff960fb09 commit 00ae5289b23194d0b79413e62abc6ceff960fb09 Author: John Hein <jcfyecrayz@liamekaens.com> AuthorDate: 2023-08-03 11:04:59 +0000 Commit: Kai Knoblich <kai@FreeBSD.org> CommitDate: 2023-08-03 11:04:59 +0000 devel/py-maturin: Fix command name for non-default Python versions If devel/py-maturin is built for a non-default python flavor (e.g., 'make FLAVOR=py38'), the port installs bin/maturin-<ver> and does not install bin/maturin which is normal and expected. The site-packages/maturin/__init__.py file, however, explicitly defines the command to use as 'maturin'. Because of this when using maturin to build other ports, they can fail with "No such file or directory: 'maturin'". [1] Fix the issue by aligning the command name to the actual Python flavor. PR: 272618, 272600 [1] Reported by: John W. O'Brien [1] MFH: 2023Q3 (after 1 week) devel/py-maturin/Makefile | 3 ++- devel/py-maturin/files/patch-maturin-__init__.py (new) | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) Leave this bug open for reference and until the MFH to the 2023Q3 branch has also been done (ETA ~1 week). A commit in branch 2023Q3 references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=0199fbab9ae53912fd05dcacd3348a32a28de3a7 commit 0199fbab9ae53912fd05dcacd3348a32a28de3a7 Author: John Hein <jcfyecrayz@liamekaens.com> AuthorDate: 2023-08-03 11:04:59 +0000 Commit: Kai Knoblich <kai@FreeBSD.org> CommitDate: 2023-08-10 12:14:55 +0000 devel/py-maturin: Fix command name for non-default Python versions If devel/py-maturin is built for a non-default python flavor (e.g., 'make FLAVOR=py38'), the port installs bin/maturin-<ver> and does not install bin/maturin which is normal and expected. The site-packages/maturin/__init__.py file, however, explicitly defines the command to use as 'maturin'. Because of this when using maturin to build other ports, they can fail with "No such file or directory: 'maturin'". [1] Fix the issue by aligning the command name to the actual Python flavor. PR: 272618, 272600 [1] Reported by: John W. O'Brien [1] MFH: 2023Q3 (after 1 week) (cherry picked from commit 00ae5289b23194d0b79413e62abc6ceff960fb09) devel/py-maturin/Makefile | 3 ++- devel/py-maturin/files/patch-maturin-__init__.py (new) | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) MFH'ed to the 2023Q3 branch, all done. |
Created attachment 243501 [details] [patch] fix 'maturin' command name referenced in __init__.py for any python flavor If devel/py-maturin is built for a non-default python flavor (e.g., 'make FLAVOR=py38'), the port installs bin/maturin-<ver> and does not install bin/maturin. This is normal and expected. The site-packages/maturin/__init__.py file, however, explicitly defines the command to use as 'maturin'. Because of this when using maturin to build other ports, they can fail with "No such file or directory: 'maturin'". For instance, 'make -C devel/py-rpds-py FLAVOR=py38' (assuming that the current default python of 3.9 has not been overridden to 3.8) gives the following error: ============= ===> Building for py38-rpds-py-0.7.1_1 starting pep517 build cd /z1/local/users/jhein/.nobak/wd/usr/ports/devel/py-rpds-py/work-py38/rpds_py-0.7.1 && /usr/bin/env XDG_DATA_HOME=/z1/local/users/jhei> * Getting build dependencies for wheel... * Building wheel... Running `maturin pep517 build-wheel -i /usr/local/bin/python3.8 --compatibility off` Traceback (most recent call last): File "/usr/local/lib/python3.8/site-packages/pyproject_hooks/_in_process/_in_process.py", line 353, in <module> main() File "/usr/local/lib/python3.8/site-packages/pyproject_hooks/_in_process/_in_process.py", line 335, in main json_out['return_val'] = hook(**hook_input['kwargs']) File "/usr/local/lib/python3.8/site-packages/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel return _build_backend().build_wheel(wheel_directory, config_settings, File "/usr/local/lib/python3.8/site-packages/maturin/__init__.py", line 90, in build_wheel return _build_wheel(wheel_directory, config_settings, metadata_directory) File "/usr/local/lib/python3.8/site-packages/maturin/__init__.py", line 73, in _build_wheel result = subprocess.run(command, stdout=subprocess.PIPE) File "/usr/local/lib/python3.8/subprocess.py", line 493, in run with Popen(*popenargs, **kwargs) as process: File "/usr/local/lib/python3.8/subprocess.py", line 858, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/local/lib/python3.8/subprocess.py", line 1720, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: 'maturin' ERROR Backend subprocess exited when trying to invoke build_wheel *** Error code 1 Stop. make: stopped in /usr/ports/devel/py-rpds-py ============= Attached is a patch to change the command name to maturin-<python_ver> which will work for all flavors of python whether the version is the default or not.