[U-Boot] [PATCH] mkimage: add option for adding dtc binary path via argument

Add option for configuring path to dtc binary in mkimage command. The dtc binary might not always be located in $PATH.
Signed-off-by: Luka Perkov luka@openwrt.org --- doc/mkimage.1 | 4 ++++ tools/fit_image.c | 3 ++- tools/mkimage.c | 14 +++++++++++--- tools/mkimage.h | 5 +++-- 4 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/doc/mkimage.1 b/doc/mkimage.1 index 39652c8..8cf5686 100644 --- a/doc/mkimage.1 +++ b/doc/mkimage.1 @@ -82,6 +82,10 @@ Set XIP (execute in place) flag. .B Create FIT image:
.TP +.BI "-B [" "dtc bin" "]" +Set path to the device tree compiler binary. + +.TP .BI "-D [" "dtc options" "]" Provide special options to the device tree compiler that is used to create the image. diff --git a/tools/fit_image.c b/tools/fit_image.c index 76bbba1..cd4db58 100644 --- a/tools/fit_image.c +++ b/tools/fit_image.c @@ -82,7 +82,8 @@ static int fit_handle_file (struct mkimage_params *params)
/* dtc -I dts -O dtb -p 500 datafile > tmpfile */ sprintf (cmd, "%s %s %s > %s", - MKIMAGE_DTC, params->dtc, params->datafile, tmpfile); + params->dtc_bin, params->dtc_options, params->datafile, + tmpfile); debug ("Trying to execute "%s"\n", cmd); if (system (cmd) == -1) { fprintf (stderr, "%s: system(%s) failed: %s\n", diff --git a/tools/mkimage.c b/tools/mkimage.c index e43b09f..ac4ced7 100644 --- a/tools/mkimage.c +++ b/tools/mkimage.c @@ -37,7 +37,8 @@ struct mkimage_params params = { .arch = IH_ARCH_PPC, .type = IH_TYPE_KERNEL, .comp = IH_COMP_GZIP, - .dtc = MKIMAGE_DEFAULT_DTC_OPTIONS, + .dtc_bin = MKIMAGE_DTC, + .dtc_options = MKIMAGE_DEFAULT_DTC_OPTIONS, .imagename = "", .imagename2 = "", }; @@ -189,10 +190,15 @@ main (int argc, char **argv) genimg_get_comp_id (*++argv)) < 0) usage (); goto NXTARG; + case 'B': + if (--argc <= 0) + usage (); + params.dtc_bin = *++argv; + goto NXTARG; case 'D': if (--argc <= 0) usage (); - params.dtc = *++argv; + params.dtc_options = *++argv; goto NXTARG;
case 'O': @@ -623,7 +629,9 @@ usage () " -d ==> use image data from 'datafile'\n" " -x ==> set XIP (execute in place)\n", params.cmdname); - fprintf (stderr, " %s [-D dtc_options] -f fit-image.its fit-image\n", + fprintf (stderr, " %s [-B dtc_bin] [-D dtc_options] -f fit-image.its fit-image\n", + " -B ==> set path to the dtc binary\n", + " -D ==> set options that will be passed to dtc\n", params.cmdname); fprintf (stderr, " %s -V ==> print version information and exit\n", params.cmdname); diff --git a/tools/mkimage.h b/tools/mkimage.h index ea45f5c..1c3b1e1 100644 --- a/tools/mkimage.h +++ b/tools/mkimage.h @@ -46,7 +46,7 @@ #define MKIMAGE_MAX_TMPFILE_LEN 256 #define MKIMAGE_DEFAULT_DTC_OPTIONS "-I dts -O dtb -p 500" #define MKIMAGE_MAX_DTC_CMDLINE_LEN 512 -#define MKIMAGE_DTC "dtc" /* assume dtc is in $PATH */ +#define MKIMAGE_DTC "dtc"
/* * This structure defines all such variables those are initialized by @@ -65,7 +65,8 @@ struct mkimage_params { int arch; int type; int comp; - char *dtc; + char *dtc_bin; + char *dtc_options; unsigned int addr; unsigned int ep; char *imagename;

Dear Luka Perkov,
In message 20130505190930-21234@mutt-kz you wrote:
Add option for configuring path to dtc binary in mkimage command. The dtc binary might not always be located in $PATH.
Could you please explain why that would be needed? What prevents you adding the respective directory to your PATH?
Even if you do not want to do this ingeneral for some reason, running
PATH=your_dir:$PATH mkimage ...
appears to be still much less trouble (no need to change the code) than your approach.
Best regards,
Wolfgang Denk

Hi Wolfgang,
On Mon, May 06, 2013 at 06:32:11AM +0200, Wolfgang Denk wrote:
In message 20130505190930-21234@mutt-kz you wrote:
Add option for configuring path to dtc binary in mkimage command. The dtc binary might not always be located in $PATH.
Could you please explain why that would be needed? What prevents you adding the respective directory to your PATH?
I could do that too. I think it's much more elegant to tell mkimage where dwc is located instead of tampering with the $PATH. Also, since we are adding dtc options via arguments it seamed like a valid approach.
Luka

Dear Luka Perkov,
In message 20130506080157-11499@mutt-kz you wrote:
Add option for configuring path to dtc binary in mkimage command. The dtc binary might not always be located in $PATH.
Could you please explain why that would be needed? What prevents you adding the respective directory to your PATH?
I could do that too. I think it's much more elegant to tell mkimage where dwc is located instead of tampering with the $PATH. Also, since we are adding dtc options via arguments it seamed like a valid approach.
Well, no. The standard approach to tell the system about where to find tools is to set PATH.
Using options does not scale.
It appears there is no really good reason for this patch, so I think we should drop it.
Best regards,
Wolfgang Denk

On May 6, 2013, at 8:59 AM, Luka Perkov luka@openwrt.org wrote:
On Mon, May 06, 2013 at 02:32:51PM +0200, Wolfgang Denk wrote:
It appears there is no really good reason for this patch, so I think we should drop it.
Ok. Thanks for the review.
Would there be any objection to adding an option to pass source paths to dtc from mkimage? Currently, in order to do that, I have to find the source for mkimage, grab the default dtc options out of mkimage.h and then pass that set on the command line. It would be nice and only slightly more future proof if I could just pass the source file search paths separately.
local t=${VSD_PATH}/app/flasher/uboot_flasher local t2=${t}/tools PATH=${t2}:$PATH ${t2}/mkimage -D "-I dts -O dtb -p 500 -i ${release_dir}" \ -f ${t}/update_field_mode.its spot_update.bin
I'd like to pass one or more paths like "${release_dir}" without having to pass (or even know about) "-I dts -O dtb -p 500".

Hi,
On Wed, Aug 14, 2013 at 10:58 AM, Harvey Chapman hchapman@3gfp.com wrote:
On May 6, 2013, at 8:59 AM, Luka Perkov luka@openwrt.org wrote:
On Mon, May 06, 2013 at 02:32:51PM +0200, Wolfgang Denk wrote:
It appears there is no really good reason for this patch, so I think we should drop it.
Ok. Thanks for the review.
Would there be any objection to adding an option to pass source paths to dtc from mkimage? Currently, in order to do that, I have to find the source for mkimage, grab the default dtc options out of mkimage.h and then pass that set on the command line. It would be nice and only slightly more future proof if I could just pass the source file search paths separately.
So you mean the -i option? I think that would be valuable, yes. Without it you need to put all your files in one directory, or maintain the same directory structure in your release directory. It gets really ugly. The -i option was added to deal with this and I think it makes sense to make it available in mkimage.
local t=${VSD_PATH}/app/flasher/uboot_flasher local t2=${t}/tools PATH=${t2}:$PATH ${t2}/mkimage -D "-I dts -O dtb -p 500 -i ${release_dir}" \ -f ${t}/update_field_mode.its spot_update.bin
I'd like to pass one or more paths like "${release_dir}" without having to pass (or even know about) "-I dts -O dtb -p 500".
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Regards, Simon
participants (4)
-
Harvey Chapman
-
Luka Perkov
-
Simon Glass
-
Wolfgang Denk