aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2013-10-18 15:18:46 -0400
committerHelge Deller <deller@gmx.de>2013-11-07 16:28:06 -0500
commitb0756b5adefcb51eaa84810a0b7abd4df8c19eb9 (patch)
treeb836c519c48921084474950bf9e33c4cbdfad33f /arch/parisc
parent527973c84077eb9273d0b2408655620de2e30136 (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/Makefile22
-rw-r--r--arch/parisc/install.sh44
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
97palo: vmlinuz 97palo 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 112BOOT_TARGETS = zImage Image palo lifimage
113INSTALL_TARGETS = zinstall install
114
115PHONY += bzImage $(BOOT_TARGETS) $(INSTALL_TARGETS)
116
117bzImage zImage: vmlinuz
113Image: vmlinux 118Image: vmlinux
114zImage bzImage: vmlinuz
115 119
116vmlinuz: vmlinux 120vmlinuz: vmlinux
117 @gzip -cf -9 $< > $@ 121 @gzip -cf -9 $< > $@
118 122
119install: vmlinuz 123install:
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)"
126zinstall:
127 $(CONFIG_SHELL) $(src)/arch/parisc/install.sh \
128 $(KERNELRELEASE) vmlinuz System.map "$(INSTALL_PATH)"
122 129
123CLEAN_FILES += lifimage 130CLEAN_FILES += lifimage
124MRPROPER_FILES += palo.conf 131MRPROPER_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'
134endef 142endef
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
22verify () {
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
34verify "$2"
35verify "$3"
36
22# User may have a custom install script 37# User may have a custom install script
23 38
24if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi 39if [ -n "${INSTALLKERNEL}" ]; then
25if [ -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
42fi
26 43
27# Default install 44# Default install
28 45
29if [ -f $4/vmlinuz ]; then 46if [ "$(basename $2)" = "zImage" ]; then
30 mv $4/vmlinuz $4/vmlinuz.old 47# Compressed install
48 echo "Installing compressed kernel"
49 base=vmlinuz
50else
51# Normal install
52 echo "Installing normal kernel"
53 base=vmlinux
54fi
55
56if [ -f $4/$base-$1 ]; then
57 mv $4/$base-$1 $4/$base-$1.old
31fi 58fi
59cat $2 > $4/$base-$1
32 60
33if [ -f $4/System.map ]; then 61# Install system map file
34 mv $4/System.map $4/System.old 62if [ -f $4/System.map-$1 ]; then
63 mv $4/System.map-$1 $4/System.map-$1.old
35fi 64fi
65cp $3 $4/System.map-$1
36 66
37cat $2 > $4/vmlinuz
38cp $3 $4/System.map