Skip to content
Snippets Groups Projects
  • Matt Harbison's avatar
    4f6816e8
    make: switch the PYTHON default to `py.exe -3` on Windows · 4f6816e8
    Matt Harbison authored
    Python3 _is_ named `python.exe` on Windows, but that isn't necessarily on PATH
    when installing from python.org.  I do happen to have a python.exe on PATH in
    `$LOCALAPPDATA/Microsoft/WindowsApps`, but it appears to be 0 bytes (likely
    because of permission issues), and doesn't run:
    
        $ python -V
         - Cannot open
    
    Pulkit hit the same error as I did though, so it isn't just my system:
    
        $ make -C . local
        make: Entering directory `/home/Dell/repos/hg-committed`
        python setup.py  \
                  build_py -c -d . \
                  build_ext  -i \
                  build_hgexe  -i \
                  build_mo
         - Cannot openmake: *** [local] Error 1
    
    The `py.exe` dispatcher lives in the Windows directory (so it is on PATH), looks
    up the python.org installation, and invokes that interpreter directly.  I get a
    warning with py39, but if it's our issue, it was an existing one:
    
        $ make -C .. local
        make: Entering directory `/c/Users/Matt/hg'
        py -3 setup.py  \
                  build_py -c -d . \
                  build_ext  -i \
                  build_hgexe  -i \
                  build_mo
        C:\Users\Matt\AppData\Local\Programs\Python\Python39\lib\site-packages\setuptools\distutils_patch.py:25:
            UserWarning: Distutils was imported before Setuptools. This usage is discouraged and may
            exhibit undesirable behaviors or errors. Please use Setuptools' objects directly or at least
            import Setuptools first.
          warnings.warn(
    
    The end result is a py3 based hg.exe that annoyingly won't run because it can't
    find python39.dll.  It will run tests (the ones without the `python3` shbang
    line anyway), because the test runner adjusts PATH to include the python running
    it.
    
    Differential Revision: https://phab.mercurial-scm.org/D9361
    4f6816e8
    History
    make: switch the PYTHON default to `py.exe -3` on Windows
    Matt Harbison authored
    Python3 _is_ named `python.exe` on Windows, but that isn't necessarily on PATH
    when installing from python.org.  I do happen to have a python.exe on PATH in
    `$LOCALAPPDATA/Microsoft/WindowsApps`, but it appears to be 0 bytes (likely
    because of permission issues), and doesn't run:
    
        $ python -V
         - Cannot open
    
    Pulkit hit the same error as I did though, so it isn't just my system:
    
        $ make -C . local
        make: Entering directory `/home/Dell/repos/hg-committed`
        python setup.py  \
                  build_py -c -d . \
                  build_ext  -i \
                  build_hgexe  -i \
                  build_mo
         - Cannot openmake: *** [local] Error 1
    
    The `py.exe` dispatcher lives in the Windows directory (so it is on PATH), looks
    up the python.org installation, and invokes that interpreter directly.  I get a
    warning with py39, but if it's our issue, it was an existing one:
    
        $ make -C .. local
        make: Entering directory `/c/Users/Matt/hg'
        py -3 setup.py  \
                  build_py -c -d . \
                  build_ext  -i \
                  build_hgexe  -i \
                  build_mo
        C:\Users\Matt\AppData\Local\Programs\Python\Python39\lib\site-packages\setuptools\distutils_patch.py:25:
            UserWarning: Distutils was imported before Setuptools. This usage is discouraged and may
            exhibit undesirable behaviors or errors. Please use Setuptools' objects directly or at least
            import Setuptools first.
          warnings.warn(
    
    The end result is a py3 based hg.exe that annoyingly won't run because it can't
    find python39.dll.  It will run tests (the ones without the `python3` shbang
    line anyway), because the test runner adjusts PATH to include the python running
    it.
    
    Differential Revision: https://phab.mercurial-scm.org/D9361