build: kernel2minor: work around path length limit
authorFrançois Chavant <francois@chavant.info>
Fri, 7 May 2021 15:58:11 +0000 (17:58 +0200)
committerBaptiste Jonglez <git@bitsofnetworks.org>
Sun, 30 May 2021 20:32:50 +0000 (22:32 +0200)
When building for MikroTik devices the kernel2minor tool will sometimes
fail with:

  Can't get lstat from kernel file!: No such file or directory.

This is because kernel2minor expects paths no longer than 250 chars.
To work around this the include/image-commands.mk has been modified
to copy the kernel to a temporary file (/tmp/tmp.XXXXXXXXXX) before
calling kernel2minor.

Signed-off-by: François Chavant <francois@chavant.info>
(cherry picked from commit 5a9608102b3c444d0c963255f9d016a1d5469d5d)

include/image-commands.mk

index 51e745958e627a739fdb809ffbdee9216157527f..4d54a14ba4d4542c4c886c24d6ecd16c0a10a9b7 100644 (file)
@@ -240,8 +240,11 @@ define Build/jffs2
 endef
 
 define Build/kernel2minor
-       kernel2minor -k $@ -r $@.new $(1)
-       mv $@.new $@
+       $(eval temp_file := $(shell mktemp))
+       cp $@ $(temp_file)
+       kernel2minor -k $(temp_file) -r $(temp_file).new $(1)
+       mv $(temp_file).new $@
+       rm -f $(temp_file)
 endef
 
 define Build/kernel-bin