From b7ac17b48bdfc688b54b29aa4feacb535c91aec2 Mon Sep 17 00:00:00 2001 From: Alfredo Dal'Ava Junior Date: Tue, 1 Nov 2022 20:59:58 -0300 Subject: [PATCH] tools/build/make.py: fix cross build on Fedora Linux Fedora defines shell functions for some commands used by FreeBSD build scripts. Unortunatelly it makes them behave incorrectly for our purposes. For instance 'which which' returns something like: which () { ( alias; eval ${which_declare} ) | /usr/bin/which --tty-only --read-alias ... } instead of /usr/bin/which This patch unsets those functions to restore original/expected behavior Reviewed by: emaste, imp MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D36900 --- tools/build/make.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/build/make.py b/tools/build/make.py index 799ea89b74b..cede0c99e31 100755 --- a/tools/build/make.py +++ b/tools/build/make.py @@ -267,5 +267,13 @@ if __name__ == "__main__": shlex.quote(s) for s in [str(bmake_binary)] + bmake_args) debug("Running `env ", env_cmd_str, " ", make_cmd_str, "`", sep="") os.environ.update(new_env_vars) + + # Fedora defines bash function wrapper for some shell commands and this + # makes 'which ' return the function's source code instead of + # the binary path. Undefine it to restore the original behavior. + os.unsetenv("BASH_FUNC_which%%") + os.unsetenv("BASH_FUNC_ml%%") + os.unsetenv("BASH_FUNC_module%%") + os.chdir(str(source_root)) os.execv(str(bmake_binary), [str(bmake_binary)] + bmake_args)