From 123c2f2f7f3c2f98f155a79220934f4e8795c68f Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Sat, 10 Jul 2021 00:17:31 +0100 Subject: [PATCH] Ports: Add a patch for Python's setup.py to consider /usr/local This makes it find more includes and libraries than by default when crosscompiling. --- Ports/python3/patches/ReadMe.md | 7 ++++++ Ports/python3/patches/tweak-setup-py.patch | 27 ++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 Ports/python3/patches/tweak-setup-py.patch diff --git a/Ports/python3/patches/ReadMe.md b/Ports/python3/patches/ReadMe.md index 9bef035ff3..e17834ec0d 100644 --- a/Ports/python3/patches/ReadMe.md +++ b/Ports/python3/patches/ReadMe.md @@ -12,6 +12,13 @@ Enforce UTF-8 as encoding by defining `_Py_FORCE_UTF8_LOCALE`. As usual, make the `configure` script recognize Serenity. Also set `MACHDEP` (which is used for `sys.platform`) to a version-less `serenityos`, even when not cross-compiling. +## `tweak-setup-py.patch` + +Make some tweaks to Python's `setup.py` files: + +- Add `/usr/local/lib` / `/usr/local/include` to the system lib / include dirs, relative to the sysroot when crosscompiling. These are by default only included when not crosscompiling for some reason. +- Add `/usr/local/include/ncurses` to the curses include paths so it can build the `_curses` module. This is by default included for a bunch of extensions, but not `_curses`. + ## `webbrowser.patch` Register the SerenityOS Browser in the [`webbrowser`](https://docs.python.org/3/library/webbrowser.html) module. diff --git a/Ports/python3/patches/tweak-setup-py.patch b/Ports/python3/patches/tweak-setup-py.patch new file mode 100644 index 0000000000..546dbb91eb --- /dev/null +++ b/Ports/python3/patches/tweak-setup-py.patch @@ -0,0 +1,27 @@ +--- Python-3.9.6/setup.py.orig 2021-07-10 00:09:56.322423573 +0100 ++++ Python-3.9.6/setup.py 2021-07-10 00:13:39.447453427 +0100 +@@ -750,8 +750,8 @@ + add_dir_to_list(self.compiler.include_dirs, + sysconfig.get_config_var("INCLUDEDIR")) + +- system_lib_dirs = ['/lib64', '/usr/lib64', '/lib', '/usr/lib'] +- system_include_dirs = ['/usr/include'] ++ system_lib_dirs = ['/lib64', '/usr/lib64', '/lib', '/usr/lib', '/usr/local/lib'] ++ system_include_dirs = ['/usr/include', '/usr/local/include'] + # lib_dirs and inc_dirs are used to search for files; + # if a file is found in one of those directories, it can + # be assumed that no additional -I,-L directives are needed. +@@ -1052,7 +1052,12 @@ + # Curses support, requiring the System V version of curses, often + # provided by the ncurses library. + curses_defines = [] +- curses_includes = [] ++ if not CROSS_COMPILING: ++ curses_includes = ['/usr/local/include/ncurses'] ++ else: ++ curses_includes = sysroot_paths( ++ ('CPPFLAGS', 'CFLAGS', 'CC'), ['/usr/local/include/ncurses'] ++ ) + panel_library = 'panel' + if curses_library == 'ncursesw': + curses_defines.append(('HAVE_NCURSESW', '1'))