diff mbox

[PATCHv3,1/2] linux target name might be not equal linux file name

Message ID 20140710200054.GA29977@waldemar-brodkorb.de
State Superseded
Headers show

Commit Message

Waldemar Brodkorb July 10, 2014, 8 p.m. UTC
For example the upcoming qemu-xtensa patch is using this feature,
where the target is called "zImage", but the resulting kernel name
is "Image.elf".

---
Changes v2 -> v3:
  - no change
Changes v1 -> v2:
  - add comment about default value (suggested by Arnout)
  - reorder default value for LINUX_TARGET_NAME (suggested by Arnout)

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
---
 linux/Config.in |    7 +++++++
 linux/linux.mk  |   10 +++++++---
 2 files changed, 14 insertions(+), 3 deletions(-)

Comments

Yann E. MORIN July 10, 2014, 8:22 p.m. UTC | #1
Waldemar, All,

On 2014-07-10 22:00 +0200, Waldemar Brodkorb spake thusly:
> For example the upcoming qemu-xtensa patch is using this feature,
> where the target is called "zImage", but the resulting kernel name
> is "Image.elf".
> 
> ---
> Changes v2 -> v3:
>   - no change
> Changes v1 -> v2:
>   - add comment about default value (suggested by Arnout)
>   - reorder default value for LINUX_TARGET_NAME (suggested by Arnout)
> 
> Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
> ---
>  linux/Config.in |    7 +++++++
>  linux/linux.mk  |   10 +++++++---
>  2 files changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/linux/Config.in b/linux/Config.in
> index 0a13b13..1c316ae 100644
> --- a/linux/Config.in
> +++ b/linux/Config.in
> @@ -244,6 +244,13 @@ config BR2_LINUX_KERNEL_IMAGE_TARGET_NAME
>  	  Specify the kernel make target to build the kernel that you
>  	  need.
>  
> +config BR2_LINUX_KERNEL_IMAGE_NAME
> +	string "Kernel image name"
> +	depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM
> +	help
> +	  Specify the kernel filename. Defaults to BR2_LINUX_KERNEL_TARGET_NAME
> +	  if not set.

I would rephrase this to:

    The filename of the kernel image, if it is different from the
    make target (above). Only Xtensa uses a filename different from
    the make target.

    If unsure, leave it empty.

>  config BR2_LINUX_KERNEL_UIMAGE_LOADADDR
>  	string "load address (for 3.7+ multi-platform image)"
>  	depends on BR2_arm || BR2_armeb
> diff --git a/linux/linux.mk b/linux/linux.mk
> index bd3f2ac..1ba3953 100644
> --- a/linux/linux.mk
> +++ b/linux/linux.mk
> @@ -80,7 +80,8 @@ endif
>  KERNEL_DTBS = $(addsuffix .dtb,$(KERNEL_DTS_NAME))
>  
>  ifeq ($(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM),y)
> -LINUX_IMAGE_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME))
> +LINUX_IMAGE_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_NAME))
> +LINUX_TARGET_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME))
>  else
>  ifeq ($(BR2_LINUX_KERNEL_UIMAGE),y)
>  LINUX_IMAGE_NAME = uImage
> @@ -106,6 +107,9 @@ else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y)
>  LINUX_IMAGE_NAME = vmlinuz
>  endif
>  endif
> +ifeq ($(LINUX_TARGET_NAME),)
> +LINUX_TARGET_NAME = $(LINUX_IMAGE_NAME)
> +endif

I'm confused. Above, you state that if BR2_LINUX_KERNEL_IMAGE_NAME is
empty, it defaults to BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM.

But here, you are doing exactly the opposite, that is set
LINUX_TARGET_NAME (derived from BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM)
with the value of LINUX_IMAGE_NAME, which is derived from the new option
you added above, BR2_LINUX_KERNEL_IMAGE_NAME.

Should that not be:

    ifeq ($(LINUX_IMAGE_NAME),)
    LINUX_IMAGE_NAME = $(LINUX_TARGET_NAME)
    endif

But I may have missed something... ;-)

Regards,
Yann E. MORIN.

>  LINUX_KERNEL_UIMAGE_LOADADDR=$(call qstrip,$(BR2_LINUX_KERNEL_UIMAGE_LOADADDR))
>  ifneq ($(LINUX_KERNEL_UIMAGE_LOADADDR),)
> @@ -259,7 +263,7 @@ endif
>  define LINUX_BUILD_CMDS
>  	$(if $(BR2_LINUX_KERNEL_USE_CUSTOM_DTS),
>  		cp $(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH) $(KERNEL_ARCH_PATH)/boot/dts/)
> -	$(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_IMAGE_NAME)
> +	$(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME)
>  	@if grep -q "CONFIG_MODULES=y" $(@D)/.config; then 	\
>  		$(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) modules ;	\
>  	fi
> @@ -332,7 +336,7 @@ endif
>  $(LINUX_DIR)/.stamp_initramfs_rebuilt: $(LINUX_DIR)/.stamp_target_installed $(LINUX_DIR)/.stamp_images_installed $(BINARIES_DIR)/rootfs.cpio
>  	@$(call MESSAGE,"Rebuilding kernel with initramfs")
>  	# Build the kernel.
> -	$(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_IMAGE_NAME)
> +	$(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME)
>  	$(LINUX_APPEND_DTB)
>  	# Copy the kernel image to its final destination
>  	cp $(LINUX_IMAGE_PATH) $(BINARIES_DIR)
> -- 
> 1.7.10.4
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Thomas Petazzoni July 11, 2014, 7:58 a.m. UTC | #2
Dear Waldemar Brodkorb,

On Thu, 10 Jul 2014 22:00:54 +0200, Waldemar Brodkorb wrote:
> For example the upcoming qemu-xtensa patch is using this feature,
> where the target is called "zImage", but the resulting kernel name
> is "Image.elf".

Could you improve a bit the title of your commits? The title should
always be:

 <area>: <short description>

Where <area> is generally the name of the package being affected. In
this case, it should be:

 linux: add option to explicitly specify the kernel image name

For your qemu-system-xtensa defconfig, it should be something like:

 configs: add new configuration for qemu-system-xtensa

Thanks,

Thomas
Waldemar Brodkorb July 11, 2014, 8:24 a.m. UTC | #3
Hi Yann,
Yann E. MORIN wrote,

> Waldemar, All,
> 
> On 2014-07-10 22:00 +0200, Waldemar Brodkorb spake thusly:
> > For example the upcoming qemu-xtensa patch is using this feature,
> > where the target is called "zImage", but the resulting kernel name
> > is "Image.elf".
> > 
> > ---
> > Changes v2 -> v3:
> >   - no change
> > Changes v1 -> v2:
> >   - add comment about default value (suggested by Arnout)
> >   - reorder default value for LINUX_TARGET_NAME (suggested by Arnout)
> > 
> > Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
> > ---
> >  linux/Config.in |    7 +++++++
> >  linux/linux.mk  |   10 +++++++---
> >  2 files changed, 14 insertions(+), 3 deletions(-)
> > 
> > diff --git a/linux/Config.in b/linux/Config.in
> > index 0a13b13..1c316ae 100644
> > --- a/linux/Config.in
> > +++ b/linux/Config.in
> > @@ -244,6 +244,13 @@ config BR2_LINUX_KERNEL_IMAGE_TARGET_NAME
> >  	  Specify the kernel make target to build the kernel that you
> >  	  need.
> >  
> > +config BR2_LINUX_KERNEL_IMAGE_NAME
> > +	string "Kernel image name"
> > +	depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM
> > +	help
> > +	  Specify the kernel filename. Defaults to BR2_LINUX_KERNEL_TARGET_NAME
> > +	  if not set.
> 
> I would rephrase this to:
> 
>     The filename of the kernel image, if it is different from the
>     make target (above). Only Xtensa uses a filename different from
>     the make target.
> 
>     If unsure, leave it empty.
> 
> >  config BR2_LINUX_KERNEL_UIMAGE_LOADADDR
> >  	string "load address (for 3.7+ multi-platform image)"
> >  	depends on BR2_arm || BR2_armeb
> > diff --git a/linux/linux.mk b/linux/linux.mk
> > index bd3f2ac..1ba3953 100644
> > --- a/linux/linux.mk
> > +++ b/linux/linux.mk
> > @@ -80,7 +80,8 @@ endif
> >  KERNEL_DTBS = $(addsuffix .dtb,$(KERNEL_DTS_NAME))
> >  
> >  ifeq ($(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM),y)
> > -LINUX_IMAGE_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME))
> > +LINUX_IMAGE_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_NAME))
> > +LINUX_TARGET_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME))
> >  else
> >  ifeq ($(BR2_LINUX_KERNEL_UIMAGE),y)
> >  LINUX_IMAGE_NAME = uImage
> > @@ -106,6 +107,9 @@ else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y)
> >  LINUX_IMAGE_NAME = vmlinuz
> >  endif
> >  endif
> > +ifeq ($(LINUX_TARGET_NAME),)
> > +LINUX_TARGET_NAME = $(LINUX_IMAGE_NAME)
> > +endif
> 
> I'm confused. Above, you state that if BR2_LINUX_KERNEL_IMAGE_NAME is
> empty, it defaults to BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM.
> 
> But here, you are doing exactly the opposite, that is set
> LINUX_TARGET_NAME (derived from BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM)
> with the value of LINUX_IMAGE_NAME, which is derived from the new option
> you added above, BR2_LINUX_KERNEL_IMAGE_NAME.
> 
> Should that not be:
> 
>     ifeq ($(LINUX_IMAGE_NAME),)
>     LINUX_IMAGE_NAME = $(LINUX_TARGET_NAME)
>     endif
> 
> But I may have missed something... ;-)

I'm confused too now ;)
Indeed I have put in Arnout suggestion for my first patch version
without modifying the help text and only done runtime testing
without actually thinking if this is the correct thing.

So the new variable BR2_LINUX_KERNEL_IMAGE_NAME should be default
LINUX_TARGET_NAME, if not set.

best regards
 Waldemar
diff mbox

Patch

diff --git a/linux/Config.in b/linux/Config.in
index 0a13b13..1c316ae 100644
--- a/linux/Config.in
+++ b/linux/Config.in
@@ -244,6 +244,13 @@  config BR2_LINUX_KERNEL_IMAGE_TARGET_NAME
 	  Specify the kernel make target to build the kernel that you
 	  need.
 
+config BR2_LINUX_KERNEL_IMAGE_NAME
+	string "Kernel image name"
+	depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM
+	help
+	  Specify the kernel filename. Defaults to BR2_LINUX_KERNEL_TARGET_NAME
+	  if not set.
+
 config BR2_LINUX_KERNEL_UIMAGE_LOADADDR
 	string "load address (for 3.7+ multi-platform image)"
 	depends on BR2_arm || BR2_armeb
diff --git a/linux/linux.mk b/linux/linux.mk
index bd3f2ac..1ba3953 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -80,7 +80,8 @@  endif
 KERNEL_DTBS = $(addsuffix .dtb,$(KERNEL_DTS_NAME))
 
 ifeq ($(BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM),y)
-LINUX_IMAGE_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME))
+LINUX_IMAGE_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_NAME))
+LINUX_TARGET_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_IMAGE_TARGET_NAME))
 else
 ifeq ($(BR2_LINUX_KERNEL_UIMAGE),y)
 LINUX_IMAGE_NAME = uImage
@@ -106,6 +107,9 @@  else ifeq ($(BR2_LINUX_KERNEL_VMLINUZ),y)
 LINUX_IMAGE_NAME = vmlinuz
 endif
 endif
+ifeq ($(LINUX_TARGET_NAME),)
+LINUX_TARGET_NAME = $(LINUX_IMAGE_NAME)
+endif
 
 LINUX_KERNEL_UIMAGE_LOADADDR=$(call qstrip,$(BR2_LINUX_KERNEL_UIMAGE_LOADADDR))
 ifneq ($(LINUX_KERNEL_UIMAGE_LOADADDR),)
@@ -259,7 +263,7 @@  endif
 define LINUX_BUILD_CMDS
 	$(if $(BR2_LINUX_KERNEL_USE_CUSTOM_DTS),
 		cp $(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH) $(KERNEL_ARCH_PATH)/boot/dts/)
-	$(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_IMAGE_NAME)
+	$(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME)
 	@if grep -q "CONFIG_MODULES=y" $(@D)/.config; then 	\
 		$(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) modules ;	\
 	fi
@@ -332,7 +336,7 @@  endif
 $(LINUX_DIR)/.stamp_initramfs_rebuilt: $(LINUX_DIR)/.stamp_target_installed $(LINUX_DIR)/.stamp_images_installed $(BINARIES_DIR)/rootfs.cpio
 	@$(call MESSAGE,"Rebuilding kernel with initramfs")
 	# Build the kernel.
-	$(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_IMAGE_NAME)
+	$(TARGET_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME)
 	$(LINUX_APPEND_DTB)
 	# Copy the kernel image to its final destination
 	cp $(LINUX_IMAGE_PATH) $(BINARIES_DIR)