Alphare created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  Same as the previous patch, this breaks the Windows CI for some yet unknown
  reason.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D11727

AFFECTED FILES
  mercurial/exewrapper.c

CHANGE DETAILS

diff --git a/mercurial/exewrapper.c b/mercurial/exewrapper.c
--- a/mercurial/exewrapper.c
+++ b/mercurial/exewrapper.c
@@ -29,134 +29,6 @@
 #define _countof(array) (sizeof(array) / sizeof(array[0]))
 #endif
 
-#if PY_MAJOR_VERSION >= 3
-
-#pragma comment(lib, "Advapi32.lib")
-
-/* python.org installations */
-#define CORE_PATH L"SOFTWARE\\Python\\PythonCore"
-
-/* Microsoft Store installations */
-#define LOOKASIDE_PATH                                                         
\
-       L"SOFTWARE\\Microsoft\\AppModel\\Lookaside\\user\\Software\\Python\\"  \
-       L"PythonCore"
-
-static wchar_t *_locate_python_for_key(HKEY root, LPCWSTR subkey, size_t *size)
-{
-       wchar_t installPathKey[512];
-       wchar_t *executable = NULL;
-       DWORD type;
-       DWORD sz = 0;
-       HKEY ip_key;
-       LSTATUS status;
-
-       _snwprintf_s(installPathKey, sizeof(installPathKey), _TRUNCATE,
-                    L"%ls\\%d.%d\\InstallPath", subkey, PY_MAJOR_VERSION,
-                    PY_MINOR_VERSION);
-
-       status =
-           RegOpenKeyExW(root, installPathKey, 0, KEY_QUERY_VALUE, &ip_key);
-
-       if (status != ERROR_SUCCESS)
-               return NULL;
-
-       status = RegQueryValueExW(ip_key, L"ExecutablePath", NULL, &type,
-                                 (LPBYTE)executable, &sz);
-       if (status == ERROR_SUCCESS) {
-               /* Allocate extra space so path\to\python.exe can be converted
-                * to path\to\python39.dll + NUL.
-                */
-               *size = sz + sizeof(_T(HGPYTHONLIB ".dll")) + sizeof(wchar_t);
-               executable = malloc(*size);
-
-               if (executable) {
-                       status =
-                           RegQueryValueExW(ip_key, L"ExecutablePath", NULL,
-                                            &type, (LPBYTE)executable, &sz);
-
-                       if (status != ERROR_SUCCESS) {
-                               free(executable);
-                               executable = NULL;
-                       } else {
-                               /* Not all values are stored NUL terminated */
-                               executable[sz] = L'\0';
-                       }
-               }
-       }
-
-       RegCloseKey(ip_key);
-       return executable;
-}
-
-static HMODULE load_system_py3(void)
-{
-       wchar_t *subkeys[] = {CORE_PATH, LOOKASIDE_PATH};
-       HKEY roots[] = {HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER};
-
-       /* Give priority to python.org installs, because MS Store installs can
-        * break with user profile corruption, and also use some NTFS feature
-        * that MSYS doesn't understand.
-        */
-       for (int s = 0; s < _countof(subkeys); s++) {
-               for (int r = 0; r < _countof(roots); r++) {
-                       size_t size = 0;
-                       wchar_t *py =
-                           _locate_python_for_key(roots[r], subkeys[s], &size);
-                       wchar_t *cut = NULL;
-                       HMODULE pydll;
-
-                       if (!py) {
-                               continue;
-                       }
-
-                       /* Cut off the python executable component */
-                       cut = wcsrchr(py, L'\\');
-                       if (cut == NULL) {
-                               free(py);
-                               continue;
-                       }
-                       *cut = 0;
-
-                       wcscat_s(py, size, _T("\\" HGPYTHONLIB ".dll"));
-
-                       pydll = LoadLibrary(py);
-
-                       /* Also load python3.dll, so we don't pick up a random
-                        * one on PATH. We don't search {sys.prefix}\DLLs like
-                        * python.exe because this is commented as "not been a
-                        * normal install layout for a while", and don't search
-                        * LOAD_LIBRARY_SEARCH_APPLICATION_DIR because it's not
-                        * clear what the use case is.
-                        */
-                       if (pydll != NULL) {
-                               HANDLE py3dll = NULL;
-
-                               *cut = 0;
-                               wcscat_s(py, size, L"\\python3.dll");
-
-                               py3dll = LoadLibrary(py);
-                               if (py3dll == NULL) {
-                                       const char *err;
-                                       err = "failed to load python3.dll "
-                                             "for " HGPYTHONLIB ".dll";
-                                       fprintf(stderr, "abort: %s (0x%X)\n",
-                                               err, GetLastError());
-                                       exit(255);
-                               }
-                       }
-
-                       free(py);
-
-                       if (pydll != NULL) {
-                               return pydll;
-                       }
-               }
-       }
-
-       return NULL;
-}
-#endif
-
 static TCHAR pyscript[MAX_PATH + 10];
 static TCHAR pyhome[MAX_PATH + 10];
 static TCHAR pydllfile[MAX_PATH + 10];
@@ -236,12 +108,6 @@
                Py_SetPythonHome(pyhome);
        }
 
-#if PY_MAJOR_VERSION >= 3
-       if (pydll == NULL) {
-               pydll = load_system_py3();
-       }
-#endif
-
        if (pydll == NULL) {
                pydll = LoadLibrary(_T(HGPYTHONLIB) _T(".dll"));
                if (pydll == NULL) {



To: Alphare, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to