On Sat, 06 Aug 2016 11:38:21 +0100 Ian Campbell <[email protected]> wrote:
[...]
> Or similar to your original:
> 
> $ make -n -C debian/build/build_arm64_none_arm64/ dtbs_install 
> INSTALL_DTBS_PATH=$HOME/tmp/dtbs V=1 | head -n 15
> make: Entering directory 
> '/local/scratch/ijc/development/debian/pkg-kernel/master.git/debian/build/build_arm64_none_arm64'
> make -C /local/scratch/ijc/development/debian/pkg-kernel/master.git 
> O=/local/scratch/ijc/development/debian/pkg-kernel/master.git/debian/build/build_arm64_none_arm64/.
>  dtbs_install
> make -C 
> /local/scratch/ijc/development/debian/pkg-kernel/master.git/debian/build/build_arm64_none_arm64
>  KBUILD_SRC=/local/scratch/ijc/development/debian/pkg-kernel/master.git \
> -f /local/scratch/ijc/development/debian/pkg-kernel/master.git/Makefile 
> dtbs_install
> /local/scratch/ijc/development/debian/pkg-kernel/master.git/Makefile:681: 
> Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not 
> supported by compiler

I can reproduce this by running:

    debian/rules setup
    /usr/bin/make -C debian/build/build_arm64_none_arm64 dtbs
    /usr/bin/make -C debian/build/build_arm64_none_arm64 dtbs_install 
INSTALL_DTBS_PATH=$PWD/debian/linux-image-4.7.0-rc7-arm64-unsigned/usr/lib/linux-image-4.7.0-rc7-arm64

The problem is with this definition in Makefile.dtbinst:

    export dtbinst-root ?= $(obj)

This should define and export dtbinst-root when handling the root dts
directory, and do nothing in the subdirectories.  But it does not get
exported to the environment, probably because it contains a hyphen.  It
does somehow get through to a sub-make if and only if we perform an in-
tree build, but the Debian package always does out-of-tree builds.

This looks like a bug in make, but we can at least work around it by
using a non-hyphenated variable name.

The current make documentation says that:

"Except by explicit request, 'make' exports a variable only if it is
either defined in the environment initially or set on the command line,
and if its name consists only of letters, numbers, and underscores.
Some shells cannot cope with environment variable names consisting of
characters other than letters, numbers, and underscores."

That implies that an explicit export of a variable whose name contains
a hyphen should be OK.

Ben.

-- 
Ben Hutchings
Editing code like this is akin to sticking plasters on the bleeding
stump
of a severed limb. - me, 29 June 1999

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to