arm64: make rpm failed due to incorrect path to Image.gz
PATCH v2 1/1 arm64: make rpm failed due to incorrect path to Image.gz
The "make rpm" and "make rpm-pkg" commands for arm64 platform are broken due to rpmbuild couldn't find Image.gz file at default location (which is kernel src root):
cp: cannot stat 'Image.gz': No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.ocFBmP (%install)
While the correct path to arm64 kernel image file
is "arch/arm64/boot/Image.gz".
The exact file name (Image.gz) is stored at KBUILD_IMAGE variable and read by rpmbuild with "make image_name" command at install phase after kernel build is complete.
Accordingly to Michal's Marek comment the KBUILD_IMAGE variable has to be set to point to actual file.
Since the KBUILD_IMAGE variable is used in general cases of build we need to prevent other build types breakage by changing it.
The solution is to add to arch/arm64/Makefie extra target "image_name" with dependency "KBUILD_IMAGE:=<proper path to Image.gz file>". Thus it will allow to set proper path to Image.gz file only for the "image_name" build target and this exact value will be picked up while rpm build install phase.
--- arch/arm64/Makefile | 2 ++ 1 file changed, 2 insertions(+)
arch/arm64/Makefile +2 -0
@@ -101,6 +101,8 @@ all: $(KBUILD_IMAGE) $(KBUILD_DTBS) boot := arch/arm64/boot +image_name: KBUILD_IMAGE :=$(boot)/$(KBUILD_IMAGE) + Image: vmlinux $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
Signature · 1 line
1.8.3.1
PATCH v2 1/1 arm64: make rpm failed due to incorrect path to Image.gz
[Adding Will Deacon]
Sorry, should do this at the very beginning. (
Quoted 46 lines · Vadim Lomovtsev
The "make rpm" and "make rpm-pkg" commands for arm64 platform are broken due to rpmbuild couldn't find Image.gz file at default location (which is kernel src root):
cp: cannot stat 'Image.gz': No such file or directory
error: Bad exit status from/var/tmp/rpm-tmp.ocFBmP(%install)While the correct path to arm64 kernel image file
is "arch/arm64/boot/Image.gz".The exact file name (Image.gz) is stored at
KBUILD_IMAGEvariable and read by rpmbuild with "makeimage_name" command at install phase after kernel build is complete.Accordingly to Michal's Marek comment the
KBUILD_IMAGEvariable has to be set to point to actual file.Since the
KBUILD_IMAGEvariable is used in general cases of build we need to prevent other build types breakage by changing it.The solution is to add to
arch/arm64/Makefieextra target "image_name" with dependency "KBUILD_IMAGE:=<proper path to Image.gz file>". Thus it will allow to set proper path to Image.gz file only for the "image_name" build target and this exact value will be picked up while rpm build install phase.Signed-off-by Vadim Lomovtsev <[email protected]>--- arch/arm64/Makefile | 2 ++ 1 file changed, 2 insertions(+)arch/arm64/Makefile +2
-0@@ -101,6 +101,8 @@ all: $(KBUILD_IMAGE) $(KBUILD_DTBS) boot := arch/arm64/boot +image_name: KBUILD_IMAGE :=$(boot)/$(KBUILD_IMAGE) + Image: vmlinux $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@Signature · 1 line
1.8.3.1
PATCH v2 1/1 arm64: make rpm failed due to incorrect path to Image.gz
Quoted 40 lines · Vadim Lomovtsev
[Adding Will Deacon]
Sorry, should do this at the very beginning. (Quoted 36 lines · Vadim Lomovtsev
The "make rpm" and "make rpm-pkg" commands for arm64 platform are broken due to rpmbuild couldn't find Image.gz file at default location (which is kernel src root):
cp: cannot stat 'Image.gz': No such file or directory
error: Bad exit status from/var/tmp/rpm-tmp.ocFBmP(%install)While the correct path to arm64 kernel image file
is "arch/arm64/boot/Image.gz".The exact file name (Image.gz) is stored at
KBUILD_IMAGEvariable and read by rpmbuild with "makeimage_name" command at install phase after kernel build is complete.Accordingly to Michal's Marek comment the
KBUILD_IMAGEvariable has to be set to point to actual file.Since the
KBUILD_IMAGEvariable is used in general cases of build we need to prevent other build types breakage by changing it.The solution is to add to
arch/arm64/Makefieextra target "image_name" with dependency "KBUILD_IMAGE:=<proper path to Image.gz file>". Thus it will allow to set proper path to Image.gz file only for the "image_name" build target and this exact value will be picked up while rpm build install phase.Signed-off-by Vadim Lomovtsev <[email protected]>--- arch/arm64/Makefile | 2 ++ 1 file changed, 2 insertions(+)arch/arm64/Makefile +0
-0@@ -101,6 +101,8 @@ all: $(KBUILD_IMAGE) $(KBUILD_DTBS)
Quoted 6 lines
arch/arm64/Makefile all: $(KBUILD_IMAGE) $(KBUILD_DTBS) · line 107
Quoted 6 lines
arch/arm64/Makefile +2
-0boot := arch/arm64/boot +image_name: KBUILD_IMAGE :=$(boot)/$(KBUILD_IMAGE) + Image: vmlinux $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
It might be worth fixing the other architectures that just set KBUILD_IMAGE to the filename too. Then you could remove the bodge from scripts/package/builddeb that tries to support both formats.
Will
PATCH v2 1/1 arm64: make rpm failed due to incorrect path to Image.gz
Quoted 52 lines · Will Deacon
Quoted 40 lines · Vadim Lomovtsev
[Adding Will Deacon]
Sorry, should do this at the very beginning. (Quoted 36 lines · Vadim Lomovtsev
The "make rpm" and "make rpm-pkg" commands for arm64 platform are broken due to rpmbuild couldn't find Image.gz file at default location (which is kernel src root):
cp: cannot stat 'Image.gz': No such file or directory
error: Bad exit status from/var/tmp/rpm-tmp.ocFBmP(%install)While the correct path to arm64 kernel image file
is "arch/arm64/boot/Image.gz".The exact file name (Image.gz) is stored at
KBUILD_IMAGEvariable and read by rpmbuild with "makeimage_name" command at install phase after kernel build is complete.Accordingly to Michal's Marek comment the
KBUILD_IMAGEvariable has to be set to point to actual file.Since the
KBUILD_IMAGEvariable is used in general cases of build we need to prevent other build types breakage by changing it.The solution is to add to
arch/arm64/Makefieextra target "image_name" with dependency "KBUILD_IMAGE:=<proper path to Image.gz file>". Thus it will allow to set proper path to Image.gz file only for the "image_name" build target and this exact value will be picked up while rpm build install phase.Signed-off-by Vadim Lomovtsev <[email protected]>--- arch/arm64/Makefile | 2 ++ 1 file changed, 2 insertions(+)arch/arm64/Makefile +0
-0@@ -101,6 +101,8 @@ all: $(KBUILD_IMAGE) $(KBUILD_DTBS)Quoted 6 lines
arch/arm64/Makefile all: $(KBUILD_IMAGE) $(KBUILD_DTBS) · line 107
Quoted 6 lines
arch/arm64/Makefile +2
-0boot := arch/arm64/boot +image_name: KBUILD_IMAGE :=$(boot)/$(KBUILD_IMAGE) + Image: vmlinux $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@It might be worth fixing the other architectures that just set
KBUILD_IMAGEto the filename too. Then you could remove the bodge fromscripts/package/builddebthat tries to support both formats.
Quoted 2 lines
Will
Agree.
And I would do that but I have no other setup except arm64 and x86 to test such changes.
However, possible solution could be in the same manner:
add extra rule into make file to provide correct KBUILD_IMAGE value by "make image_name" command. Also builddeb script should be updated with such command call before copy. Thus for each architecture it would be possible to provide correct path along with filename.
Vadim