MINGW-packages/mingw-w64-gnatstudio/003-Use-system-wide-Python-3-installation.patch
2025-01-27 15:44:16 +01:00

38 lines
1.8 KiB
Diff

# Patch GNAT Studio to find and use the existing Python installation
# relative to the IDE executable.
#
# Since the commit https://github.com/AdaCore/gnatstudio/commit/2b886cac44425d91e26c93f2d2cfcc993467662c,
# GNAT Studio expects Python to be in $GNATSTUDIO_PYTHONHOME,
# which defaults to "$exec_prefix/share/gnatstudio/python".
#
# If Python is not found under this path, GNAT Studio crashes
# with logs similar to the following:
#
# PYTHONHOME = '<MSYS2 root directory>/mingw64/share/gnatstudio/python'
# PYTHONPATH = '<MSYS2 root directory>\mingw64\share\gnatstudio\python'
# ...
# Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
# Python runtime state: core initialized
# ModuleNotFoundError: No module named 'encodings'
#
# AUR works around this by creating a symlink `/usr/share/gnatstudio/python`
# which points to `/usr` (https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=gnatstudio&id=a031c734c1efd5bb4069f47b70a83dde8f04a1ab#n108).
# However, symbolic links in packages are discouraged in MSYS2.
#
# Instead, we patch the source code of GNAT Studio to change the default value
# of $GNATSTUDIO_PYTHONHOME. Hackers and IDE plugin developers can still override
# this environment variable to run GNAT Studio with an alternative Python location.
#
--- a/python/core/gps-python_core.adb
+++ b/python/core/gps-python_core.adb
@@ -43,8 +43,7 @@ package body GPS.Python_Core is
if Python_Home.Is_Empty then
declare
Packaged_Python_Location : constant Virtual_File :=
- Create (+Executable_Location)
- / (+"share") / (+"gnatstudio") / (+"python");
+ Create (+Executable_Location);
begin
Register_Python_Scripting
(Kernel.Scripts,