GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — bpo-41282: Fix broken `make install` by encukou · Pull Request #26329 · python/cpython

Conversation

@encukou

@encukou encukou commented May 24, 2021 •
edited by bedevere-bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

A previous commit broke a check in sysconfig when building cpython itself.
This caused builds of the standard library modules to search a wrong
location (the installed location rather than the source directory) for
header files with the net effect that a make install
incorrectly caused all extension modules to be rebuilt again and
with incorrect include file paths.

There's a complication. When building Python, we need two distinct
"include" directories:

  • source .h files
  • install target for .h files

Note that this doesn't matter except when building Python from source.

Historically:

  • source .h files were in the distutils scheme under 'include'
  • the install directory was in the distutils.command.install scheme
    under 'headers'

GH-24549 merged these; sysconfig is now the single source of truth and
distutils is derived from it.

Introduce a "secret" scheme path, 'headers', which contains
the install target. It is only present when building Python.
The distutils code uses it if present, and falls back to 'include'.

https://bugs.python.org/issue41282

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
ned-deily and others added 2 commits May 24, 2021 03:53
@ned-deily
bpo-41282: Fix broken make install
100d335
A previous commit broke a check in sysconfig when building cpython itself.
This caused builds of the standard library modules to search a wrong
location (the installed location rather than the source directory) for
header files with the net effect that a ``make install``
incorrectly caused all extension modules to be rebuilt again and
with incorrect include file paths.
@encukou
Pass location of Python source headers as scheme['headers']
b300aac
When building Python, we need two distinct "include" directories:
- source .h files
- install target for .h files

Note that this doesn't matter except when building Python from source.

Historically:
- source .h files were in the distutils scheme under 'include'
- the install directory was in the distutils.command.install scheme
    under 'headers'

pythonGH-24549 merged these; sysconfig is now the single source of truth and
distutils is derived from it.

This commit introduces a "secret" scheme path, 'headers', which contains
the install target. It is only present when building Python.
The distutils code uses it if present, and falls back to 'include'.
@encukou encukou added the needs backport to 3.10 label May 24, 2021
@encukou
encukou requested review from ned-deily and pablogsal May 24, 2021 12:21
@the-knights-who-say-ni the-knights-who-say-ni added the CLA signed label May 24, 2021
@bedevere-bot bedevere-bot added the awaiting core review label May 24, 2021
@encukou encukou mentioned this pull request May 24, 2021
bpo-41282: Fix broken make install #26327
Closed
@encukou encukou added the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label May 24, 2021
@bedevere-bot

bedevere-bot commented May 24, 2021

Copy link
Copy Markdown

🤖 New build scheduled with the buildbot fleet by @encukou for commit b300aac 🤖

If you want to schedule another build, you need to add the ":hammer: test-with-buildbots" label again.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot bedevere-bot removed the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label May 24, 2021
@frenzymadness

frenzymadness commented May 24, 2021

Copy link
Copy Markdown
Contributor

Your analysis makes sense, the code looks good and I'm able to identify why I've never met this problem before when I was preparing the merge of sysconfig modules.

I'm sorry for the mistake I made.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

ned-deily
ned-deily approved these changes May 24, 2021
View reviewed changes

@ned-deily ned-deily left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good to me and a more robust one than my initial stab at it. Thanks, @encukou! If you don't get to it soonish, I'll probably merge this to get the backport to 3.10 going.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@bedevere-bot bedevere-bot added awaiting merge and removed awaiting core review labels May 24, 2021
@ned-deily
ned-deily merged commit 563bd5a into python:main May 24, 2021
@miss-islington

miss-islington commented May 24, 2021

Copy link
Copy Markdown
Contributor

Thanks @encukou for the PR, and @ned-deily for merging it 🌮🎉.. I'm working now to backport this PR to: 3.10.
🐍🍒⛏🤖

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot bedevere-bot removed the awaiting merge label May 24, 2021
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 24, 2021
@encukou @miss-islington
bpo-41282: Fix broken make install (pythonGH-26329)
fab2eb4
A previous commit broke a check in sysconfig when building cpython itself.
This caused builds of the standard library modules to search a wrong
location (the installed location rather than the source directory) for
header files with the net effect that a ``make install``
incorrectly caused all extension modules to be rebuilt again and
with incorrect include file paths.

When building Python, we need two distinct "include" directories:
- source .h files
- install target for .h files

Note that this doesn't matter except when building Python from source.

Historically:
- source .h files were in the distutils scheme under 'include'
- the install directory was in the distutils.command.install scheme
    under 'headers'

pythonGH-24549 merged these; sysconfig is now the single source of truth and
distutils is derived from it.

This commit introduces a "secret" scheme path, 'headers', which contains
the install target. It is only present when building Python.
The distutils code uses it if present, and falls back to 'include'.

Co-authored-by: Ned Deily <[email protected]>
(cherry picked from commit 563bd5a)

Co-authored-by: Petr Viktorin <[email protected]>
@bedevere-bot

bedevere-bot commented May 24, 2021

Copy link
Copy Markdown

GH-26336 is a backport of this pull request to the 3.10 branch.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot bedevere-bot removed the needs backport to 3.10 label May 24, 2021
miss-islington added a commit that referenced this pull request May 24, 2021
@miss-islington @encukou
bpo-41282: Fix broken make install (GH-26329)
1c454eb
A previous commit broke a check in sysconfig when building cpython itself.
This caused builds of the standard library modules to search a wrong
location (the installed location rather than the source directory) for
header files with the net effect that a ``make install``
incorrectly caused all extension modules to be rebuilt again and
with incorrect include file paths.

When building Python, we need two distinct "include" directories:
- source .h files
- install target for .h files

Note that this doesn't matter except when building Python from source.

Historically:
- source .h files were in the distutils scheme under 'include'
- the install directory was in the distutils.command.install scheme
    under 'headers'

GH-24549 merged these; sysconfig is now the single source of truth and
distutils is derived from it.

This commit introduces a "secret" scheme path, 'headers', which contains
the install target. It is only present when building Python.
The distutils code uses it if present, and falls back to 'include'.

Co-authored-by: Ned Deily <[email protected]>
(cherry picked from commit 563bd5a)

Co-authored-by: Petr Viktorin <[email protected]>
@encukou
encukou deleted the sysconfig-pr26327 branch May 25, 2021 08:51
@pablogsal pablogsal mentioned this pull request Jul 18, 2021
[3.10] Correct the order of regen-abidump #27228
Closed
@jaraco jaraco mentioned this pull request May 9, 2022
Deprecate and remove distutils #85454
Closed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@ned-deily ned-deily ned-deily approved these changes
@pablogsal pablogsal Awaiting requested review from pablogsal

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

6 participants

@encukou @bedevere-bot @frenzymadness @miss-islington @ned-deily @the-knights-who-say-ni
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.