From 6d005a447e3e587372cc7d0de052242f27021342 Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Fri, 23 Jul 2021 21:37:16 -0400
Subject: [PATCH] Set cmake to find python3

---
 indra/cmake/BuildPackagesInfo.cmake |  4 +--
 indra/cmake/LLTestCommand.cmake     |  6 ++--
 indra/cmake/Python.cmake            | 47 ++++++++++++++++++-----------
 indra/cmake/TemplateCheck.cmake     |  2 +-
 indra/llcorehttp/CMakeLists.txt     |  2 +-
 indra/newview/CMakeLists.txt        | 16 +++++-----
 6 files changed, 44 insertions(+), 33 deletions(-)

diff --git a/indra/cmake/BuildPackagesInfo.cmake b/indra/cmake/BuildPackagesInfo.cmake
index 6f5f6fd9355..6a37f97a00f 100644
--- a/indra/cmake/BuildPackagesInfo.cmake
+++ b/indra/cmake/BuildPackagesInfo.cmake
@@ -13,8 +13,8 @@ add_custom_command(OUTPUT packages-info.txt
   MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/../autobuild.xml
   DEPENDS ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py
           ${CMAKE_SOURCE_DIR}/../autobuild.xml
-  COMMAND ${Python2_EXECUTABLE}
+  COMMAND ${Python3_EXECUTABLE}
           ${CMAKE_SOURCE_DIR}/cmake/run_build_test.py -DAUTOBUILD_ADDRSIZE=${ADDRESS_SIZE} -DAUTOBUILD=${AUTOBUILD_EXECUTABLE}
-          ${Python2_EXECUTABLE}
+          ${Python3_EXECUTABLE}
           ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py "${VIEWER_CHANNEL}" "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" > packages-info.txt
   )
diff --git a/indra/cmake/LLTestCommand.cmake b/indra/cmake/LLTestCommand.cmake
index 984f7bb22ad..d46714f4fe7 100644
--- a/indra/cmake/LLTestCommand.cmake
+++ b/indra/cmake/LLTestCommand.cmake
@@ -4,14 +4,14 @@ MACRO(LL_TEST_COMMAND OUTVAR LD_LIBRARY_PATH)
   # cannot return a value. And yet, variables you set inside a FUNCTION are
   # local. Try a MACRO instead.
   SET(value
-    ${Python2_EXECUTABLE}
+    ${Python3_EXECUTABLE}
     "${CMAKE_SOURCE_DIR}/cmake/run_build_test.py")
   FOREACH(dir ${LD_LIBRARY_PATH})
     LIST(APPEND value "-l${dir}")
   ENDFOREACH(dir)
-  # Enough different tests want to be able to find CMake's Python2_EXECUTABLE
+  # Enough different tests want to be able to find CMake's Python3_EXECUTABLE
   # that we should just pop it into the environment for everybody.
-  LIST(APPEND value "-DPYTHON=${Python2_EXECUTABLE}")
+  LIST(APPEND value "-DPYTHON=${Python3_EXECUTABLE}")
   LIST(APPEND value ${ARGN})
   SET(${OUTVAR} ${value})
 ##IF(LL_TEST_VERBOSE)
diff --git a/indra/cmake/Python.cmake b/indra/cmake/Python.cmake
index e9bf28fc832..0164b263950 100644
--- a/indra/cmake/Python.cmake
+++ b/indra/cmake/Python.cmake
@@ -4,35 +4,46 @@ if (WINDOWS)
   # On Windows, explicitly avoid Cygwin Python.
 
   if (DEFINED ENV{VIRTUAL_ENV})
-    find_program(Python2_EXECUTABLE
-      NAMES python.exe
+    find_program(Python3_EXECUTABLE
+      NAMES python3.exe python.exe
       PATHS
       "$ENV{VIRTUAL_ENV}\\scripts"
       NO_DEFAULT_PATH
       )
   else()
-    find_program(Python2_EXECUTABLE
-      NAMES python25.exe python23.exe python.exe
+    find_program(Python3_EXECUTABLE
+      NAMES python3.exe python.exe
       NO_DEFAULT_PATH # added so that cmake does not find cygwin python
       PATHS
-      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.7\\InstallPath]
-      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.6\\InstallPath]
-      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.5\\InstallPath]
-      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath]
-      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath]
-      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.7\\InstallPath]
-      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.6\\InstallPath]
-      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.5\\InstallPath]
-      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath]
-      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath]
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.9\\InstallPath]
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.8\\InstallPath]
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.7\\InstallPath]
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.6\\InstallPath]
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.5\\InstallPath]
+      [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\3.4\\InstallPath]
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\3.9\\InstallPath]
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\3.8\\InstallPath]
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\3.7\\InstallPath]
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\3.6\\InstallPath]
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\3.5\\InstallPath]
+      [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\3.4\\InstallPath]
       )
   endif()
 
-  if (NOT Python2_EXECUTABLE)
+  if (NOT Python3_EXECUTABLE)
     message(FATAL_ERROR "No Python interpreter found")
-  endif (NOT Python2_EXECUTABLE)
+  endif (NOT Python3_EXECUTABLE)
 
-  mark_as_advanced(Python2_EXECUTABLE)
+  mark_as_advanced(Python3_EXECUTABLE)
 else (WINDOWS)
-  find_package(Python2 REQUIRED COMPONENTS Interpreter)
+  if (DEFINED ENV{VIRTUAL_ENV})
+    find_program(Python3_EXECUTABLE
+      NAMES python3 python
+      PATHS
+      "$ENV{VIRTUAL_ENV}/bin"
+      NO_DEFAULT_PATH
+      )
+  else()
+    find_package(Python3 REQUIRED COMPONENTS Interpreter)
+  endif()
 endif (WINDOWS)
diff --git a/indra/cmake/TemplateCheck.cmake b/indra/cmake/TemplateCheck.cmake
index 4dc3e89c311..8cb4fc581d6 100644
--- a/indra/cmake/TemplateCheck.cmake
+++ b/indra/cmake/TemplateCheck.cmake
@@ -6,7 +6,7 @@ macro (check_message_template _target)
   add_custom_command(
       TARGET ${_target}
       PRE_LINK
-      COMMAND ${Python2_EXECUTABLE}
+      COMMAND ${Python3_EXECUTABLE}
       ARGS ${SCRIPTS_DIR}/template_verifier.py
            --mode=development --cache_master --master_url=${TEMPLATE_VERIFIER_MASTER_URL} ${TEMPLATE_VERIFIER_OPTIONS}
       COMMENT "Verifying message template - See http://wiki.secondlife.com/wiki/Template_verifier.py"
diff --git a/indra/llcorehttp/CMakeLists.txt b/indra/llcorehttp/CMakeLists.txt
index b987a82f28f..c7014ba498b 100644
--- a/indra/llcorehttp/CMakeLists.txt
+++ b/indra/llcorehttp/CMakeLists.txt
@@ -167,7 +167,7 @@ if (LL_TESTS AND LLCOREHTTP_TESTS)
                           "${llcorehttp_TEST_SOURCE_FILES}"
                           "${test_libs}"
                           "-Dhttp_proxy"
-                          ${Python2_EXECUTABLE}
+                          ${Python3_EXECUTABLE}
                           "${CMAKE_CURRENT_SOURCE_DIR}/tests/test_llcorehttp_peer.py"
                           )
  
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 91bf252a300..96bf840e2df 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1966,7 +1966,7 @@ if (WINDOWS)
 
     add_custom_command(
       OUTPUT  ${VIEWER_BUILD_DEST_DIR}/copy_touched.bat
-      COMMAND ${Python2_EXECUTABLE}
+      COMMAND ${Python3_EXECUTABLE}
       ARGS
         ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
         --actions=copy
@@ -2014,7 +2014,7 @@ if (WINDOWS)
     if (PACKAGE)
       add_custom_command(
         OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/event_host.tar.bz2
-        COMMAND ${Python2_EXECUTABLE}
+        COMMAND ${Python3_EXECUTABLE}
         ARGS
           ${CMAKE_CURRENT_SOURCE_DIR}/event_host_manifest.py
           ${CMAKE_CURRENT_SOURCE_DIR}/..
@@ -2028,7 +2028,7 @@ if (WINDOWS)
 
       add_custom_command(
         OUTPUT ${VIEWER_BUILD_DEST_DIR}/touched.bat
-        COMMAND ${Python2_EXECUTABLE}
+        COMMAND ${Python3_EXECUTABLE}
         ARGS
           ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
           --arch=${ARCH}
@@ -2178,7 +2178,7 @@ if (LINUX)
 
   add_custom_command(
       OUTPUT ${product}.tar.bz2
-      COMMAND ${Python2_EXECUTABLE}
+      COMMAND ${Python3_EXECUTABLE}
       ARGS
         ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
         --arch=${ARCH}
@@ -2206,7 +2206,7 @@ if (LINUX)
 
   add_custom_command(
     OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.copy_touched
-    COMMAND ${Python2_EXECUTABLE}
+    COMMAND ${Python3_EXECUTABLE}
     ARGS
       ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
       --actions=copy
@@ -2299,7 +2299,7 @@ if (DARWIN)
 
   add_custom_command(
     TARGET ${VIEWER_BINARY_NAME} POST_BUILD
-    COMMAND ${Python2_EXECUTABLE}
+    COMMAND ${Python3_EXECUTABLE}
     ARGS
       ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
       --actions=copy
@@ -2344,7 +2344,7 @@ if (DARWIN)
 
       add_custom_command(
         TARGET llpackage POST_BUILD
-        COMMAND ${Python2_EXECUTABLE}
+        COMMAND ${Python3_EXECUTABLE}
         ARGS
           ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
           --arch=${ARCH}
@@ -2410,7 +2410,7 @@ if (PACKAGE AND (RELEASE_CRASH_REPORTING OR NON_RELEASE_CRASH_REPORTING) AND VIE
         set(LLBUILD_CONFIG ${CMAKE_CFG_INTDIR})
     endif(CMAKE_CFG_INTDIR STREQUAL ".")
     add_custom_command(OUTPUT "${VIEWER_SYMBOL_FILE}"
-      COMMAND "${Python2_EXECUTABLE}"
+      COMMAND ${Python3_EXECUTABLE}
       ARGS
         "${CMAKE_CURRENT_SOURCE_DIR}/generate_breakpad_symbols.py"
         "${LLBUILD_CONFIG}"
-- 
GitLab