Patchwork powerpc: Copy bootable images in the default install script

login
register
mail settings
Submitter Grant Likely
Date Dec. 20, 2008, 12:57 a.m.
Message ID <20081220005720.23861.18505.stgit@localhost.localdomain>
Download mbox | patch
Permalink /patch/15011/
State Accepted, archived
Commit 29f1aff2cc20d8b81fe3c890b8f134e84b8f41fe
Headers show

Comments

Grant Likely - Dec. 20, 2008, 12:57 a.m.
From: Grant Likely <grant.likely@secretlab.ca>

This patch makes the default install script (arch/powerpc/boot/install.sh)
copy the bootable image files into the install directory.  Before this
patch only the vmlinux image file was copied.

This patch makes the default 'make install' command useful for embedded
development when $(INSTALL_PATH) is set in the environment.

As a side effect, this patch changes the calling convention of the
install.sh script.  Instead of a single 5th parameter, the script is now
passed a list of all the target images stored in the $(image-y) Makefile
variable.  This should be backwards compatible with existing install scripts
since it just adds additional arguments and does not change existing ones.

CC: Kumar Gala <galak@kernel.crashing.org>
CC: Josh Boyer <jwboyer@linux.vnet.ibm.com>
CC: Paul Mackerras <paulus@samba.org>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: LinuxPPC Mailing List <linuxppc-dev@ozlabs.org>

Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
---

 arch/powerpc/boot/Makefile   |    2 +-
 arch/powerpc/boot/install.sh |   14 +++++++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)
Grant Likely - Jan. 3, 2009, 1:50 p.m.
Ben, Kumar & Josh; any comments on this?

Thanks,
g.

On Fri, Dec 19, 2008 at 5:57 PM, Grant Likely <grant.likely@secretlab.ca> wrote:
> From: Grant Likely <grant.likely@secretlab.ca>
>
> This patch makes the default install script (arch/powerpc/boot/install.sh)
> copy the bootable image files into the install directory.  Before this
> patch only the vmlinux image file was copied.
>
> This patch makes the default 'make install' command useful for embedded
> development when $(INSTALL_PATH) is set in the environment.
>
> As a side effect, this patch changes the calling convention of the
> install.sh script.  Instead of a single 5th parameter, the script is now
> passed a list of all the target images stored in the $(image-y) Makefile
> variable.  This should be backwards compatible with existing install scripts
> since it just adds additional arguments and does not change existing ones.
>
> CC: Kumar Gala <galak@kernel.crashing.org>
> CC: Josh Boyer <jwboyer@linux.vnet.ibm.com>
> CC: Paul Mackerras <paulus@samba.org>
> CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> CC: LinuxPPC Mailing List <linuxppc-dev@ozlabs.org>
>
> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
> ---
>
>  arch/powerpc/boot/Makefile   |    2 +-
>  arch/powerpc/boot/install.sh |   14 +++++++++++++-
>  2 files changed, 14 insertions(+), 2 deletions(-)
>
>
> diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
> index 3d3daa6..b6187ca 100644
> --- a/arch/powerpc/boot/Makefile
> +++ b/arch/powerpc/boot/Makefile
> @@ -355,7 +355,7 @@ $(obj)/zImage.initrd:       $(addprefix $(obj)/, $(initrd-y))
>        @rm -f $@; ln $< $@
>
>  install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
> -       sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $<
> +       sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $^
>
>  # anything not in $(targets)
>  clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \
> diff --git a/arch/powerpc/boot/install.sh b/arch/powerpc/boot/install.sh
> index b002bfd..51b2387 100644
> --- a/arch/powerpc/boot/install.sh
> +++ b/arch/powerpc/boot/install.sh
> @@ -15,7 +15,7 @@
>  #   $2 - kernel image file
>  #   $3 - kernel map file
>  #   $4 - default install path (blank if root directory)
> -#   $5 - kernel boot file, the zImage
> +#   $5 and more - kernel boot files; zImage*, uImage, cuImage.*, etc.
>  #
>
>  # User may have a custom install script
> @@ -38,3 +38,15 @@ fi
>
>  cat $2 > $4/$image_name
>  cp $3 $4/System.map
> +
> +# Copy all the bootable image files
> +path=$4
> +shift 4
> +while [ $# -ne 0 ]; do
> +       image_name=`basename $1`
> +       if [ -f $path/$image_name ]; then
> +               mv $path/$image_name $path/$image_name.old
> +       fi
> +       cat $1 > $path/$image_name
> +       shift
> +done;
>
>
Josh Boyer - Jan. 5, 2009, 3 p.m.
On Fri, Dec 19, 2008 at 05:57:20PM -0700, Grant Likely wrote:
>From: Grant Likely <grant.likely@secretlab.ca>
>
>This patch makes the default install script (arch/powerpc/boot/install.sh)
>copy the bootable image files into the install directory.  Before this
>patch only the vmlinux image file was copied.

What do you do for cases where there isn't a single file?  E.g. a 
canyonlands board will need both the uImage and caynonlands.dtb files
to be "installed".  U-Boot needs to be provided with both of them.

josh
Grant Likely - Jan. 5, 2009, 3:28 p.m.
On Mon, Jan 5, 2009 at 8:00 AM, Josh Boyer <jwboyer@linux.vnet.ibm.com> wrote:
>
> On Fri, Dec 19, 2008 at 05:57:20PM -0700, Grant Likely wrote:
> >From: Grant Likely <grant.likely@secretlab.ca>
> >
> >This patch makes the default install script (arch/powerpc/boot/install.sh)
> >copy the bootable image files into the install directory.  Before this
> >patch only the vmlinux image file was copied.
>
> What do you do for cases where there isn't a single file?  E.g. a
> canyonlands board will need both the uImage and caynonlands.dtb files
> to be "installed".  U-Boot needs to be provided with both of them.

That is exactly what this patch does.  It copies all of the image
files in $(image-y).

g.

--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
Grant Likely - Jan. 5, 2009, 4:17 p.m.
On Tue, Jan 6, 2009 at 9:12 AM, Josh Boyer <jwboyer@linux.vnet.ibm.com> wrote:
> On Mon, Jan 05, 2009 at 08:28:56AM -0700, Grant Likely wrote:
>>On Mon, Jan 5, 2009 at 8:00 AM, Josh Boyer <jwboyer@linux.vnet.ibm.com> wrote:
>>>
>>> On Fri, Dec 19, 2008 at 05:57:20PM -0700, Grant Likely wrote:
>>> >From: Grant Likely <grant.likely@secretlab.ca>
>>> >
>>> >This patch makes the default install script (arch/powerpc/boot/install.sh)
>>> >copy the bootable image files into the install directory.  Before this
>>> >patch only the vmlinux image file was copied.
>>>
>>> What do you do for cases where there isn't a single file?  E.g. a
>>> canyonlands board will need both the uImage and caynonlands.dtb files
>>> to be "installed".  U-Boot needs to be provided with both of them.
>>
>>That is exactly what this patch does.  It copies all of the image
>>files in $(image-y).
>
> Well, it would if the .dtb files were includes in image-y, but they
> aren't.  Anyway, that doesn't seem to be a bug or short-coming of the
> patch itself, so this looks good to me.

But there is nothing preventing the .dtb files being added to image-y.
 If you add them, they will be built and copied.  :-)

g.
Josh Boyer - Jan. 6, 2009, 4:12 p.m.
On Mon, Jan 05, 2009 at 08:28:56AM -0700, Grant Likely wrote:
>On Mon, Jan 5, 2009 at 8:00 AM, Josh Boyer <jwboyer@linux.vnet.ibm.com> wrote:
>>
>> On Fri, Dec 19, 2008 at 05:57:20PM -0700, Grant Likely wrote:
>> >From: Grant Likely <grant.likely@secretlab.ca>
>> >
>> >This patch makes the default install script (arch/powerpc/boot/install.sh)
>> >copy the bootable image files into the install directory.  Before this
>> >patch only the vmlinux image file was copied.
>>
>> What do you do for cases where there isn't a single file?  E.g. a
>> canyonlands board will need both the uImage and caynonlands.dtb files
>> to be "installed".  U-Boot needs to be provided with both of them.
>
>That is exactly what this patch does.  It copies all of the image
>files in $(image-y).

Well, it would if the .dtb files were includes in image-y, but they
aren't.  Anyway, that doesn't seem to be a bug or short-coming of the
patch itself, so this looks good to me.

Acked-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>

josh

Patch

diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 3d3daa6..b6187ca 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -355,7 +355,7 @@  $(obj)/zImage.initrd:	$(addprefix $(obj)/, $(initrd-y))
 	@rm -f $@; ln $< $@
 
 install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y))
-	sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $<
+	sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $^
 
 # anything not in $(targets)
 clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \
diff --git a/arch/powerpc/boot/install.sh b/arch/powerpc/boot/install.sh
index b002bfd..51b2387 100644
--- a/arch/powerpc/boot/install.sh
+++ b/arch/powerpc/boot/install.sh
@@ -15,7 +15,7 @@ 
 #   $2 - kernel image file
 #   $3 - kernel map file
 #   $4 - default install path (blank if root directory)
-#   $5 - kernel boot file, the zImage
+#   $5 and more - kernel boot files; zImage*, uImage, cuImage.*, etc.
 #
 
 # User may have a custom install script
@@ -38,3 +38,15 @@  fi
 
 cat $2 > $4/$image_name
 cp $3 $4/System.map
+
+# Copy all the bootable image files
+path=$4
+shift 4
+while [ $# -ne 0 ]; do
+	image_name=`basename $1`
+	if [ -f $path/$image_name ]; then
+		mv $path/$image_name $path/$image_name.old
+	fi
+	cat $1 > $path/$image_name
+	shift
+done;