Skip to contentSkip to conversation

arm64: make rpm failed due to incorrect path to Image.gz

PATCH Superseded Vadim Lomovtsev 2 participants 4 messages Sep 29, 2016 – Sep 30, 2016 arm64

lore
Share & tools
lore
#0 lore raw

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
index ab51aed..09926d3 100644
@@ -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
#1 lore raw

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_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
index ab51aed..09926d3 100644
@@ -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
#2 lore raw

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_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 +0 -0
index ab51aed..09926d3 100644
@@ -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 -0
 boot := 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

#3 lore raw

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_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 +0 -0
index ab51aed..09926d3 100644
@@ -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 -0
 boot := 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.

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