2024-03-06 10:44:19

by Masahiro Yamada

[permalink] [raw]
Subject: [PATCH] kbuild: unexport abs_srctree and abs_objtree

Commit 25b146c5b8ce ("kbuild: allow Kbuild to start from any directory")
exported abs_srctree and abs_objtree to avoid recomputation after the
sub-make. However, this approach turned out to be fragile.

Commit 5fa94ceb793e ("kbuild: set correct abs_srctree and abs_objtree
for package builds") moved them above "ifneq ($(sub_make_done),1)",
eliminating the need for exporting them.

These are only needed in the top Makefile. If an absolute path is
required in sub-directories, you can use $(abspath ) or $(realpath )
as needed.

Signed-off-by: Masahiro Yamada <[email protected]>
---

Makefile | 4 ++--
rust/Makefile | 4 ++--
scripts/Makefile.package | 2 +-
tools/lib/bpf/Makefile | 2 +-
4 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/Makefile b/Makefile
index d84c0fb215fd..d9274e7c75f0 100644
--- a/Makefile
+++ b/Makefile
@@ -39,8 +39,8 @@ __all:
# prepare rule.

this-makefile := $(lastword $(MAKEFILE_LIST))
-export abs_srctree := $(realpath $(dir $(this-makefile)))
-export abs_objtree := $(CURDIR)
+abs_srctree := $(realpath $(dir $(this-makefile)))
+abs_objtree := $(CURDIR)

ifneq ($(sub_make_done),1)

diff --git a/rust/Makefile b/rust/Makefile
index 9d2a16cc91cb..ae691b71d9fc 100644
--- a/rust/Makefile
+++ b/rust/Makefile
@@ -100,7 +100,7 @@ rustdoc: rustdoc-core rustdoc-macros rustdoc-compiler_builtins \
-e 's:rust-logo-[0-9a-f]+\.svg:logo.svg:g' \
-e 's:favicon-[0-9a-f]+\.svg:logo.svg:g' \
-e 's:<link rel="alternate icon" type="image/png" href="[/.]+/static\.files/favicon-(16x16|32x32)-[0-9a-f]+\.png">::g' \
- -e 's:<a href="srctree/([^"]+)">:<a href="$(abs_srctree)/\1">:g'
+ -e 's:<a href="srctree/([^"]+)">:<a href="$(realpath $(srctree))/\1">:g'
$(Q)for f in $(rustdoc_output)/static.files/rustdoc-*.css; do \
echo ".logo-container > img { object-fit: contain; }" >> $$f; done

@@ -413,7 +413,7 @@ quiet_cmd_rustc_library = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET)) L
rust-analyzer:
$(Q)$(srctree)/scripts/generate_rust_analyzer.py \
--cfgs='core=$(core-cfgs)' --cfgs='alloc=$(alloc-cfgs)' \
- $(abs_srctree) $(abs_objtree) \
+ $(realpath $(srctree)) $(realpath $(objtree)) \
$(RUST_LIB_SRC) $(KBUILD_EXTMOD) > \
$(if $(KBUILD_EXTMOD),$(extmod_prefix),$(objtree))/rust-project.json

diff --git a/scripts/Makefile.package b/scripts/Makefile.package
index a81dfb1f5181..38653f3e8108 100644
--- a/scripts/Makefile.package
+++ b/scripts/Makefile.package
@@ -135,7 +135,7 @@ snap-pkg:
mkdir $(objtree)/snap
$(MAKE) clean
sed "s@KERNELRELEASE@$(KERNELRELEASE)@; \
- s@SRCTREE@$(abs_srctree)@" \
+ s@SRCTREE@$(realpath $(srctree))@" \
$(srctree)/scripts/package/snapcraft.template > \
$(objtree)/snap/snapcraft.yaml
cd $(objtree)/snap && \
diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile
index 4be7144e4803..2cf892774346 100644
--- a/tools/lib/bpf/Makefile
+++ b/tools/lib/bpf/Makefile
@@ -2,7 +2,7 @@
# Most of this file is copied from tools/lib/traceevent/Makefile

RM ?= rm
-srctree = $(abs_srctree)
+srctree := $(realpath $(srctree))

VERSION_SCRIPT := libbpf.map
LIBBPF_VERSION := $(shell \
--
2.40.1



2024-03-06 18:44:19

by Nicolas Schier

[permalink] [raw]
Subject: Re: [PATCH] kbuild: unexport abs_srctree and abs_objtree

On Wed, Mar 06, 2024 at 07:42:22PM +0900 Masahiro Yamada wrote:
> Commit 25b146c5b8ce ("kbuild: allow Kbuild to start from any directory")
> exported abs_srctree and abs_objtree to avoid recomputation after the
> sub-make. However, this approach turned out to be fragile.
>
> Commit 5fa94ceb793e ("kbuild: set correct abs_srctree and abs_objtree
> for package builds") moved them above "ifneq ($(sub_make_done),1)",
> eliminating the need for exporting them.
>
> These are only needed in the top Makefile. If an absolute path is
> required in sub-directories, you can use $(abspath ) or $(realpath )
> as needed.
>
> Signed-off-by: Masahiro Yamada <[email protected]>
> ---

Thanks, I appreciate that abs_* is only used in top-level Makefile.

Reviewed-by: Nicolas Schier <[email protected]>


Attachments:
(No filename) (817.00 B)
signature.asc (849.00 B)
Download all attachments