001-fix_build.patch 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. --- a/Makefile
  2. +++ b/Makefile
  3. @@ -5,7 +5,7 @@
  4. ifeq ($(KERNELRELEASE),)
  5. MAKEFLAGS += --no-print-directory
  6. -SHELL := /bin/bash
  7. +SHELL := /usr/bin/env bash
  8. BACKPORT_DIR := $(shell pwd)
  9. KMODDIR ?= updates
  10. @@ -19,6 +19,7 @@ KLIB_BUILD ?= $(KLIB)/build/
  11. KERNEL_CONFIG := $(KLIB_BUILD)/.config
  12. KERNEL_MAKEFILE := $(KLIB_BUILD)/Makefile
  13. CONFIG_MD5 := $(shell md5sum $(KERNEL_CONFIG) 2>/dev/null | sed 's/\s.*//')
  14. +STAMP_KERNEL_CONFIG := .kernel_config_md5_$(CONFIG_MD5)
  15. export KLIB KLIB_BUILD BACKPORT_DIR KMODDIR KMODPATH_ARG
  16. @@ -36,7 +37,8 @@ mrproper:
  17. @rm -f .kernel_config_md5 Kconfig.versions Kconfig.kernel
  18. @rm -f backport-include/backport/autoconf.h
  19. -.DEFAULT:
  20. +.SILENT: $(STAMP_KERNEL_CONFIG)
  21. +$(STAMP_KERNEL_CONFIG):
  22. @set -e ; test -f local-symbols || ( \
  23. echo "/--------------" ;\
  24. echo "| You shouldn't run make in the backports tree, but only in" ;\
  25. @@ -60,58 +62,62 @@ mrproper:
  26. echo "| (that isn't currently running.)" ;\
  27. echo "\\--" ;\
  28. false)
  29. - @set -e ; if [ "$$(cat .kernel_config_md5 2>/dev/null)" != "$(CONFIG_MD5)" ] ;\
  30. - then \
  31. - echo -n "Generating local configuration database from kernel ..." ;\
  32. - grep -v -f local-symbols $(KERNEL_CONFIG) | grep = | ( \
  33. - while read l ; do \
  34. - if [ "$${l:0:7}" != "CONFIG_" ] ; then \
  35. - continue ;\
  36. - fi ;\
  37. - l=$${l:7} ;\
  38. - n=$${l%%=*} ;\
  39. - v=$${l#*=} ;\
  40. - if [ "$$v" = "m" ] ; then \
  41. - echo config $$n ;\
  42. - echo ' tristate' ;\
  43. - elif [ "$$v" = "y" ] ; then \
  44. - echo config $$n ;\
  45. - echo ' bool' ;\
  46. - else \
  47. - continue ;\
  48. - fi ;\
  49. - echo " default $$v" ;\
  50. - echo "" ;\
  51. - done \
  52. - ) > Kconfig.kernel ;\
  53. - kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion | \
  54. - sed 's/^\(\([3-5]\|2\.6\)\.[0-9]\+\).*/\1/;t;d') ;\
  55. - test "$$kver" != "" || echo "Kernel version parse failed!" ;\
  56. - test "$$kver" != "" ;\
  57. - kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
  58. - kvers="$$kvers $$(seq 0 19 | sed 's/^/3./')" ;\
  59. - kvers="$$kvers $$(seq 0 20 | sed 's/^/4./')" ;\
  60. - kvers="$$kvers $$(seq 0 99 | sed 's/^/5./')" ;\
  61. - print=0 ;\
  62. - for v in $$kvers ; do \
  63. - if [ "$$print" = "1" ] ; then \
  64. - echo config KERNEL_$$(echo $$v | tr . _) ;\
  65. - echo " def_bool y" ;\
  66. - fi ;\
  67. - if [ "$$v" = "$$kver" ] ; then print=1 ; fi ;\
  68. - done > Kconfig.versions ;\
  69. - # RHEL as well, sadly we need to grep for it ;\
  70. - RHEL_MAJOR=$$(grep '^RHEL_MAJOR' $(KERNEL_MAKEFILE) | \
  71. - sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
  72. - RHEL_MINOR=$$(grep '^RHEL_MINOR' $(KERNEL_MAKEFILE) | \
  73. - sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
  74. - for v in $$(seq 0 $$RHEL_MINOR) ; do \
  75. - echo config BACKPORT_RHEL_KERNEL_$${RHEL_MAJOR}_$$v ;\
  76. - echo " def_bool y" ;\
  77. - done >> Kconfig.versions ;\
  78. - echo " done." ;\
  79. - fi ;\
  80. - echo "$(CONFIG_MD5)" > .kernel_config_md5
  81. + @rm -f .kernel_config_md5_*
  82. + @touch $@
  83. +
  84. +Kconfig.kernel: $(STAMP_KERNEL_CONFIG) local-symbols
  85. + @printf "Generating local configuration database from kernel ..."
  86. + @grep -v -f local-symbols $(KERNEL_CONFIG) | grep = | ( \
  87. + while read l ; do \
  88. + if [ "$${l:0:7}" != "CONFIG_" ] ; then \
  89. + continue ;\
  90. + fi ;\
  91. + l=$${l:7} ;\
  92. + n=$${l%%=*} ;\
  93. + v=$${l#*=} ;\
  94. + if [ "$$v" = "m" ] ; then \
  95. + echo config $$n ;\
  96. + echo ' tristate' ;\
  97. + elif [ "$$v" = "y" ] ; then \
  98. + echo config $$n ;\
  99. + echo ' bool' ;\
  100. + else \
  101. + continue ;\
  102. + fi ;\
  103. + echo " default $$v" ;\
  104. + echo "" ;\
  105. + done \
  106. + ) > $@
  107. + @echo " done."
  108. +
  109. +Kconfig.versions: Kconfig.kernel
  110. + @kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion | \
  111. + sed 's/^\(\([3-5]\|2\.6\)\.[0-9]\+\).*/\1/;t;d') ;\
  112. + test "$$kver" != "" || echo "Kernel version parse failed!" ;\
  113. + test "$$kver" != "" ;\
  114. + kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
  115. + kvers="$$kvers $$(seq 0 19 | sed 's/^/3./')" ;\
  116. + kvers="$$kvers $$(seq 0 20 | sed 's/^/4./')" ;\
  117. + kvers="$$kvers $$(seq 0 99 | sed 's/^/5./')" ;\
  118. + print=0 ;\
  119. + for v in $$kvers ; do \
  120. + if [ "$$print" = "1" ] ; then \
  121. + echo config KERNEL_$$(echo $$v | tr . _) ;\
  122. + echo " def_bool y" ;\
  123. + fi ;\
  124. + if [ "$$v" = "$$kver" ] ; then print=1 ; fi ;\
  125. + done > $@
  126. + @RHEL_MAJOR=$$(grep '^RHEL_MAJOR' $(KERNEL_MAKEFILE) | \
  127. + sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
  128. + RHEL_MINOR=$$(grep '^RHEL_MINOR' $(KERNEL_MAKEFILE) | \
  129. + sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
  130. + for v in $$(seq 0 $$RHEL_MINOR) ; do \
  131. + echo config BACKPORT_RHEL_KERNEL_$${RHEL_MAJOR}_$$v ;\
  132. + echo " def_bool y" ;\
  133. + done >> $@
  134. +
  135. +.DEFAULT:
  136. + @$(MAKE) Kconfig.versions
  137. @$(MAKE) -f Makefile.real "$@"
  138. .PHONY: defconfig-help
  139. --- a/Makefile.real
  140. +++ b/Makefile.real
  141. @@ -59,7 +59,7 @@ defconfig-%::
  142. backport-include/backport/autoconf.h: .config Kconfig.versions Kconfig.kernel
  143. @$(MAKE) oldconfig
  144. - @echo -n "Building backport-include/backport/autoconf.h ..."
  145. + @printf "Building backport-include/backport/autoconf.h ..."
  146. @grep -f local-symbols .config | ( \
  147. echo "#ifndef COMPAT_AUTOCONF_INCLUDED" ;\
  148. echo "#define COMPAT_AUTOCONF_INCLUDED" ;\
  149. @@ -80,7 +80,12 @@ backport-include/backport/autoconf.h: .c
  150. esac ;\
  151. done ;\
  152. echo "#endif /* COMPAT_AUTOCONF_INCLUDED */" ;\
  153. - ) > backport-include/backport/autoconf.h
  154. + ) > [email protected]
  155. + @if cmp -s $@ [email protected]; then \
  156. + rm -f [email protected]; \
  157. + else \
  158. + mv [email protected] $@; \
  159. + fi
  160. @echo " done."
  161. .PHONY: modules