This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Out-of-tree build cannot regenerate Makefile.pre
Type: compile error Stage: resolved
Components: Build Versions: Python 2.7
process
Status: closed Resolution: duplicate
Dependencies: Superseder: Build Python outside the source directory
View: 13157
Assigned To: Nosy List: TBBle
Priority: normal Keywords:

Created on 2013-06-03 09:17 by TBBle, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Messages (2)
msg190525 - (view) Author: Paul "TBBle" Hampson (TBBle) Date: 2013-06-03 09:17
Noticed in Python 2.7 but a quick look in the repository suggests this is also true in Python 3 releases.

The Makefile rule for Makefile.pre in Makefile.pre.in is:
# Build the toplevel Makefile
Makefile.pre: Makefile.pre.in config.status
    CONFIG_FILES=Makefile.pre CONFIG_HEADERS= $(SHELL) config.status
    $(MAKE) -f Makefile.pre Makefile

However, when built out-of-tree, Makefile.pre is in the build directory, as as config.status, but Makefile.pre.in is in the source directory.

So the rule should be
# Build the toplevel Makefile
Makefile.pre: $(srcdir)/Makefile.pre.in config.status
    CONFIG_FILES=Makefile.pre CONFIG_HEADERS= $(SHELL) config.status
    $(MAKE) -f Makefile.pre Makefile

Note that the recipe doesn't change, as config.status internally knows where Makefile.pre.in is found, so it's just the rule dependency that's wrong.

This bug results in "No rule to create Makefile.pre.in" if Makefile.pre is somehow newer than Makefile or Modules/config.c in the build tree.
msg190527 - (view) Author: Paul "TBBle" Hampson (TBBle) Date: 2013-06-03 09:20
Forgot to mention, this is the only occurrence of a *.in file in Makefile.pre.in that isn't prefixed with $(srcdir)/
History
Date User Action Args
2022-04-11 14:57:46adminsetgithub: 62325
2021-04-28 21:15:37iritkatrielsetstatus: open -> closed
superseder: Build Python outside the source directory
resolution: duplicate
stage: resolved
2013-06-03 09:20:22TBBlesetmessages: + msg190527
2013-06-03 09:18:28TBBlesettype: compile error
2013-06-03 09:17:43TBBlecreate