From c1284a9046bc54c34ec400bffa9458f084c0f9da Mon Sep 17 00:00:00 2001 From: Glenn Johnson Date: Wed, 21 Sep 2016 06:02:28 -0500 Subject: [PATCH] Stop python from linking with system ncurses (#1672) Python will look to link with libncursesw in preference to libncurses. Since ncurses in spack is built without suffixes there is no libncursesw and python will link to the system libncursesw for _curses.so and _curses_panel.so, as well as libpanelw for _curses_panel.so. This PR introduces a patch that simple removes the check for ncursesw in setup.py and therefore sets `curses_library` to `ncurses`. --- var/spack/repos/builtin/packages/python/ncurses.patch | 11 +++++++++++ var/spack/repos/builtin/packages/python/package.py | 2 ++ 2 files changed, 13 insertions(+) create mode 100644 var/spack/repos/builtin/packages/python/ncurses.patch diff --git a/var/spack/repos/builtin/packages/python/ncurses.patch b/var/spack/repos/builtin/packages/python/ncurses.patch new file mode 100644 index 0000000000..9054c03e7b --- /dev/null +++ b/var/spack/repos/builtin/packages/python/ncurses.patch @@ -0,0 +1,11 @@ +--- a/setup.py 2016-08-30 15:39:59.334926574 -0500 ++++ b/setup.py 2016-08-30 15:46:57.227946339 -0500 +@@ -745,8 +745,6 @@ + # use the same library for the readline and curses modules. + if 'curses' in readline_termcap_library: + curses_library = readline_termcap_library +- elif self.compiler.find_library_file(lib_dirs, 'ncursesw'): +- curses_library = 'ncursesw' + elif self.compiler.find_library_file(lib_dirs, 'ncurses'): + curses_library = 'ncurses' + elif self.compiler.find_library_file(lib_dirs, 'curses'): diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index e95bb4ba24..f3380cf75d 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -74,6 +74,8 @@ class Python(Package): depends_on("tk", when="+tk") depends_on("tcl", when="+tk") + patch('ncurses.patch') + @when('@2.7,3.4:') def patch(self): # NOTE: Python's default installation procedure makes it possible for a