summaryrefslogtreecommitdiff
path: root/app-office/gnucash/files/gnucash-5.4-fix-python-finding.patch
blob: 26de7a7ad1549360d2ecfdb775580c37c25fdf63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
https://bugs.gentoo.org/919859
https://github.com/Gnucash/gnucash/commit/3782eed56785adaca02cf2bd4766d3825a6f6ca7

From 3782eed56785adaca02cf2bd4766d3825a6f6ca7 Mon Sep 17 00:00:00 2001
From: Simon Arlott <sa.me.uk>
Date: Wed, 4 Oct 2023 21:15:11 +0100
Subject: [PATCH] Use the default version of Python 3

Python scripts that run with the default version of Python 3 by executing
with /usr/bin/python3 that try to import gnucash can't find it if it has
been built for a different version.

Instead of using other installed versions of Python 3 that happen to be
present, default to using the default "unversioned" version.

It doesn't look like CMake are going to fix the default behaviour, so every
project has to do this:
https://gitlab.kitware.com/cmake/cmake/-/issues/24878
https://gitlab.kitware.com/cmake/cmake/-/issues/24126
https://gitlab.kitware.com/cmake/cmake/-/merge_requests/8287

This is only supported on CMake 3.20 or newer, so users of older versions
will still get the broken behaviour.

Use the newer default Python3_FIND_STRATEGY=LOCATION (CMP0094).
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,6 +2,11 @@
 
 cmake_minimum_required (VERSION 3.14.5)
 
+# CMake 3.15+ Python3_FIND_STRATEGY=LOCATION
+if (POLICY CMP0094)
+  cmake_policy(SET CMP0094 NEW)
+endif()
+
 project (gnucash
     VERSION 5.4
 )
@@ -492,6 +497,9 @@ endif()
 
 if (WITH_PYTHON)
   set (PYTHON_MIN_VERSION 3.6.0)
+  if (NOT DEFINED Python3_FIND_UNVERSIONED_NAMES)
+    set (Python3_FIND_UNVERSIONED_NAMES FIRST)
+  endif()
   find_package (Python3 ${PYTHON_MIN_VERSION} COMPONENTS Interpreter Development)
   if (NOT Python3_FOUND)
     message(SEND_ERROR "Python support enabled, but Python3 interpreter and/or libaries not found.")