Skip to content

make sharedinstall does not return failure if install commands fail #100220

Description

@mgorny

Bug 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

Activity

  1. added
    type-bugAn unexpected behavior, bug, or error
    on Dec 13, 2022
  2. changed 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, 2022
  3. changed 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, 2022
  4. added a commit that references this issue on Dec 18, 2022
  5. added a commit that references this issue on Feb 9, 2023
  6. added a commit that references this issue on Apr 7, 2023
  7. zware commented on Apr 7, 2023

    @zware
    Member

    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.

  8. mgorny commented on Apr 8, 2023

    @mgorny
    ContributorAuthor

    Yeah, I suppose the risk is relatively small, as it affects only a few less frequently used rules.

  9. added a commit that references this issue on Apr 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    buildThe build process and cross-buildtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions