Skip to content

.gitignore seems a bit too aggressive or make distclean isn't aggressive enough #97731

Closed
@smontanaro

Description

@smontanaro

Bug report

I recently moved from Linux back to a Mac. After a bunch of rsync commands I started to make sure stuff worked. When I got to my cpython repo, I couldn't get test_tools to pass because it continued to try and find a nonexistent Conda version of Python 3.9. (That always existed on my Linux box, so the problem was masked there.) Af first, I thought it was the Conda setup on the Mac, but eventually realized that the .../Doc/venv/binpython3 symlink was to the old Linux path. I eventually dumped .../Doc/venv altogether, after which everything worked as expected.

Your environment

My old environment was Ubuntu 22.04 LTS with a miniconda installation whose base Python executable was 3.9. My new environment is a Mac M1 running Monterey with a miniconda installation also using 3.9 as its base Python interpreter. The difference in paths though (/home/skip/miniconda3/... vs /Users/skip/miniconda3/...) exposed the problem.

  • CPython versions tested on:

Up-to-date CPython repo on main branch.

  • Operating system and architecture:

MacOS Monterey (M1 architecture)

Proposed solution:

While it's nice that the .gitignore file hides a bunch of extraneous detail, in this case I think it might have been nice if Doc/venv was revealed as not under Git's control. Alternately, it seems like make distclean should remove that directory.

Oddly enough, looking at the docclean target in the top-level Makefile, I see that it doesn't use the clean target in Doc/Makefile to do its dirty work. Nor is it used by any of the cleaner targets in that file.

docclean:
	-rm -rf Doc/build
	-rm -rf Doc/tools/sphinx Doc/tools/pygments Doc/tools/docutils

The two targets don't even clean up the same cruft. Here are the cleaner targets from Doc/Makefile

clean: clean-venv
	-rm -rf build/*

clean-venv:
	rm -rf $(VENVDIR)

Doc/tools/{sphinx,pygments,docutils} doesn' exist after executing make -C Doc html. I suspect the docclean target could simply be replaced by make -C Doc clean, and made a dependency of the distclean target.

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.10only security fixes3.11only security fixes3.12bugs and security fixesbuildThe build process and cross-builddeferred-blockertype-bugAn unexpected behavior, bug, or error

    Projects

    • Status

      Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions