2022-10-25 14:35:34

by Jonathan Toppins

[permalink] [raw]
Subject: [PATCH next] kbuild: add ability to make source rpm buildable using koji

From: Ivan Vecera <[email protected]>

Changes:
- added new target 'srcrpm-pkg' to generate source rpm
- added required build tools to spec file
- removed locally compiled host tools to force their re-compile

Signed-off-by: Ivan Vecera <[email protected]>
Signed-off-by: Jonathan Toppins <[email protected]>
---
scripts/Makefile.package | 10 ++++++++++
scripts/package/mkspec | 7 +++++++
2 files changed, 17 insertions(+)

diff --git a/scripts/Makefile.package b/scripts/Makefile.package
index 8bbcced67c22..e0830a870394 100644
--- a/scripts/Makefile.package
+++ b/scripts/Makefile.package
@@ -62,6 +62,16 @@ rpm-pkg:
+rpmbuild $(RPMOPTS) --target $(UTS_MACHINE)-linux -ta $(KERNELPATH).tar.gz \
--define='_smp_mflags %{nil}'

+# srcrpm-pkg
+# ---------------------------------------------------------------------------
+PHONY += srcrpm-pkg
+srcrpm-pkg:
+ $(MAKE) clean
+ $(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec
+ $(call cmd,src_tar,$(KERNELPATH),kernel.spec)
+ +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE) -ts $(KERNELPATH).tar.gz \
+ --define='_smp_mflags %{nil}' --define='_srcrpmdir $(srctree)'
+
# binrpm-pkg
# ---------------------------------------------------------------------------
PHONY += binrpm-pkg
diff --git a/scripts/package/mkspec b/scripts/package/mkspec
index 70392fd2fd29..dda00a948a01 100755
--- a/scripts/package/mkspec
+++ b/scripts/package/mkspec
@@ -33,6 +33,8 @@ EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"

+test -n "$LOCALVERSION" && MAKE="$MAKE LOCALVERSION=$LOCALVERSION"
+
# We can label the here-doc lines for conditional output to the spec file
#
# Labels:
@@ -49,6 +51,9 @@ sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
URL: https://www.kernel.org
$S Source: kernel-$__KERNELRELEASE.tar.gz
Provides: $PROVIDES
+$S BuildRequires: bc binutils bison dwarves elfutils-libelf-devel flex
+$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
+
# $UTS_MACHINE as a fallback of _arch in case
# /usr/lib/rpm/platform/*/macros was not included.
%define _arch %{?_arch:$UTS_MACHINE}
@@ -80,6 +85,8 @@ $S$M against the $__KERNELRELEASE kernel package.
$S$M
$S %prep
$S %setup -q
+$S rm -f scripts/basic/fixdep scripts/kconfig/conf
+$S rm -f tools/objtool/{fixdep,objtool}
$S
$S %build
$S $MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
--
2.31.1



2022-11-02 07:52:31

by Íñigo Huguet

[permalink] [raw]
Subject: Re: [PATCH next] kbuild: add ability to make source rpm buildable using koji

On Tue, Oct 25, 2022 at 3:17 PM Jonathan Toppins <[email protected]> wrote:
>
> From: Ivan Vecera <[email protected]>
>
> Changes:
> - added new target 'srcrpm-pkg' to generate source rpm
> - added required build tools to spec file
> - removed locally compiled host tools to force their re-compile
>
> Signed-off-by: Ivan Vecera <[email protected]>
> Signed-off-by: Jonathan Toppins <[email protected]>

Acked-by: Íñigo Huguet <[email protected]>

> ---
> scripts/Makefile.package | 10 ++++++++++
> scripts/package/mkspec | 7 +++++++
> 2 files changed, 17 insertions(+)
>
> diff --git a/scripts/Makefile.package b/scripts/Makefile.package
> index 8bbcced67c22..e0830a870394 100644
> --- a/scripts/Makefile.package
> +++ b/scripts/Makefile.package
> @@ -62,6 +62,16 @@ rpm-pkg:
> +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE)-linux -ta $(KERNELPATH).tar.gz \
> --define='_smp_mflags %{nil}'
>
> +# srcrpm-pkg
> +# ---------------------------------------------------------------------------
> +PHONY += srcrpm-pkg
> +srcrpm-pkg:
> + $(MAKE) clean
> + $(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec
> + $(call cmd,src_tar,$(KERNELPATH),kernel.spec)
> + +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE) -ts $(KERNELPATH).tar.gz \
> + --define='_smp_mflags %{nil}' --define='_srcrpmdir $(srctree)'
> +
> # binrpm-pkg
> # ---------------------------------------------------------------------------
> PHONY += binrpm-pkg
> diff --git a/scripts/package/mkspec b/scripts/package/mkspec
> index 70392fd2fd29..dda00a948a01 100755
> --- a/scripts/package/mkspec
> +++ b/scripts/package/mkspec
> @@ -33,6 +33,8 @@ EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
> --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
> --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
>
> +test -n "$LOCALVERSION" && MAKE="$MAKE LOCALVERSION=$LOCALVERSION"
> +
> # We can label the here-doc lines for conditional output to the spec file
> #
> # Labels:
> @@ -49,6 +51,9 @@ sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
> URL: https://www.kernel.org
> $S Source: kernel-$__KERNELRELEASE.tar.gz
> Provides: $PROVIDES
> +$S BuildRequires: bc binutils bison dwarves elfutils-libelf-devel flex
> +$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
> +
> # $UTS_MACHINE as a fallback of _arch in case
> # /usr/lib/rpm/platform/*/macros was not included.
> %define _arch %{?_arch:$UTS_MACHINE}
> @@ -80,6 +85,8 @@ $S$M against the $__KERNELRELEASE kernel package.
> $S$M
> $S %prep
> $S %setup -q
> +$S rm -f scripts/basic/fixdep scripts/kconfig/conf
> +$S rm -f tools/objtool/{fixdep,objtool}
> $S
> $S %build
> $S $MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
> --
> 2.31.1
>


--
Íñigo Huguet


2022-11-08 08:26:14

by Ivan Vecera

[permalink] [raw]
Subject: Re: [PATCH next] kbuild: add ability to make source rpm buildable using koji

On Tue, 25 Oct 2022 09:17:30 -0400
Jonathan Toppins <[email protected]> wrote:

> From: Ivan Vecera <[email protected]>
>
> Changes:
> - added new target 'srcrpm-pkg' to generate source rpm
> - added required build tools to spec file
> - removed locally compiled host tools to force their re-compile
>
> Signed-off-by: Ivan Vecera <[email protected]>
> Signed-off-by: Jonathan Toppins <[email protected]>
> ---
> scripts/Makefile.package | 10 ++++++++++
> scripts/package/mkspec | 7 +++++++
> 2 files changed, 17 insertions(+)
>
> diff --git a/scripts/Makefile.package b/scripts/Makefile.package
> index 8bbcced67c22..e0830a870394 100644
> --- a/scripts/Makefile.package
> +++ b/scripts/Makefile.package
> @@ -62,6 +62,16 @@ rpm-pkg:
> +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE)-linux -ta $(KERNELPATH).tar.gz \
> --define='_smp_mflags %{nil}'
>
> +# srcrpm-pkg
> +# ---------------------------------------------------------------------------
> +PHONY += srcrpm-pkg
> +srcrpm-pkg:
> + $(MAKE) clean
> + $(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec
> + $(call cmd,src_tar,$(KERNELPATH),kernel.spec)
> + +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE) -ts $(KERNELPATH).tar.gz \
> + --define='_smp_mflags %{nil}' --define='_srcrpmdir $(srctree)'
> +
> # binrpm-pkg
> # ---------------------------------------------------------------------------
> PHONY += binrpm-pkg
> diff --git a/scripts/package/mkspec b/scripts/package/mkspec
> index 70392fd2fd29..dda00a948a01 100755
> --- a/scripts/package/mkspec
> +++ b/scripts/package/mkspec
> @@ -33,6 +33,8 @@ EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
> --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
> --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
>
> +test -n "$LOCALVERSION" && MAKE="$MAKE LOCALVERSION=$LOCALVERSION"
> +
> # We can label the here-doc lines for conditional output to the spec file
> #
> # Labels:
> @@ -49,6 +51,9 @@ sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
> URL: https://www.kernel.org
> $S Source: kernel-$__KERNELRELEASE.tar.gz
> Provides: $PROVIDES
> +$S BuildRequires: bc binutils bison dwarves elfutils-libelf-devel flex
> +$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
> +
> # $UTS_MACHINE as a fallback of _arch in case
> # /usr/lib/rpm/platform/*/macros was not included.
> %define _arch %{?_arch:$UTS_MACHINE}
> @@ -80,6 +85,8 @@ $S$M against the $__KERNELRELEASE kernel package.
> $S$M
> $S %prep
> $S %setup -q
> +$S rm -f scripts/basic/fixdep scripts/kconfig/conf
> +$S rm -f tools/objtool/{fixdep,objtool}
> $S
> $S %build
> $S $MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}

Tested-by: Ivan Vecera <[email protected]>


2022-11-13 13:59:07

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH next] kbuild: add ability to make source rpm buildable using koji

On Tue, Oct 25, 2022 at 10:17 PM Jonathan Toppins <[email protected]> wrote:
>
> From: Ivan Vecera <[email protected]>
>
> Changes:
> - added new target 'srcrpm-pkg' to generate source rpm
> - added required build tools to spec file
> - removed locally compiled host tools to force their re-compile
>
> Signed-off-by: Ivan Vecera <[email protected]>
> Signed-off-by: Jonathan Toppins <[email protected]>



I am fine with this patch.

Just minor comments.


I noticed an inconsistency between
"--target $(UTS_MACHINE)-linux" in the rpm-pkg target and
"--target $(UTS_MACHINE)" in the srcrpm-pkg target.


I applied 6105e4f6511d6b383738be89efb99c607e158a29
just a few months ago.
Is it better to make it consistent here?




Actually, I do not know koji, also not sure if it is
important to mention it in the commit subject.
I just tested this patch by using 'rpmbuild' command
on my local machine.







> ---
> scripts/Makefile.package | 10 ++++++++++
> scripts/package/mkspec | 7 +++++++
> 2 files changed, 17 insertions(+)
>
> diff --git a/scripts/Makefile.package b/scripts/Makefile.package
> index 8bbcced67c22..e0830a870394 100644
> --- a/scripts/Makefile.package
> +++ b/scripts/Makefile.package
> @@ -62,6 +62,16 @@ rpm-pkg:
> +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE)-linux -ta $(KERNELPATH).tar.gz \
> --define='_smp_mflags %{nil}'
>
> +# srcrpm-pkg
> +# ---------------------------------------------------------------------------
> +PHONY += srcrpm-pkg
> +srcrpm-pkg:
> + $(MAKE) clean
> + $(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec
> + $(call cmd,src_tar,$(KERNELPATH),kernel.spec)
> + +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE) -ts $(KERNELPATH).tar.gz \
> + --define='_smp_mflags %{nil}' --define='_srcrpmdir $(srctree)'
> +
> # binrpm-pkg
> # ---------------------------------------------------------------------------
> PHONY += binrpm-pkg
> diff --git a/scripts/package/mkspec b/scripts/package/mkspec
> index 70392fd2fd29..dda00a948a01 100755
> --- a/scripts/package/mkspec
> +++ b/scripts/package/mkspec
> @@ -33,6 +33,8 @@ EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
> --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
> --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
>
> +test -n "$LOCALVERSION" && MAKE="$MAKE LOCALVERSION=$LOCALVERSION"
> +
> # We can label the here-doc lines for conditional output to the spec file
> #
> # Labels:
> @@ -49,6 +51,9 @@ sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
> URL: https://www.kernel.org
> $S Source: kernel-$__KERNELRELEASE.tar.gz
> Provides: $PROVIDES
> +$S BuildRequires: bc binutils bison dwarves elfutils-libelf-devel flex
> +$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
> +
> # $UTS_MACHINE as a fallback of _arch in case
> # /usr/lib/rpm/platform/*/macros was not included.
> %define _arch %{?_arch:$UTS_MACHINE}
> @@ -80,6 +85,8 @@ $S$M against the $__KERNELRELEASE kernel package.
> $S$M
> $S %prep
> $S %setup -q
> +$S rm -f scripts/basic/fixdep scripts/kconfig/conf
> +$S rm -f tools/objtool/{fixdep,objtool}
> $S
> $S %build
> $S $MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
> --
> 2.31.1
>


--
Best Regards
Masahiro Yamada

2022-11-21 14:29:30

by Jonathan Toppins

[permalink] [raw]
Subject: Re: [PATCH next] kbuild: add ability to make source rpm buildable using koji

On 11/13/22 08:33, Masahiro Yamada wrote:
> On Tue, Oct 25, 2022 at 10:17 PM Jonathan Toppins <[email protected]> wrote:
>>
>> From: Ivan Vecera <[email protected]>
>>
>> Changes:
>> - added new target 'srcrpm-pkg' to generate source rpm
>> - added required build tools to spec file
>> - removed locally compiled host tools to force their re-compile
>>
>> Signed-off-by: Ivan Vecera <[email protected]>
>> Signed-off-by: Jonathan Toppins <[email protected]>
>
>
>
> I am fine with this patch.
>
> Just minor comments.
>
>
> I noticed an inconsistency between
> "--target $(UTS_MACHINE)-linux" in the rpm-pkg target and
> "--target $(UTS_MACHINE)" in the srcrpm-pkg target.
>
>
> I applied 6105e4f6511d6b383738be89efb99c607e158a29
> just a few months ago.
> Is it better to make it consistent here?

Yes I can post a v2 that includes this change.

>
> Actually, I do not know koji, also not sure if it is
> important to mention it in the commit subject.
> I just tested this patch by using 'rpmbuild' command
> on my local machine.

koji (https://koji.fedoraproject.org/koji/) is the automated builder
available to Fedora developers. With this patch a developer can produce
an upstream kernel rpm rather easily.

>
>
[...]
>
>
> --
> Best Regards
> Masahiro Yamada
>


2022-11-26 23:27:19

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH next] kbuild: add ability to make source rpm buildable using koji

On Tue, Oct 25, 2022 at 10:17 PM Jonathan Toppins <[email protected]> wrote:
>
> From: Ivan Vecera <[email protected]>
>
> Changes:
> - added new target 'srcrpm-pkg' to generate source rpm
> - added required build tools to spec file
> - removed locally compiled host tools to force their re-compile
>
> Signed-off-by: Ivan Vecera <[email protected]>
> Signed-off-by: Jonathan Toppins <[email protected]>


Applied to linux-kbuild.
Thanks.

> ---
> scripts/Makefile.package | 10 ++++++++++
> scripts/package/mkspec | 7 +++++++
> 2 files changed, 17 insertions(+)
>
> diff --git a/scripts/Makefile.package b/scripts/Makefile.package
> index 8bbcced67c22..e0830a870394 100644
> --- a/scripts/Makefile.package
> +++ b/scripts/Makefile.package
> @@ -62,6 +62,16 @@ rpm-pkg:
> +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE)-linux -ta $(KERNELPATH).tar.gz \
> --define='_smp_mflags %{nil}'
>
> +# srcrpm-pkg
> +# ---------------------------------------------------------------------------
> +PHONY += srcrpm-pkg
> +srcrpm-pkg:
> + $(MAKE) clean
> + $(CONFIG_SHELL) $(MKSPEC) >$(objtree)/kernel.spec
> + $(call cmd,src_tar,$(KERNELPATH),kernel.spec)
> + +rpmbuild $(RPMOPTS) --target $(UTS_MACHINE) -ts $(KERNELPATH).tar.gz \
> + --define='_smp_mflags %{nil}' --define='_srcrpmdir $(srctree)'
> +
> # binrpm-pkg
> # ---------------------------------------------------------------------------
> PHONY += binrpm-pkg
> diff --git a/scripts/package/mkspec b/scripts/package/mkspec
> index 70392fd2fd29..dda00a948a01 100755
> --- a/scripts/package/mkspec
> +++ b/scripts/package/mkspec
> @@ -33,6 +33,8 @@ EXCLUDES="$RCS_TAR_IGNORE --exclude=*vmlinux* --exclude=*.mod \
> --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
> --exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
>
> +test -n "$LOCALVERSION" && MAKE="$MAKE LOCALVERSION=$LOCALVERSION"
> +
> # We can label the here-doc lines for conditional output to the spec file
> #
> # Labels:
> @@ -49,6 +51,9 @@ sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
> URL: https://www.kernel.org
> $S Source: kernel-$__KERNELRELEASE.tar.gz
> Provides: $PROVIDES
> +$S BuildRequires: bc binutils bison dwarves elfutils-libelf-devel flex
> +$S BuildRequires: gcc make openssl openssl-devel perl python3 rsync
> +
> # $UTS_MACHINE as a fallback of _arch in case
> # /usr/lib/rpm/platform/*/macros was not included.
> %define _arch %{?_arch:$UTS_MACHINE}
> @@ -80,6 +85,8 @@ $S$M against the $__KERNELRELEASE kernel package.
> $S$M
> $S %prep
> $S %setup -q
> +$S rm -f scripts/basic/fixdep scripts/kconfig/conf
> +$S rm -f tools/objtool/{fixdep,objtool}
> $S
> $S %build
> $S $MAKE %{?_smp_mflags} KBUILD_BUILD_VERSION=%{release}
> --
> 2.31.1
>


--
Best Regards
Masahiro Yamada