Hello Johannes, On 26.05.23 07:46, Johannes Zink wrote: > Hi Ahmad, > > On 5/25/23 20:13, Ahmad Fatoum wrote: >> include/generated/utsrelease.h is only generated in the prepare make >> target, which is not a dependency of the scripts make target. Builds of >> the scripts target, e.g. sandbox $(make hosttools_defconfig; make scripts), >> may thus fail because the file had not yet been generated: >> >> <command-line>: fatal error: /build/source/include/generated/utsrelease.h: >> No such file or directory >> compilation terminated. >> >> That scripts doesn't depend on prepare may be due to scripts/kconfig. >> The kernel may side step this issue by having tools not needed for >> prepare in a separate tools/. >> > > do you have a suggestion how this issue could be solved? > I think that it is - nevertheless - useful to have a version number in the tooling. Agreed. I am looking forward to a v2 that doesn't break the build. ;) > Do you know of a flag that is set when the files have been generated? > Maybe we can include the file conditionally if and only if it has been generated. That would mean we accept that the race condition is there and that depending on timing/parallelism, we either end up with a version or unknown... > Do you think that alternatively we can require the prepare make target as a dependency for scripts/imx? AFAICS, scripts/Makefile is called recursively, so it may not be feasible to depend on top-level Makefile's prepare for a target defined within. If everything needed for Kconfig is part of another target (e.g. config or scripts_basic), then maybe scripts could be made to depend on prepare. A worthwhile alternative may be moving stuff not needed for the build, like all USB loaders, into a tools/ directory, but then one needs to take care of dependencies on files in scripts/. Cheers, Ahmad > > Johannes > >> Until this is resolved, revert commit c1b50061f4b33482ae749f9d6d6c92aa5bf6b37a. >> >> Cc: Johannes Zink <j.zink@xxxxxxxxxxxxxx> >> Signed-off-by: Ahmad Fatoum <ahmad@xxxxxx> >> --- >> scripts/imx/Makefile | 2 +- >> scripts/imx/imx-usb-loader.c | 22 +--------------------- >> 2 files changed, 2 insertions(+), 22 deletions(-) >> >> diff --git a/scripts/imx/Makefile b/scripts/imx/Makefile >> index b3be3886d8eb..dbfa82910a55 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` -include $(objtree)/include/generated/utsrelease.h >> +HOSTCFLAGS_imx-usb-loader.o = `pkg-config --cflags libusb-1.0` >> 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 676f077c2557..839288f753cc 100644 >> --- a/scripts/imx/imx-usb-loader.c >> +++ b/scripts/imx/imx-usb-loader.c >> @@ -46,10 +46,6 @@ >> #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. >> @@ -1530,15 +1526,9 @@ 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; >> @@ -1554,20 +1544,10 @@ 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_long(argc, argv, "cvhd:i:p:s", long_options, NULL)) != -1) { >> - if (opt_version) { >> - version(argv[0]); >> - exit(EXIT_SUCCESS); >> - } >> - >> + while ((opt = getopt(argc, argv, "cvhd:i:p:s")) != -1) { >> switch (opt) { >> case 'c': >> verify = 1; > -- 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 |