fe0ed8f910
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 <behlendorf1@llnl.gov> Closes #328
61 lines
1.8 KiB
Makefile
61 lines
1.8 KiB
Makefile
subdir-m += avl
|
|
subdir-m += nvpair
|
|
subdir-m += unicode
|
|
subdir-m += zcommon
|
|
subdir-m += zfs
|
|
subdir-m += zpios
|
|
|
|
modules:
|
|
@# Make the exported SPL symbols available to these modules.
|
|
@# They may be in the root of SPL_OBJ when building against
|
|
@# installed devel headers, or they may be in the module
|
|
@# subdirectory when building against the spl source tree.
|
|
@if [ -f @SPL_OBJ@/@SPL_SYMBOLS@ ]; then \
|
|
/bin/cp @SPL_OBJ@/@SPL_SYMBOLS@ .; \
|
|
elif [ -f @SPL_OBJ@/module/@SPL_SYMBOLS@ ]; then \
|
|
/bin/cp @SPL_OBJ@/module/@SPL_SYMBOLS@ .; \
|
|
else \
|
|
echo -e "\n" \
|
|
"*** Missing spl symbols ensure you have built the spl:\n" \
|
|
"*** - @SPL_OBJ@/@SPL_SYMBOLS@, or\n" \
|
|
"*** - @SPL_OBJ@/module/@SPL_SYMBOLS@\n"; \
|
|
exit 1; \
|
|
fi
|
|
$(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` @KERNELMAKE_PARAMS@ $@
|
|
|
|
clean:
|
|
@# Only cleanup the kernel build directories when CONFIG_KERNEL
|
|
@# is defined. This indicates that kernel modules should be built.
|
|
@CONFIG_KERNEL_TRUE@ $(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` @KERNELMAKE_PARAMS@ $@
|
|
|
|
if [ -f @SPL_SYMBOLS@ ]; then $(RM) @SPL_SYMBOLS@; fi
|
|
if [ -f @LINUX_SYMBOLS@ ]; then $(RM) @LINUX_SYMBOLS@; fi
|
|
if [ -f Module.markers ]; then $(RM) Module.markers; fi
|
|
|
|
modules_install:
|
|
@# Install the kernel modules
|
|
$(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` \
|
|
INSTALL_MOD_PATH=$(DESTDIR) \
|
|
INSTALL_MOD_DIR=addon/zfs $@
|
|
@# 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@; \
|
|
fi
|
|
|
|
modules_uninstall:
|
|
@# Uninstall the kernel modules
|
|
$(RM) -R $(DESTDIR)/lib/modules/@LINUX_VERSION@/addon/zfs
|
|
|
|
distdir:
|
|
|
|
distclean maintainer-clean: clean
|
|
install: modules_install
|
|
uninstall: modules_uninstall
|
|
all: modules
|
|
check:
|