mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH v2 0/3] Add displaying a version number in imx-usb-loader
@ 2023-05-05 15:52 Johannes Zink
  2023-05-05 15:52 ` [PATCH v2 1/3] imx-usb-loader: exit with success when displaying help on purpose Johannes Zink
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Johannes Zink @ 2023-05-05 15:52 UTC (permalink / raw)
  To: barebox; +Cc: patchwork-jzi

This series adds displaying a version number in imx-usb-loader for
easier debugging.

The first two patches add minor cleanup, while the third actually adds
the code for displaying the version number.

The result will look like
$./imx-usb-loader --version
./imx-usb-loader 2023.04.0-00210-g057705fb211a-dirty

Happy hacking
Johannes

Changelog:
  v1 -> v2: worked in Ahmad's review findings. Thanks for reviewing my
            patches!
            - do not rely on autogenerated headers to keep tool buildable
	      outside of KBuild environment
	    - remove double exit when displaying version number
	    - fixed errornous commit subject
	    - added comment in commit message why removing the exit()
	      call in a function is ok, even when not explicitely adding
	      it to all call sites


Johannes Zink (3):
  imx-usb-loader: exit with success when displaying help on purpose
  imx-usb-loader: use proper return code macros
  imx-usb-loader: add commandline option for displaying version number

 scripts/imx/Makefile         |  2 +-
 scripts/imx/imx-usb-loader.c | 30 +++++++++++++++++++++++++-----
 2 files changed, 26 insertions(+), 6 deletions(-)

-- 
2.39.2




^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 1/3] imx-usb-loader: exit with success when displaying help on purpose
  2023-05-05 15:52 [PATCH v2 0/3] Add displaying a version number in imx-usb-loader Johannes Zink
@ 2023-05-05 15:52 ` Johannes Zink
  2023-05-05 15:52 ` [PATCH v2 2/3] imx-usb-loader: use proper return code macros Johannes Zink
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Johannes Zink @ 2023-05-05 15:52 UTC (permalink / raw)
  To: barebox; +Cc: patchwork-jzi, Johannes Zink

Previously, whenever the usage was displayed, the imx-usb-loader exited
with error code.

When the usage is displayed due to invalid tool invocation, returning an
error code is valid behaviour, but when displaying the usage with the -h
command line option, success should be returned.

The other usage() callsite in the code already has an exit(1) following
it, which is why the exit call can be removed from the usage function
without introducing any behavioural change there.

Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
---
Changelog:

 v1 -> v2: - fixed erronous commit subject
           - added comment in commit message why removing the exit()
	     call is from the usage() function is valid, even when not
	     explicitely adding an exit() call at all call sites

 scripts/imx/imx-usb-loader.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/imx/imx-usb-loader.c b/scripts/imx/imx-usb-loader.c
index 41d57906c752..17b83b611765 100644
--- a/scripts/imx/imx-usb-loader.c
+++ b/scripts/imx/imx-usb-loader.c
@@ -1527,7 +1527,6 @@ static void usage(const char *prgname)
 		"-s           skip DCD included in image\n"
 		"-v           verbose (give multiple times to increase)\n"
 		"-h           this help\n", prgname);
-	exit(1);
 }
 
 int main(int argc, char *argv[])
@@ -1558,6 +1557,7 @@ int main(int argc, char *argv[])
 			break;
 		case 'h':
 			usage(argv[0]);
+			exit(0);
 		case 'd':
 			devtype = optarg;
 			break;
-- 
2.39.2




^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 2/3] imx-usb-loader: use proper return code macros
  2023-05-05 15:52 [PATCH v2 0/3] Add displaying a version number in imx-usb-loader Johannes Zink
  2023-05-05 15:52 ` [PATCH v2 1/3] imx-usb-loader: exit with success when displaying help on purpose Johannes Zink
@ 2023-05-05 15:52 ` Johannes Zink
  2023-05-05 15:52 ` [PATCH v2 3/3] imx-usb-loader: add commandline option for displaying version number Johannes Zink
  2023-05-09  7:22 ` [PATCH v2 0/3] Add displaying a version number in imx-usb-loader Sascha Hauer
  3 siblings, 0 replies; 5+ messages in thread
From: Johannes Zink @ 2023-05-05 15:52 UTC (permalink / raw)
  To: barebox; +Cc: patchwork-jzi, Johannes Zink

It is considered good practice to use EXIT_SUCCESS and EXIT_FAILURE
instead of hardcoding magic values.

No functional changes.

Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
---
 scripts/imx/imx-usb-loader.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/scripts/imx/imx-usb-loader.c b/scripts/imx/imx-usb-loader.c
index 17b83b611765..e49c0bea6ca4 100644
--- a/scripts/imx/imx-usb-loader.c
+++ b/scripts/imx/imx-usb-loader.c
@@ -1557,7 +1557,7 @@ int main(int argc, char *argv[])
 			break;
 		case 'h':
 			usage(argv[0]);
-			exit(0);
+			exit(EXIT_SUCCESS);
 		case 'd':
 			devtype = optarg;
 			break;
@@ -1571,13 +1571,13 @@ int main(int argc, char *argv[])
 			w.do_dcd_once = 0;
 			break;
 		default:
-			exit(1);
+			exit(EXIT_FAILURE);
 		}
 	}
 
 	if (devtype && strcmp(devtype, "list") == 0) {
 		list_imx_device_types();
-		exit(0);
+		exit(EXIT_SUCCESS);
 	}
 
 	if (devtype && !devpath) {
@@ -1587,7 +1587,7 @@ int main(int argc, char *argv[])
 	if (optind == argc) {
 		fprintf(stderr, "no filename given\n");
 		usage(argv[0]);
-		exit(1);
+		exit(EXIT_FAILURE);
 	}
 
 	w.plug = 1;
-- 
2.39.2




^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v2 3/3] imx-usb-loader: add commandline option for displaying version number
  2023-05-05 15:52 [PATCH v2 0/3] Add displaying a version number in imx-usb-loader Johannes Zink
  2023-05-05 15:52 ` [PATCH v2 1/3] imx-usb-loader: exit with success when displaying help on purpose Johannes Zink
  2023-05-05 15:52 ` [PATCH v2 2/3] imx-usb-loader: use proper return code macros Johannes Zink
@ 2023-05-05 15:52 ` Johannes Zink
  2023-05-09  7:22 ` [PATCH v2 0/3] Add displaying a version number in imx-usb-loader Sascha Hauer
  3 siblings, 0 replies; 5+ messages in thread
From: Johannes Zink @ 2023-05-05 15:52 UTC (permalink / raw)
  To: barebox; +Cc: patchwork-jzi, Johannes Zink

For debugging purposes of the imx-usb-loader it can be helpful to
display the version number as a commandline option.

If built from outside the KBuild infrastructure, the version string
cannot be fetched from the generated utsrelease.h header the version
number needs to be defined by setting the UTS_VERSION macro. If the
macro is not set on an out-of-KBuild build, the version number "unknown"
is displayed.

Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
---
Changelog:

v1 -> v2: - fixed tool relying on KBuild-infrastructure-generated header
            file to allow build outside of a KBuild environment
	  - remove unneeded double exit() call when displaying the
	    version number

 scripts/imx/Makefile         |  2 +-
 scripts/imx/imx-usb-loader.c | 22 +++++++++++++++++++++-
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/scripts/imx/Makefile b/scripts/imx/Makefile
index dbfa82910a55..b3be3886d8eb 100644
--- a/scripts/imx/Makefile
+++ b/scripts/imx/Makefile
@@ -3,7 +3,7 @@
 hostprogs-always-$(CONFIG_ARCH_IMX_IMXIMAGE)	+= imx-image
 hostprogs-always-$(CONFIG_ARCH_IMX_USBLOADER)	+= imx-usb-loader
 
-HOSTCFLAGS_imx-usb-loader.o = `pkg-config --cflags libusb-1.0`
+HOSTCFLAGS_imx-usb-loader.o = `pkg-config --cflags libusb-1.0` -include $(objtree)/include/generated/utsrelease.h
 HOSTLDLIBS_imx-usb-loader  = `pkg-config --libs libusb-1.0`
 
 imx-usb-loader-target-userccflags += `$(CROSS_PKG_CONFIG) --cflags libusb-1.0`
diff --git a/scripts/imx/imx-usb-loader.c b/scripts/imx/imx-usb-loader.c
index e49c0bea6ca4..5f9c7ff3a458 100644
--- a/scripts/imx/imx-usb-loader.c
+++ b/scripts/imx/imx-usb-loader.c
@@ -46,6 +46,10 @@
 #define FT_DCD	0xee
 #define FT_LOAD_ONLY	0x00
 
+#ifndef UTS_RELEASE
+#define UTS_RELEASE "unknown"
+#endif
+
 /*
  * comment from libusb:
  * As per the USB 3.0 specs, the current maximum limit for the depth is 7.
@@ -1526,9 +1530,15 @@ static void usage(const char *prgname)
 		"-p <devpath> Specify device path: <bus>-<port>[.<port>]...\n"
 		"-s           skip DCD included in image\n"
 		"-v           verbose (give multiple times to increase)\n"
+		"--version    display version number\n"
 		"-h           this help\n", prgname);
 }
 
+static void version(const char *prgname)
+{
+	fprintf(stderr, "%s %s\n", prgname, UTS_RELEASE);
+}
+
 int main(int argc, char *argv[])
 {
 	libusb_device **devs;
@@ -1544,10 +1554,20 @@ int main(int argc, char *argv[])
 	char *initfile = NULL;
 	char *devpath = NULL;
 	char *devtype = NULL;
+	int opt_version = 0;
+	struct option long_options[] = {
+		{"version", no_argument, &opt_version, 1},
+		{ }
+	};
 
 	w.do_dcd_once = 1;
 
-	while ((opt = getopt(argc, argv, "cvhd:i:p:s")) != -1) {
+	while ((opt = getopt_long(argc, argv, "cvhd:i:p:s", long_options, NULL)) != -1) {
+		if (opt_version) {
+			version(argv[0]);
+			exit(EXIT_SUCCESS);
+		}
+
 		switch (opt) {
 		case 'c':
 			verify = 1;
-- 
2.39.2




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 0/3] Add displaying a version number in imx-usb-loader
  2023-05-05 15:52 [PATCH v2 0/3] Add displaying a version number in imx-usb-loader Johannes Zink
                   ` (2 preceding siblings ...)
  2023-05-05 15:52 ` [PATCH v2 3/3] imx-usb-loader: add commandline option for displaying version number Johannes Zink
@ 2023-05-09  7:22 ` Sascha Hauer
  3 siblings, 0 replies; 5+ messages in thread
From: Sascha Hauer @ 2023-05-09  7:22 UTC (permalink / raw)
  To: Johannes Zink; +Cc: barebox, patchwork-jzi

On Fri, May 05, 2023 at 05:52:45PM +0200, Johannes Zink wrote:
> This series adds displaying a version number in imx-usb-loader for
> easier debugging.
> 
> The first two patches add minor cleanup, while the third actually adds
> the code for displaying the version number.
> 
> The result will look like
> $./imx-usb-loader --version
> ./imx-usb-loader 2023.04.0-00210-g057705fb211a-dirty
> 
> Happy hacking
> Johannes
> 
> Changelog:
>   v1 -> v2: worked in Ahmad's review findings. Thanks for reviewing my
>             patches!
>             - do not rely on autogenerated headers to keep tool buildable
> 	      outside of KBuild environment
> 	    - remove double exit when displaying version number
> 	    - fixed errornous commit subject
> 	    - added comment in commit message why removing the exit()
> 	      call in a function is ok, even when not explicitely adding
> 	      it to all call sites
> 
> 
> Johannes Zink (3):
>   imx-usb-loader: exit with success when displaying help on purpose
>   imx-usb-loader: use proper return code macros
>   imx-usb-loader: add commandline option for displaying version number

Applied, thanks

Sascha

> 
>  scripts/imx/Makefile         |  2 +-
>  scripts/imx/imx-usb-loader.c | 30 +++++++++++++++++++++++++-----
>  2 files changed, 26 insertions(+), 6 deletions(-)
> 
> -- 
> 2.39.2
> 
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-05-09  7:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-05 15:52 [PATCH v2 0/3] Add displaying a version number in imx-usb-loader Johannes Zink
2023-05-05 15:52 ` [PATCH v2 1/3] imx-usb-loader: exit with success when displaying help on purpose Johannes Zink
2023-05-05 15:52 ` [PATCH v2 2/3] imx-usb-loader: use proper return code macros Johannes Zink
2023-05-05 15:52 ` [PATCH v2 3/3] imx-usb-loader: add commandline option for displaying version number Johannes Zink
2023-05-09  7:22 ` [PATCH v2 0/3] Add displaying a version number in imx-usb-loader Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox