Subject: Re: linux-next: Tree for Apr 22 (adjust_autoksyms.sh)

From: Randy Dunlap <[email-masked]>
Date: Fri, 22 Apr 2016 11:22:06 -0700

On 04/22/16 10:48, Nicolas Pitre wrote:
> On Fri, 22 Apr 2016, Randy Dunlap wrote:
> 
>> on x86_64:
>>
>> I'm seeing:
>>
>> /bin/sh: scripts/adjust_autoksyms.sh: No such file or directory
>> /local/lnx/next/linux-next-20160422/Makefile:937: recipe for target 'vmlinux' failed
>>
>> when using O=subdir for the build output directory.
>>
>>
>> Is there a missing $(objtree) somewhere?
> 
> Rather a $(srctree).  Please try the patch below.

Hi,

Yes, this patch helps, but I think there is still a problem.
I think that trim needs to be done after CONFIG_BUILD_DOCSRC and possibly
after CONFIG_SAMPLES are built.  At least CONFIG_BUILD_DOCSRC seems to
cause this error:

Setup is 16508 bytes (padded to 16896 bytes).
System is 6125 kB
CRC 8aa70f94
Kernel: arch/x86/boot/bzImage is ready  (#9)
ERROR: "cn_del_callback" [Documentation/connector/cn_test.ko] undefined!
ERROR: "cn_add_callback" [Documentation/connector/cn_test.ko] undefined!
ERROR: "cn_netlink_send" [Documentation/connector/cn_test.ko] undefined!
../scripts/Makefile.modpost:91: recipe for target '__modpost' failed
make[2]: *** [__modpost] Error 1

If I'm reading it incorrectly, just yell at me. :)

> ----- >8
> 
> Subject: [PATCH] kbuild: fix CONFIG_TRIM_UNUSED_KSYMS=y with a separate output  directory
> 
> This fixes the following:
> 
> /bin/sh: scripts/adjust_autoksyms.sh: No such file or directory
> 
> Signed-off-by: Nicolas Pitre <[email-masked]>
> 
> diff --git a/Makefile b/Makefile
> index e3af48068c..e9ad498238 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -934,7 +934,7 @@ quiet_cmd_link-vmlinux = LINK    $@
>  # execute if the rest of the kernel build went well.
>  vmlinux: scripts/link-vmlinux.sh $(vmlinux-deps) FORCE
>  ifdef CONFIG_TRIM_UNUSED_KSYMS
> -	$(Q)$(CONFIG_SHELL) scripts/adjust_autoksyms.sh \
> +	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
>  	  "$(MAKE) KBUILD_MODULES=1 -f $(srctree)/Makefile autoksyms_recursive"
>  endif
>  ifdef CONFIG_HEADERS_CHECK
> @@ -949,13 +949,13 @@ endif
>  	+$(call if_changed,link-vmlinux)
>  
>  autoksyms_recursive: $(vmlinux-deps)
> -	$(Q)$(CONFIG_SHELL) scripts/adjust_autoksyms.sh \
> +	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
>  	  "$(MAKE) KBUILD_MODULES=1 -f $(srctree)/Makefile autoksyms_recursive"
>  PHONY += autoksyms_recursive
>  
>  # standalone target for easier testing
>  include/generated/autoksyms.h: FORCE
> -	$(Q)$(CONFIG_SHELL) scripts/adjust_autoksyms.sh true
> +	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh true
>  
>  # Build samples along the rest of the kernel
>  ifdef CONFIG_SAMPLES
> --

-- 
~Randy