fontforge: fix dejavu_fonts compilation on darwin, enable Python 3.13 support (#371027)

This commit is contained in:
Emily
2025-01-05 18:43:40 +00:00
committed by GitHub
3 changed files with 44 additions and 24 deletions
+23 -11
View File
@@ -3,10 +3,10 @@
fetchFromGitHub,
lib,
fetchpatch,
replaceVars,
cmake,
uthash,
pkg-config,
makeWrapper,
python3,
freetype,
zlib,
@@ -52,14 +52,31 @@ stdenv.mkDerivation rec {
url = "https://github.com/fontforge/fontforge/commit/216eb14b558df344b206bf82e2bdaf03a1f2f429.patch";
hash = "sha256-aRnir09FSQMT50keoB7z6AyhWAVBxjSQsTRvBzeBuHU=";
})
# Fixes translation compatibility with gettext 0.22
# Replace distutils use in the build script
(fetchpatch {
url = "https://github.com/fontforge/fontforge/commit/55d58f87ab1440f628f2071a6f6cc7ef9626c641.patch";
hash = "sha256-rkYnKPXA8Ztvh9g0zjG2yTUCPd3lE1uqwvBuEd8+Oyw=";
name = "replace-distutils.patch";
url = "https://github.com/fontforge/fontforge/commit/8c75293e924602ed09a9481b0eeb67ba6c623a81.patch";
includes = [ "pyhook/CMakeLists.txt" ];
hash = "sha256-3CEwC8vygmCztKRmeD45aZIqyoj8yk5CLwxX2SGP7z4=";
})
# https://github.com/fontforge/fontforge/pull/5423
./replace-distutils.patch
# Fixes translation compatibility with gettext 0.22
(fetchpatch {
name = "update-translation-compatibility.patch";
url = "https://github.com/fontforge/fontforge/commit/642d8a3db6d4bc0e70b429622fdf01ecb09c4c10.patch";
hash = "sha256-uO9uEhB64hkVa6O2tJKE8BLFR96m27d8NEN9UikNcvg=";
})
# Updates to new Python initialization API
(fetchpatch {
name = "modern-python-initialization-api.patch";
url = "https://github.com/fontforge/fontforge/commit/2f2ba54c15c5565acbde04eb6608868cbc871e01.patch";
hash = "sha256-qF4DqFpiZDbULi9+POPM73HF6pEot8BAFSVaVCNQrMU=";
})
# Provide a Nix-controlled location for the initial `sys.path` entry.
(replaceVars ./set-python-sys-path.patch { python = "${py}/${py.sitePackages}"; })
];
# use $SOURCE_DATE_EPOCH instead of non-deterministic timestamps
@@ -77,7 +94,6 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [
pkg-config
cmake
makeWrapper
];
buildInputs =
@@ -117,10 +133,6 @@ stdenv.mkDerivation rec {
export SOURCE_DATE_EPOCH=$(date -d ${version} +%s)
'';
postInstall = lib.optionalString withPython ''
wrapProgram $out/bin/fontforge --suffix PYTHONPATH : "${py}/${py.sitePackages}"
'';
meta = {
description = "Font editor";
homepage = "https://fontforge.github.io";
@@ -1,13 +0,0 @@
diff --git a/pyhook/CMakeLists.txt b/pyhook/CMakeLists.txt
index dd48054aa..710728f26 100644
--- a/pyhook/CMakeLists.txt
+++ b/pyhook/CMakeLists.txt
@@ -21,7 +21,7 @@ target_link_libraries(psMat_pyhook PRIVATE Python3::Module)
# So do it ourselves, getting the prefix-relative path instead
if(NOT DEFINED PYHOOK_INSTALL_DIR)
execute_process(
- COMMAND "${Python3_EXECUTABLE}" -c "import distutils.sysconfig as sc; print(sc.get_python_lib(prefix='', plat_specific=True,standard_lib=False))"
+ COMMAND "${Python3_EXECUTABLE}" -c "import sysconfig; print(sysconfig.get_path('platlib', sysconfig.get_preferred_scheme('user'), vars={'userbase': '.'}))"
RESULT_VARIABLE _pyhook_install_dir_result
OUTPUT_VARIABLE PYHOOK_INSTALL_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE)
@@ -0,0 +1,21 @@
Author: Philip Taron <philip.taron@gmail.com>
Date: Sat Jan 4 12:22:38 2025 -0800
fontforge: add an initial value for `sys.path`
diff --git a/fontforge/python.c b/fontforge/python.c
index e18d77d43..2e312eeb4 100644
--- a/fontforge/python.c
+++ b/fontforge/python.c
@@ -19576,6 +19576,11 @@ void FontForge_InitializeEmbeddedPython(void) {
PyStatus status;
PyConfig_InitPythonConfig(&config);
+ status = PyConfig_SetBytesString(&config, &config.pythonpath_env, "@python@");
+ if (PyStatus_Exception(status)) {
+ fprintf(stderr, "Failed to set the Python search path: %s\n", status.err_msg);
+ }
+
status = PyConfig_SetBytesString(&config, &config.program_name,
"fontforge");
if (PyStatus_Exception(status)) {