[issue30492] 'make clinic' does not work for out of tree builds / clinic.py is not in the devguide

New submission from Gregory P. Smith:
I never do in-tree builds anymore because they make me feel dirty and leave build artifacts cluttering up my source tree.
make clinic does not work for out of tree builds.
To reproduce:
~$ git clone ...cpython repo... ~$ mkdir build && cd build ~/build$ ../cpython/configure --with-pydebug ~/build$ make clinic ./python -E ./Tools/clinic/clinic.py --make ./python: can't open file './Tools/clinic/clinic.py': [Errno 2] No such file or directory Makefile:545: recipe for target 'clinic' failed make: *** [clinic] Error 2
Per https://docs.python.org/3/howto/clinic.html it looks like I can just manually run clinic.py on the files I have modified. Ideally the build system would take care of that for me. But all I really want is a single command that keeps me up to date.
python3 Tools/clinic/clinic.py appears to be that command. Even if it isn't fixed for out of tree builds, use of clinic needs to be in the devguide.
---------- assignee: docs@python components: Argument Clinic, Documentation messages: 294604 nosy: docs@python, gregory.p.smith, larry priority: normal severity: normal stage: needs patch status: open title: 'make clinic' does not work for out of tree builds / clinic.py is not in the devguide type: compile error versions: Python 3.7
_______________________________________ Python tracker report@bugs.python.org http://bugs.python.org/issue30492 _______________________________________

Larry Hastings added the comment:
I don't know how to fix it. "make clinic" needs to be run in-tree anyway as it's modifying the C source code in place.
Can you suggest a patch?
----------
_______________________________________ Python tracker report@bugs.python.org http://bugs.python.org/issue30492 _______________________________________

Gregory P. Smith added the comment:
The Makefile knows where the source tree is, I think we can make it tell clinic.py. Let me whip something up.
----------
_______________________________________ Python tracker report@bugs.python.org http://bugs.python.org/issue30492 _______________________________________

Changes by Gregory P. Smith greg@krypto.org:
---------- pull_requests: +1920
_______________________________________ Python tracker report@bugs.python.org http://bugs.python.org/issue30492 _______________________________________

Gregory P. Smith added the comment:
My PR doesn't address the potential issue of needing to have done a make all before doing a make clinic. I'll leave that for something else, there could be bootstrapping issues in that situation depending on what the developer is doing.
In that less common case, running clinic.py oneself under a stable python3 interpreter is probably advisable.
The devguide docs still need to mention 'make clinic' and point to the argument clinic docs in some section talking about the Modules/ tree.
----------
_______________________________________ Python tracker report@bugs.python.org http://bugs.python.org/issue30492 _______________________________________

Gregory P. Smith added the comment:
New changeset 178418ad6791b6ef5ba610ed93fab75fc1567ad2 by Gregory P. Smith in branch 'master': bpo-30492: Allow make clinic to work out of tree. (#1836) https://github.com/python/cpython/commit/178418ad6791b6ef5ba610ed93fab75fc15...
----------
_______________________________________ Python tracker report@bugs.python.org http://bugs.python.org/issue30492 _______________________________________

Neil Schemenauer nas-python@arctrix.com added the comment:
Thanks for fixing this. I always do my builds in subfolders as well. It is handy to have multiple builds (debug, opt, profiled) that all use a single source tree.
I don't like to hijack this issue but could we get some of the build bots to do their builds in a subfolder? I don't know who would be able to make that change. It would be good to smoke out these kinds of problems early. Otherwise wierdo's like gps and I don't notice them until later.
If we don't keep this working, we should just rip the ability to do builds outside of the source tree out of the Makefile. There is no point to maintaining the extra complication if it doesn't actually work. With git shallow clones, I could live with that. However, it seems a shame to lose it when it basically currently works fine.
---------- nosy: +nascheme
_______________________________________ Python tracker report@bugs.python.org https://bugs.python.org/issue30492 _______________________________________

Zachary Ware zachary.ware@gmail.com added the comment:
I don't like to hijack this issue but could we get some of the build bots to do their builds in a subfolder?
The buildmaster config is at https://github.com/python/buildmaster-config, feel free to submit a pull request that sets the ware-gentoo bot building out-of-tree. Victor or I can merge and deploy, but I don't have the bandwidth to make the change myself currently.
---------- nosy: +vstinner, zach.ware
_______________________________________ Python tracker report@bugs.python.org https://bugs.python.org/issue30492 _______________________________________
participants (4)
-
Gregory P. Smith
-
Larry Hastings
-
Neil Schemenauer
-
Zachary Ware