diff options
author | Brian Behlendorf <[email protected]> | 2011-07-19 21:06:50 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2011-07-20 09:37:41 -0700 |
commit | e80cd06b8e0428f3ca2c62e4cb0e4ec54fda1d5c (patch) | |
tree | 2d7e9df703103dc6e67bacc20d498ac40a903fa3 | |
parent | d9365224ea04562af1b0cf2a1c2e84ab429a13b2 (diff) |
Fix 'make install' overly broad 'rm'
When running 'make install' without DESTDIR set the module install
rules would mistakenly destroy the 'modules.*' files for ALL of
your installed kernels. This could lead to a non-functional system
for the alternate kernels because 'depmod -a' will only be run for
the kernel which was compiled against. This issue would not impact
anyone using the 'make <deb|rpm|pkg>' build targets to build and
install packages.
The fix for this issue is to only remove extraneous build products
when DESTDIR is set. This almost exclusively indicates we are
building packages and installed the build products in to a temporary
staging location. Additionally, limit the removal the unneeded
build products to the target kernel version.
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #328
-rw-r--r-- | module/Makefile.in | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/module/Makefile.in b/module/Makefile.in index 70a33ec14..355089aeb 100644 --- a/module/Makefile.in +++ b/module/Makefile.in @@ -16,7 +16,11 @@ modules_install: $(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` \ INSTALL_MOD_PATH=$(DESTDIR) \ INSTALL_MOD_DIR=addon/spl $@ - find $(DESTDIR)/lib/modules/ -name 'modules.*' | xargs $(RM) + @# Remove extraneous build products when packaging + if [ -n "$(DESTDIR)" ]; then \ + find $(DESTDIR)/lib/modules/@LINUX_VERSION@ \ + -name 'modules.*' | xargs $(RM); \ + fi sysmap=$(DESTDIR)/boot/System.map-@LINUX_VERSION@; \ if [ -f $$sysmap ]; then \ depmod -ae -F $$sysmap @LINUX_VERSION@; \ |