| --- a/Makefile |
| +++ b/Makefile |
| @@ -5,7 +5,7 @@ |
| ifeq ($(KERNELRELEASE),) |
| |
| MAKEFLAGS += --no-print-directory |
| -SHELL := /bin/bash |
| +SHELL := /usr/bin/env bash |
| BACKPORT_DIR := $(shell pwd) |
| |
| KMODDIR ?= updates |
| @@ -19,6 +19,7 @@ KLIB_BUILD ?= $(KLIB)/build/ |
| KERNEL_CONFIG := $(KLIB_BUILD)/.config |
| KERNEL_MAKEFILE := $(KLIB_BUILD)/Makefile |
| CONFIG_MD5 := $(shell md5sum $(KERNEL_CONFIG) 2>/dev/null | sed 's/\s.*//') |
| +STAMP_KERNEL_CONFIG := .kernel_config_md5_$(CONFIG_MD5) |
| |
| export KLIB KLIB_BUILD BACKPORT_DIR KMODDIR KMODPATH_ARG |
| |
| @@ -36,7 +37,8 @@ mrproper: |
| @rm -f .kernel_config_md5 Kconfig.versions Kconfig.kernel |
| @rm -f backport-include/backport/autoconf.h |
| |
| -.DEFAULT: |
| +.SILENT: $(STAMP_KERNEL_CONFIG) |
| +$(STAMP_KERNEL_CONFIG): |
| @set -e ; test -f local-symbols || ( \ |
| echo "/--------------" ;\ |
| echo "| You shouldn't run make in the backports tree, but only in" ;\ |
| @@ -60,58 +62,62 @@ mrproper: |
| echo "| (that isn't currently running.)" ;\ |
| echo "\\--" ;\ |
| false) |
| - @set -e ; if [ "$$(cat .kernel_config_md5 2>/dev/null)" != "$(CONFIG_MD5)" ] ;\ |
| - then \ |
| - echo -n "Generating local configuration database from kernel ..." ;\ |
| - grep -v -f local-symbols $(KERNEL_CONFIG) | grep = | ( \ |
| - while read l ; do \ |
| - if [ "$${l:0:7}" != "CONFIG_" ] ; then \ |
| - continue ;\ |
| - fi ;\ |
| - l=$${l:7} ;\ |
| - n=$${l%%=*} ;\ |
| - v=$${l#*=} ;\ |
| - if [ "$$v" = "m" ] ; then \ |
| - echo config $$n ;\ |
| - echo ' tristate' ;\ |
| - elif [ "$$v" = "y" ] ; then \ |
| - echo config $$n ;\ |
| - echo ' bool' ;\ |
| - else \ |
| - continue ;\ |
| - fi ;\ |
| - echo " default $$v" ;\ |
| - echo "" ;\ |
| - done \ |
| - ) > Kconfig.kernel ;\ |
| - kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) M=$(BACKPORT_DIR) \ |
| - kernelversion | sed 's/^\(\([3-5]\|2\.6\)\.[0-9]\+\).*/\1/;t;d');\ |
| - test "$$kver" != "" || echo "Kernel version parse failed!" ;\ |
| - test "$$kver" != "" ;\ |
| - kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\ |
| - kvers="$$kvers $$(seq 0 19 | sed 's/^/3./')" ;\ |
| - kvers="$$kvers $$(seq 0 20 | sed 's/^/4./')" ;\ |
| - kvers="$$kvers $$(seq 0 99 | sed 's/^/5./')" ;\ |
| - print=0 ;\ |
| - for v in $$kvers ; do \ |
| - if [ "$$print" = "1" ] ; then \ |
| - echo config KERNEL_$$(echo $$v | tr . _) ;\ |
| - echo " def_bool y" ;\ |
| - fi ;\ |
| - if [ "$$v" = "$$kver" ] ; then print=1 ; fi ;\ |
| - done > Kconfig.versions ;\ |
| - # RHEL as well, sadly we need to grep for it ;\ |
| - RHEL_MAJOR=$$(grep '^RHEL_MAJOR' $(KERNEL_MAKEFILE) | \ |
| - sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\ |
| - RHEL_MINOR=$$(grep '^RHEL_MINOR' $(KERNEL_MAKEFILE) | \ |
| - sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\ |
| - for v in $$(seq 0 $$RHEL_MINOR) ; do \ |
| - echo config BACKPORT_RHEL_KERNEL_$${RHEL_MAJOR}_$$v ;\ |
| - echo " def_bool y" ;\ |
| - done >> Kconfig.versions ;\ |
| - echo " done." ;\ |
| - fi ;\ |
| - echo "$(CONFIG_MD5)" > .kernel_config_md5 |
| + @rm -f .kernel_config_md5_* |
| + @touch $@ |
| + |
| +Kconfig.kernel: $(STAMP_KERNEL_CONFIG) local-symbols |
| + @printf "Generating local configuration database from kernel ..." |
| + @grep -v -f local-symbols $(KERNEL_CONFIG) | grep = | ( \ |
| + while read l ; do \ |
| + if [ "$${l:0:7}" != "CONFIG_" ] ; then \ |
| + continue ;\ |
| + fi ;\ |
| + l=$${l:7} ;\ |
| + n=$${l%%=*} ;\ |
| + v=$${l#*=} ;\ |
| + if [ "$$v" = "m" ] ; then \ |
| + echo config $$n ;\ |
| + echo ' tristate' ;\ |
| + elif [ "$$v" = "y" ] ; then \ |
| + echo config $$n ;\ |
| + echo ' bool' ;\ |
| + else \ |
| + continue ;\ |
| + fi ;\ |
| + echo " default $$v" ;\ |
| + echo "" ;\ |
| + done \ |
| + ) > $@ |
| + @echo " done." |
| + |
| +Kconfig.versions: Kconfig.kernel |
| + @kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) M=$(BACKPORT_DIR) \ |
| + kernelversion | sed 's/^\(\([3-5]\|2\.6\)\.[0-9]\+\).*/\1/;t;d');\ |
| + test "$$kver" != "" || echo "Kernel version parse failed!" ;\ |
| + test "$$kver" != "" ;\ |
| + kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\ |
| + kvers="$$kvers $$(seq 0 19 | sed 's/^/3./')" ;\ |
| + kvers="$$kvers $$(seq 0 20 | sed 's/^/4./')" ;\ |
| + kvers="$$kvers $$(seq 0 99 | sed 's/^/5./')" ;\ |
| + print=0 ;\ |
| + for v in $$kvers ; do \ |
| + if [ "$$print" = "1" ] ; then \ |
| + echo config KERNEL_$$(echo $$v | tr . _) ;\ |
| + echo " def_bool y" ;\ |
| + fi ;\ |
| + if [ "$$v" = "$$kver" ] ; then print=1 ; fi ;\ |
| + done > $@ |
| + @RHEL_MAJOR=$$(grep '^RHEL_MAJOR' $(KERNEL_MAKEFILE) | \ |
| + sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\ |
| + RHEL_MINOR=$$(grep '^RHEL_MINOR' $(KERNEL_MAKEFILE) | \ |
| + sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\ |
| + for v in $$(seq 0 $$RHEL_MINOR) ; do \ |
| + echo config BACKPORT_RHEL_KERNEL_$${RHEL_MAJOR}_$$v ;\ |
| + echo " def_bool y" ;\ |
| + done >> $@ |
| + |
| +.DEFAULT: |
| + @$(MAKE) Kconfig.versions |
| @$(MAKE) -f Makefile.real "$@" |
| |
| .PHONY: defconfig-help |
| --- a/Makefile.real |
| +++ b/Makefile.real |
| @@ -59,7 +59,7 @@ defconfig-%:: |
| |
| backport-include/backport/autoconf.h: .config Kconfig.versions Kconfig.kernel |
| @$(MAKE) oldconfig |
| - @echo -n "Building backport-include/backport/autoconf.h ..." |
| + @printf "Building backport-include/backport/autoconf.h ..." |
| @grep -f local-symbols .config | ( \ |
| echo "#ifndef COMPAT_AUTOCONF_INCLUDED" ;\ |
| echo "#define COMPAT_AUTOCONF_INCLUDED" ;\ |
| @@ -80,7 +80,12 @@ backport-include/backport/autoconf.h: .c |
| esac ;\ |
| done ;\ |
| echo "#endif /* COMPAT_AUTOCONF_INCLUDED */" ;\ |
| - ) > backport-include/backport/autoconf.h |
| + ) > $@.new |
| + @if cmp -s $@ $@.new; then \ |
| + rm -f $@.new; \ |
| + else \ |
| + mv $@.new $@; \ |
| + fi |
| @echo " done." |
| |
| .PHONY: modules |