Bläddra i källkod

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.
Linus Groh 4 år sedan
förälder
incheckning
123c2f2f7f
2 ändrade filer med 34 tillägg och 0 borttagningar
  1. 7 0
      Ports/python3/patches/ReadMe.md
  2. 27 0
      Ports/python3/patches/tweak-setup-py.patch

+ 7 - 0
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.

+ 27 - 0
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'))