* [PATCH,resend] kbuild: fix the binrpm-pkg target to work with KBUILD_OUTPUT set
@ 2009-08-25 20:15 Frans Pop
2009-09-27 8:29 ` Sam Ravnborg
0 siblings, 1 reply; 2+ messages in thread
From: Frans Pop @ 2009-08-25 20:15 UTC (permalink / raw)
To: linux-kbuild; +Cc: linux-kernel, Sam Ravnborg
The binrpm-pkg target (binary RPM only) fails when called with
KBUILD_OUTPUT set. This patch makes it work.
For the rpm-pkg target (source + binary RPM), building with
KBUILD_OUTPUT set is not possible and also not needed as the
actual build is done in a temporary directory anyway, so check
that KBUILD_OUTPUT is not set in that case to avoid later errors.
Signed-off-by: Frans Pop <elendil@planet.nl>
---
I ran into this while trying if I could build an RPM kernel package on
my Debian notebook :-)
The patch has been tested by doing three builds:
- make -j4 rpm-pkg
- make -j4 binrpm-pkg
- KBUILD_OUTPUT=../builds/amd64 make -j4 binrpm-pkg
For all three the contents of the resulting binary RPM package was
identical
(and looked correct); the source RPM package from the first build looked
sane.
A 'KBUILD_OUTPUT=../builds/amd64 make -j4 rpm-pkg' fails as intended.
One open issue is that the following commands should IIUC be identical,
but the second one does not work:
- KBUILD_OUTPUT=../builds/amd64 make -j4 binrpm-pkg
- make -j4 O=../builds/amd64 binrpm-pkg
AFAICT the root Makefile is supposed to set KBUILD_OUTPUT based on O=, but
that is not visible when the lines within the binrpm-pkg target are
executed.
My make foo was not strong enough to debug this. Sam, do you know?
Cheers,
FJP
diff --git a/scripts/package/Makefile b/scripts/package/Makefile
index fa4a0a1..b305c57 100644
--- a/scripts/package/Makefile
+++ b/scripts/package/Makefile
@@ -18,6 +18,9 @@
# e) generate the rpm files, based on kernel.spec
# - Use /. to avoid tar packing just the symlink
+# Note that the rpm-pkg target cannot be used with KBUILD_OUTPUT,
+# but the binrpm-pkg target can; for some reason O= gets ignored.
+
# Do we have rpmbuild, otherwise fall back to the older rpm
RPM := $(shell if [ -x "/usr/bin/rpmbuild" ]; then echo rpmbuild; \
else echo rpm; fi)
@@ -33,6 +36,12 @@ $(objtree)/kernel.spec: $(MKSPEC) $(srctree)/Makefile
$(CONFIG_SHELL) $(MKSPEC) > $@
rpm-pkg rpm: $(objtree)/kernel.spec FORCE
+ @if test -n "$(KBUILD_OUTPUT)"; then \
+ echo "Building source + binary RPM is not possible outside the"; \
+ echo "kernel source tree. Don't set KBUILD_OUTPUT, or use the"; \
+ echo "binrpm-pkg target instead."; \
+ false; \
+ fi
$(MAKE) clean
$(PREV) ln -sf $(srctree) $(KERNELPATH)
$(CONFIG_SHELL) $(srctree)/scripts/setlocalversion >
$(objtree)/.scmversion
@@ -61,7 +70,7 @@ binrpm-pkg: $(objtree)/binkernel.spec FORCE
set -e; \
mv -f $(objtree)/.tmp_version $(objtree)/.version
- $(RPM) $(RPMOPTS) --define "_builddir $(srctree)" --target \
+ $(RPM) $(RPMOPTS) --define "_builddir $(objtree)" --target \
$(UTS_MACHINE) -bb $<
clean-files += $(objtree)/binkernel.spec
diff --git a/scripts/package/mkspec b/scripts/package/mkspec
index 3d93f8c..ce9c60e 100755
--- a/scripts/package/mkspec
+++ b/scripts/package/mkspec
@@ -70,7 +70,7 @@ echo 'mkdir -p $RPM_BUILD_ROOT/boot
$RPM_BUILD_ROOT/lib/modules'
echo 'mkdir -p $RPM_BUILD_ROOT/lib/firmware'
echo "%endif"
-echo 'INSTALL_MOD_PATH=$RPM_BUILD_ROOT make %{_smp_mflags}
modules_install'
+echo 'INSTALL_MOD_PATH=$RPM_BUILD_ROOT make %{_smp_mflags} KBUILD_SRC=
modules_install'
echo "%ifarch ia64"
echo 'cp $KBUILD_IMAGE $RPM_BUILD_ROOT'"/boot/efi/vmlinuz-$KERNELRELEASE"
echo 'ln -s '"efi/vmlinuz-$KERNELRELEASE" '$RPM_BUILD_ROOT'"/boot/"
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH,resend] kbuild: fix the binrpm-pkg target to work with KBUILD_OUTPUT set
2009-08-25 20:15 [PATCH,resend] kbuild: fix the binrpm-pkg target to work with KBUILD_OUTPUT set Frans Pop
@ 2009-09-27 8:29 ` Sam Ravnborg
0 siblings, 0 replies; 2+ messages in thread
From: Sam Ravnborg @ 2009-09-27 8:29 UTC (permalink / raw)
To: Frans Pop; +Cc: linux-kbuild, linux-kernel
On Tue, Aug 25, 2009 at 10:15:39PM +0200, Frans Pop wrote:
> The binrpm-pkg target (binary RPM only) fails when called with
> KBUILD_OUTPUT set. This patch makes it work.
>
> For the rpm-pkg target (source + binary RPM), building with
> KBUILD_OUTPUT set is not possible and also not needed as the
> actual build is done in a temporary directory anyway, so check
> that KBUILD_OUTPUT is not set in that case to avoid later errors.
>
> Signed-off-by: Frans Pop <elendil@planet.nl>
Applied.
> ---
>
> I ran into this while trying if I could build an RPM kernel package on
> my Debian notebook :-)
>
> The patch has been tested by doing three builds:
> - make -j4 rpm-pkg
> - make -j4 binrpm-pkg
> - KBUILD_OUTPUT=../builds/amd64 make -j4 binrpm-pkg
>
> For all three the contents of the resulting binary RPM package was
> identical
> (and looked correct); the source RPM package from the first build looked
> sane.
>
> A 'KBUILD_OUTPUT=../builds/amd64 make -j4 rpm-pkg' fails as intended.
>
> One open issue is that the following commands should IIUC be identical,
> but the second one does not work:
> - KBUILD_OUTPUT=../builds/amd64 make -j4 binrpm-pkg
> - make -j4 O=../builds/amd64 binrpm-pkg
>
> AFAICT the root Makefile is supposed to set KBUILD_OUTPUT based on O=, but
> that is not visible when the lines within the binrpm-pkg target are
> executed.
> My make foo was not strong enough to debug this. Sam, do you know?
I did not look into this - there is too much other stuff pending.
Sam
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-09-27 8:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-08-25 20:15 [PATCH,resend] kbuild: fix the binrpm-pkg target to work with KBUILD_OUTPUT set Frans Pop
2009-09-27 8:29 ` Sam Ravnborg
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.