diff mbox series

build: Allow to install over dirty dir

Message ID 20240306145804.135709-1-lucas.de.marchi@gmail.com (mailing list archive)
State New
Headers show
Series build: Allow to install over dirty dir | expand

Commit Message

Lucas De Marchi March 6, 2024, 2:58 p.m. UTC
Before commit e98cef6f3f8c ("make: install/uninstall tools symlinks to
kmod") it was possible to call `make install DESTDIR=<dir>` multiple
times. Use `ln -sf` so the symlink is always re-created.

It would be preferred to remove install in an empty dir, but there's
not a bad consequence of re-using the same, so let the user decide.
Fixes the following errors while installing for the second time:

	ln: failed to create symbolic link '/tmp/inst/usr/bin/insmod': File exists
	ln: failed to create symbolic link '/tmp/inst/usr/bin/lsmod': File exists
	ln: failed to create symbolic link '/tmp/inst/usr/bin/rmmod': File exists
	ln: failed to create symbolic link '/tmp/inst/usr/bin/depmod': File exists
	ln: failed to create symbolic link '/tmp/inst/usr/bin/modprobe': File exists
	ln: failed to create symbolic link '/tmp/inst/usr/bin/modinfo': File exists
	make[3]: *** [Makefile:2679: install-exec-hook] Error 1
	make[2]: *** [Makefile:2553: install-exec-am] Error 2
	make[1]: *** [Makefile:2439: install-am] Error 2
	make: *** [Makefile:1848: install-recursive] Error 1

Cc: Emil Velikov <emil.l.velikov@gmail.com>
Closes: https://github.com/kmod-project/kmod/issues/35
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
---
 Makefile.am | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Emil Velikov March 6, 2024, 6:26 p.m. UTC | #1
On Wed, 6 Mar 2024 at 14:58, Lucas De Marchi <lucas.de.marchi@gmail.com> wrote:
>
> Before commit e98cef6f3f8c ("make: install/uninstall tools symlinks to
> kmod") it was possible to call `make install DESTDIR=<dir>` multiple
> times. Use `ln -sf` so the symlink is always re-created.
>
> It would be preferred to remove install in an empty dir, but there's
> not a bad consequence of re-using the same, so let the user decide.
> Fixes the following errors while installing for the second time:
>
>         ln: failed to create symbolic link '/tmp/inst/usr/bin/insmod': File exists
>         ln: failed to create symbolic link '/tmp/inst/usr/bin/lsmod': File exists
>         ln: failed to create symbolic link '/tmp/inst/usr/bin/rmmod': File exists
>         ln: failed to create symbolic link '/tmp/inst/usr/bin/depmod': File exists
>         ln: failed to create symbolic link '/tmp/inst/usr/bin/modprobe': File exists
>         ln: failed to create symbolic link '/tmp/inst/usr/bin/modinfo': File exists
>         make[3]: *** [Makefile:2679: install-exec-hook] Error 1
>         make[2]: *** [Makefile:2553: install-exec-am] Error 2
>         make[1]: *** [Makefile:2439: install-am] Error 2
>         make: *** [Makefile:1848: install-recursive] Error 1
>
> Cc: Emil Velikov <emil.l.velikov@gmail.com>
> Closes: https://github.com/kmod-project/kmod/issues/35
> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>

This matches the default `man 1 install` behaviour, which overrides
existing file(s).

Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>

-Emil
diff mbox series

Patch

diff --git a/Makefile.am b/Makefile.am
index d37b56d..2222c21 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -113,7 +113,7 @@  install-exec-hook:
 	fi
 if BUILD_TOOLS
 	for tool in insmod lsmod rmmod depmod modprobe modinfo; do \
-		$(LN_S) kmod $(DESTDIR)$(bindir)/$$tool; \
+		$(LN_S) -f kmod $(DESTDIR)$(bindir)/$$tool; \
 	done
 endif