2024-06-16 05:35:07

by Thayne Harbaugh

[permalink] [raw]
Subject: [PATCH 1/1] kbuild: Fix build target deb-pkg: ln: failed to create hard link

From: Thayne Harbaugh <[email protected]>

The make deb-pkg target calls debian-orig which attempts to either
hard link the source .tar to the build-output location or copy the
source .tar to the build-output location. The test to determine
whether to ln or cp is incorrectly expanded by Make and consequently
always attempts to ln the source .tar. This fix corrects the escaping
of '$' so that the test is expanded by the shell rather than by Make
and appropriately selects between ln and cp.

Signed-off-by: Thayne Harbaugh <[email protected]>
---
scripts/Makefile.package | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/Makefile.package b/scripts/Makefile.package
index 38653f3e8108..bf016af8bf8a 100644
--- a/scripts/Makefile.package
+++ b/scripts/Makefile.package
@@ -103,7 +103,7 @@ debian-orig: private version = $(shell dpkg-parsechangelog -S Version | sed 's/-
debian-orig: private orig-name = $(source)_$(version).orig.tar$(debian-orig-suffix)
debian-orig: mkdebian-opts = --need-source
debian-orig: linux.tar$(debian-orig-suffix) debian
- $(Q)if [ "$(df --output=target .. 2>/dev/null)" = "$(df --output=target $< 2>/dev/null)" ]; then \
+ $(Q)if [ "$$(df --output=target .. 2>/dev/null)" = "$$(df --output=target $< 2>/dev/null)" ]; then \
ln -f $< ../$(orig-name); \
else \
cp $< ../$(orig-name); \
--
2.43.0




2024-06-16 09:40:02

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH 1/1] kbuild: Fix build target deb-pkg: ln: failed to create hard link

On Sun, Jun 16, 2024 at 2:34 PM Thayne Harbaugh <[email protected]> wrote:
>
> From: Thayne Harbaugh <[email protected]>
>
> The make deb-pkg target calls debian-orig which attempts to either
> hard link the source .tar to the build-output location or copy the
> source .tar to the build-output location. The test to determine
> whether to ln or cp is incorrectly expanded by Make and consequently
> always attempts to ln the source .tar. This fix corrects the escaping
> of '$' so that the test is expanded by the shell rather than by Make
> and appropriately selects between ln and cp.
>
> Signed-off-by: Thayne Harbaugh <[email protected]>


Applied with
Fixes: b44aa8c96e9e ("kbuild: deb-pkg: make .orig tarball a hard link
if possible")

Thanks!

> ---
> scripts/Makefile.package | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/Makefile.package b/scripts/Makefile.package
> index 38653f3e8108..bf016af8bf8a 100644
> --- a/scripts/Makefile.package
> +++ b/scripts/Makefile.package
> @@ -103,7 +103,7 @@ debian-orig: private version = $(shell dpkg-parsechangelog -S Version | sed 's/-
> debian-orig: private orig-name = $(source)_$(version).orig.tar$(debian-orig-suffix)
> debian-orig: mkdebian-opts = --need-source
> debian-orig: linux.tar$(debian-orig-suffix) debian
> - $(Q)if [ "$(df --output=target .. 2>/dev/null)" = "$(df --output=target $< 2>/dev/null)" ]; then \
> + $(Q)if [ "$$(df --output=target .. 2>/dev/null)" = "$$(df --output=target $< 2>/dev/null)" ]; then \
> ln -f $< ../$(orig-name); \
> else \
> cp $< ../$(orig-name); \
> --
> 2.43.0
>
>


--
Best Regards
Masahiro Yamada