• Robert Richter's avatar
    arm, kbuild: make "make install" not depend on vmlinux · 19514fc6
    Robert Richter authored
    Install targets (install, zinstall, uinstall) on arm 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 arm and maybe other archs we need the same as for x86:
    
     1648e4f8 x86, kbuild: make "make install" not depend on vmlinux
    
    This patch fixes this for arm. Dependencies are removed and instead a
    check to install.sh is added for the files that are needed.
    
    This issue was uncovered by this build error where the -j option is
    used in conjunction with install targets:
    
     $ make <makeflags>
     $ make <makeflags> zinstall
     ...
       DEPMOD
     Usage: .../scripts/depmod.sh /sbin/depmod <kernelrelease>
    
    (INSTALL_MOD_PATH and INSTALL_PATH variables set, so no root perms
    required in this case.)
    
    The problem is that zinstall on arm due to its dependency to vmlinux
    does a prepare/prepare3 and finally does a forced rewrite of
    kernel.release even if it exists already.
    
    Rebuilding kernel.release removes it first and then recreates it. This
    might race with another parallel make job running depmod.
    
    So this patch should fix this one too.
    
    Also quoting $(KERNELRELEASE) arg for install.sh as this messes
    argument order in case it is empty (which is the case if the kernel
    was not built yet).
    Signed-off-by: default avatarRobert Richter <robert.richter@linaro.org>
    Signed-off-by: default avatarRobert Richter <rric@kernel.org>
    Acked-by: Michal Marek <mmarek@suse.cz>.
    Acked-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: default avatar"Yann E. MORIN" <yann.morin.1998@free.fr>
    Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
    19514fc6
Makefile 11.7 KB