diff options
author | Helge Deller <deller@gmx.de> | 2013-10-18 15:18:46 -0400 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2013-11-07 16:28:06 -0500 |
commit | b0756b5adefcb51eaa84810a0b7abd4df8c19eb9 (patch) | |
tree | b836c519c48921084474950bf9e33c4cbdfad33f /arch/parisc | |
parent | 527973c84077eb9273d0b2408655620de2e30136 (diff) |
parisc: make "make install" not depend on vmlinux
Install targets (install, zinstall, uinstall) on parisc have a
dependency to vmlinux. This may cause parts of the kernel to be rebuilt
during installation. We must avoid this since this may run as root.
Install targets "ABSOLUTELY MUST NOT MODIFY THE SOURCE TREE." as Linus
emphasized this in:
http://lkml.org/lkml/2013/7/10/600
So on parisc and maybe other archs we need the same as for x86:
1648e4f8 x86, kbuild: make "make install" not depend on vmlinux
This parisc patch was inspired by:
19514fc6 arm, kbuild: make "make install" not depend on vmlinux
Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'arch/parisc')
-rw-r--r-- | arch/parisc/Makefile | 22 | ||||
-rw-r--r-- | arch/parisc/install.sh | 44 |
2 files changed, 51 insertions, 15 deletions
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile index e02f665f804a..7187664034c3 100644 --- a/arch/parisc/Makefile +++ b/arch/parisc/Makefile | |||
@@ -94,7 +94,7 @@ PALOCONF := $(shell if [ -f $(src)/palo.conf ]; then echo $(src)/palo.conf; \ | |||
94 | else echo $(obj)/palo.conf; \ | 94 | else echo $(obj)/palo.conf; \ |
95 | fi) | 95 | fi) |
96 | 96 | ||
97 | palo: vmlinuz | 97 | palo lifimage: vmlinuz |
98 | @if test ! -x "$(PALO)"; then \ | 98 | @if test ! -x "$(PALO)"; then \ |
99 | echo 'ERROR: Please install palo first (apt-get install palo)';\ | 99 | echo 'ERROR: Please install palo first (apt-get install palo)';\ |
100 | echo 'or build it from source and install it somewhere in your $$PATH';\ | 100 | echo 'or build it from source and install it somewhere in your $$PATH';\ |
@@ -109,16 +109,23 @@ palo: vmlinuz | |||
109 | fi | 109 | fi |
110 | $(PALO) -f $(PALOCONF) | 110 | $(PALO) -f $(PALOCONF) |
111 | 111 | ||
112 | # Shorthands for known targets not supported by parisc, use vmlinux/vmlinuz as default | 112 | BOOT_TARGETS = zImage Image palo lifimage |
113 | INSTALL_TARGETS = zinstall install | ||
114 | |||
115 | PHONY += bzImage $(BOOT_TARGETS) $(INSTALL_TARGETS) | ||
116 | |||
117 | bzImage zImage: vmlinuz | ||
113 | Image: vmlinux | 118 | Image: vmlinux |
114 | zImage bzImage: vmlinuz | ||
115 | 119 | ||
116 | vmlinuz: vmlinux | 120 | vmlinuz: vmlinux |
117 | @gzip -cf -9 $< > $@ | 121 | @gzip -cf -9 $< > $@ |
118 | 122 | ||
119 | install: vmlinuz | 123 | install: |
120 | sh $(src)/arch/parisc/install.sh \ | 124 | $(CONFIG_SHELL) $(src)/arch/parisc/install.sh \ |
121 | $(KERNELRELEASE) $< System.map "$(INSTALL_PATH)" | 125 | $(KERNELRELEASE) vmlinux System.map "$(INSTALL_PATH)" |
126 | zinstall: | ||
127 | $(CONFIG_SHELL) $(src)/arch/parisc/install.sh \ | ||
128 | $(KERNELRELEASE) vmlinuz System.map "$(INSTALL_PATH)" | ||
122 | 129 | ||
123 | CLEAN_FILES += lifimage | 130 | CLEAN_FILES += lifimage |
124 | MRPROPER_FILES += palo.conf | 131 | MRPROPER_FILES += palo.conf |
@@ -127,10 +134,11 @@ define archhelp | |||
127 | @echo '* vmlinux - Uncompressed kernel image (./vmlinux)' | 134 | @echo '* vmlinux - Uncompressed kernel image (./vmlinux)' |
128 | @echo ' vmlinuz - Compressed kernel image (./vmlinuz)' | 135 | @echo ' vmlinuz - Compressed kernel image (./vmlinuz)' |
129 | @echo ' palo - Bootable image (./lifimage)' | 136 | @echo ' palo - Bootable image (./lifimage)' |
130 | @echo ' install - Install kernel using' | 137 | @echo ' install - Install uncompressed vmlinux kernel using' |
131 | @echo ' (your) ~/bin/$(INSTALLKERNEL) or' | 138 | @echo ' (your) ~/bin/$(INSTALLKERNEL) or' |
132 | @echo ' (distribution) /sbin/$(INSTALLKERNEL) or' | 139 | @echo ' (distribution) /sbin/$(INSTALLKERNEL) or' |
133 | @echo ' copy to $$(INSTALL_PATH)' | 140 | @echo ' copy to $$(INSTALL_PATH)' |
141 | @echo ' zinstall - Install compressed vmlinuz kernel' | ||
134 | endef | 142 | endef |
135 | 143 | ||
136 | # we require gcc 3.3 or above to compile the kernel | 144 | # we require gcc 3.3 or above to compile the kernel |
diff --git a/arch/parisc/install.sh b/arch/parisc/install.sh index 4da682b466d0..6f68784fea25 100644 --- a/arch/parisc/install.sh +++ b/arch/parisc/install.sh | |||
@@ -19,20 +19,48 @@ | |||
19 | # $4 - default install path (blank if root directory) | 19 | # $4 - default install path (blank if root directory) |
20 | # | 20 | # |
21 | 21 | ||
22 | verify () { | ||
23 | if [ ! -f "$1" ]; then | ||
24 | echo "" 1>&2 | ||
25 | echo " *** Missing file: $1" 1>&2 | ||
26 | echo ' *** You need to run "make" before "make install".' 1>&2 | ||
27 | echo "" 1>&2 | ||
28 | exit 1 | ||
29 | fi | ||
30 | } | ||
31 | |||
32 | # Make sure the files actually exist | ||
33 | |||
34 | verify "$2" | ||
35 | verify "$3" | ||
36 | |||
22 | # User may have a custom install script | 37 | # User may have a custom install script |
23 | 38 | ||
24 | if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi | 39 | if [ -n "${INSTALLKERNEL}" ]; then |
25 | if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi | 40 | if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi |
41 | if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi | ||
42 | fi | ||
26 | 43 | ||
27 | # Default install | 44 | # Default install |
28 | 45 | ||
29 | if [ -f $4/vmlinuz ]; then | 46 | if [ "$(basename $2)" = "zImage" ]; then |
30 | mv $4/vmlinuz $4/vmlinuz.old | 47 | # Compressed install |
48 | echo "Installing compressed kernel" | ||
49 | base=vmlinuz | ||
50 | else | ||
51 | # Normal install | ||
52 | echo "Installing normal kernel" | ||
53 | base=vmlinux | ||
54 | fi | ||
55 | |||
56 | if [ -f $4/$base-$1 ]; then | ||
57 | mv $4/$base-$1 $4/$base-$1.old | ||
31 | fi | 58 | fi |
59 | cat $2 > $4/$base-$1 | ||
32 | 60 | ||
33 | if [ -f $4/System.map ]; then | 61 | # Install system map file |
34 | mv $4/System.map $4/System.old | 62 | if [ -f $4/System.map-$1 ]; then |
63 | mv $4/System.map-$1 $4/System.map-$1.old | ||
35 | fi | 64 | fi |
65 | cp $3 $4/System.map-$1 | ||
36 | 66 | ||
37 | cat $2 > $4/vmlinuz | ||
38 | cp $3 $4/System.map | ||