aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlfredo Dal'Ava Junior <alfredo@FreeBSD.org>2022-11-01 23:59:58 +0000
committerAlfredo Dal'Ava Junior <alfredo@FreeBSD.org>2022-11-08 03:29:58 +0000
commitf12e86a205c8577a8f8bd9f9955fed78f658c004 (patch)
treece91909aa2bce193288293890e804ee83c04fcc9
parente52aaa644ce186b6f0f38302ad432ddbdf38620a (diff)
downloadsrc-f12e86a205c8577a8f8bd9f9955fed78f658c004.tar.gz
src-f12e86a205c8577a8f8bd9f9955fed78f658c004.zip
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 (cherry picked from commit b7ac17b48bdfc688b54b29aa4feacb535c91aec2)
-rwxr-xr-xtools/build/make.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/tools/build/make.py b/tools/build/make.py
index 799ea89b74b3..cede0c99e316 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 <command>' 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)