GeezerVison is showing github.com — `make sharedinstall` does not return failure if install commands fail · Issue #100220 · python/cpython
make sharedinstall does not return failure if install commands fail #100220
DescriptionBug report
If make sharedinstall fails to install some Python extensions, the make target wrongly succeeds. For example, I'm seeing:
/usr/bin/install -c -m 755 Modules/array.cpython-312-x86_64-linux-gnu.so /usr/lib/python3.12/lib-dynload/array.cpython-312-x86_64-linux-gnu.so
/usr/bin/install: cannot create regular file '/var/tmp/portage/dev-lang/python-3.12.0_alpha3/image/usr/lib/python3.12/lib-dynload/array.cpython-312-x86_64-linux-gnu.so': No such file or directory
/usr/bin/install -c -m 755 Modules/_asyncio.cpython-312-x86_64-linux-gnu.so /usr/lib/python3.12/lib-dynload/_asyncio.cpython-312-x86_64-linux-gnu.so
/usr/bin/install: cannot create regular file '/var/tmp/portage/dev-lang/python-3.12.0_alpha3/image/usr/lib/python3.12/lib-dynload/_asyncio.cpython-312-x86_64-linux-gnu.so': No such file or directory
/usr/bin/install -c -m 755 Modules/_bisect.cpython-312-x86_64-linux-gnu.so /usr/lib/python3.12/lib-dynload/_bisect.cpython-312-x86_64-linux-gnu.so
[...]
Nevertheless, make install returns successfully in this case. This causes major problems for automated builds since they end up with broken Python installs when the make target should have failed.
I need to investigate why it's failing but that's a separate issue.
Complete build log (1.2M): dev-lang:python-3.12.0_alpha3:20221207-142002.log
The problem seems to be that the sharedinstall targets runs a single shell command and make doesn't check the exit status until its very end.
I suspect the same problem may apply to other install rules.
Your environment
- CPython versions tested on: 3.12.0a3
- Operating system and architecture: Gentoo Linux/amd64
Linked PRs
Activitychanged the title [-]`make sharedinstall` no longer returns failure if install commands fail[/-] [+]`make sharedinstall` does not retrn failure if install commands fail[/+] on Dec 13, 2022changed the title [-]`make sharedinstall` does not retrn failure if install commands fail[/-] [+]`make sharedinstall` does not return failure if install commands fail[/+] on Dec 13, 2022zware commented on Apr 7, 2023 GH-100328 merged, thanks for the report and patch!
I think we'll pass on backporting this; there haven't been reported problems in this vein before (though the recipes haven't changed much, so the underlying issue does exist in older branches), and there could be some lesser-used recipes that shouldn't use -e that we missed. mgorny commented on Apr 8, 2023 ContributorAuthor More actions Yeah, I suppose the risk is relatively small, as it affects only a few less frequently used rules.
MetadataMetadataDevelopmentNo branches or pull requestsIssue actions
|