[v6,07/12] kbuild: deb-pkg: switch over to source format 3.0 (quilt)

Message ID 20230215012034.403356-7-masahiroy@kernel.org
State New
Headers
Series [v6,01/12] kbuild: add a tool to list files ignored by git |

Commit Message

Masahiro Yamada Feb. 15, 2023, 1:20 a.m. UTC
  Change the source format from "1.0" to "3.0 (quilt)" because it works
more cleanly.

All files except .config and debian/ go into the orig tarball.
Add a single patch, debian/patches/config, and delete the ugly
extend-diff-ignore patterns.

The debian tarball will be compressed into *.debian.tar.xz by default.
If you like to use a different compression mode, you can pass the
command line option, DPKG_FLAGS=-Zgzip, for example.

The orig tarball only supports gzip for now. The combination of
gzip and xz is somewhat clumsy, but it is not a practical problem.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

Changes in v6:
  - Fix error when KCONFIG_CONFIG is set

Changes in v4:
  - New patch

 scripts/Makefile.package |  2 +-
 scripts/package/mkdebian | 41 ++++++++++++++++++----------------------
 2 files changed, 19 insertions(+), 24 deletions(-)
  

Comments

Nicolas Schier Feb. 24, 2023, 10:42 p.m. UTC | #1
On Wed, Feb 15, 2023 at 10:20:29AM +0900 Masahiro Yamada wrote:
> Change the source format from "1.0" to "3.0 (quilt)" because it works
> more cleanly.
> 
> All files except .config and debian/ go into the orig tarball.
> Add a single patch, debian/patches/config, and delete the ugly
> extend-diff-ignore patterns.
> 
> The debian tarball will be compressed into *.debian.tar.xz by default.
> If you like to use a different compression mode, you can pass the
> command line option, DPKG_FLAGS=-Zgzip, for example.
> 
> The orig tarball only supports gzip for now. The combination of
> gzip and xz is somewhat clumsy, but it is not a practical problem.
> 
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> ---

Thanks, that switch to 3.0/quilt sounds really good to me.

> 
> Changes in v6:
>   - Fix error when KCONFIG_CONFIG is set
> 
> Changes in v4:
>   - New patch
> 
>  scripts/Makefile.package |  2 +-
>  scripts/package/mkdebian | 41 ++++++++++++++++++----------------------
>  2 files changed, 19 insertions(+), 24 deletions(-)
> 
> diff --git a/scripts/Makefile.package b/scripts/Makefile.package
> index 80a96eb61426..5538deacb136 100644
> --- a/scripts/Makefile.package
> +++ b/scripts/Makefile.package
> @@ -105,7 +105,7 @@ debian-orig: linux.tar.gz debian
>  PHONY += deb-pkg
>  deb-pkg: debian-orig
>  	+dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) $(DPKG_FLAGS) \
> -		--build=source,binary --source-option=-sP -nc -us -uc
> +		--build=source,binary -nc -us -uc
>  
>  PHONY += bindeb-pkg
>  bindeb-pkg: debian
> diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian
> index 534e9713761a..22fc73a5e4f2 100755
> --- a/scripts/package/mkdebian
> +++ b/scripts/package/mkdebian
> @@ -135,29 +135,24 @@ else
>  fi
>  
>  mkdir -p debian/source/
> -echo "1.0" > debian/source/format
> -
> -# Ugly: ignore anything except .config or debian/
> -cat<<'EOF' > debian/source/local-options
> -diff-ignore
> -
> -extend-diff-ignore = ^[^.d]
> -
> -extend-diff-ignore = ^\.[^c]
> -extend-diff-ignore = ^\.c($|[^o])
> -extend-diff-ignore = ^\.co($|[^n])
> -extend-diff-ignore = ^\.con($|[^f])
> -extend-diff-ignore = ^\.conf($|[^i])
> -extend-diff-ignore = ^\.confi($|[^g])
> -extend-diff-ignore = ^\.config.
> -
> -extend-diff-ignore = ^d($|[^e])
> -extend-diff-ignore = ^de($|[^b])
> -extend-diff-ignore = ^deb($|[^i])
> -extend-diff-ignore = ^debi($|[^a])
> -extend-diff-ignore = ^debia($|[^n])
> -extend-diff-ignore = ^debian[^/]
> -EOF
> +echo "3.0 (quilt)" > debian/source/format
> +
> +{
> +	echo "diff-ignore"
> +	echo "extend-diff-ignore = .*"
> +} > debian/source/local-options
> +
> +# Add .config as a patch
> +mkdir -p debian/patches
> +{
> +	echo "Subject: Add .config"
> +	echo "Author: ${maintainer}"
> +	echo
> +	echo "--- /dev/null"
> +	echo "+++ linux/.config"

bike-shedding:

	cat <<-eof
	Subject: Add .config
	Author: ${maintainer}

	--- /dev/null
	+++ linux/.config
	eof


> +	diff -u /dev/null "${KCONFIG_CONFIG}" | tail -n +3
> +} > debian/patches/config
> +echo config > debian/patches/series
>  
>  echo $debarch > debian/arch
>  extra_build_depends=", $(if_enabled_echo CONFIG_UNWINDER_ORC libelf-dev:native)"
> -- 
> 2.34.1

Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>
  
Masahiro Yamada Feb. 25, 2023, 8:54 a.m. UTC | #2
On Sat, Feb 25, 2023 at 7:48 AM Nicolas Schier <nicolas@fjasle.eu> wrote:


>
> bike-shedding:
>
>         cat <<-eof
>         Subject: Add .config
>         Author: ${maintainer}
>
>         --- /dev/null
>         +++ linux/.config
>         eof



I agree this is more readable, but I used echo to
avoid a process fork.

'echo' is a shell built-in for bash and dash but 'cat' is not.

So, this is a trade-off between readability vs
one less process fork.

If the code were much longer, I would prefer 'cat'.









>
> > +     diff -u /dev/null "${KCONFIG_CONFIG}" | tail -n +3
> > +} > debian/patches/config
> > +echo config > debian/patches/series
> >
> >  echo $debarch > debian/arch
> >  extra_build_depends=", $(if_enabled_echo CONFIG_UNWINDER_ORC libelf-dev:native)"
> > --
> > 2.34.1
>
> Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>



--
Best Regards
Masahiro Yamada
  

Patch

diff --git a/scripts/Makefile.package b/scripts/Makefile.package
index 80a96eb61426..5538deacb136 100644
--- a/scripts/Makefile.package
+++ b/scripts/Makefile.package
@@ -105,7 +105,7 @@  debian-orig: linux.tar.gz debian
 PHONY += deb-pkg
 deb-pkg: debian-orig
 	+dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) $(DPKG_FLAGS) \
-		--build=source,binary --source-option=-sP -nc -us -uc
+		--build=source,binary -nc -us -uc
 
 PHONY += bindeb-pkg
 bindeb-pkg: debian
diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian
index 534e9713761a..22fc73a5e4f2 100755
--- a/scripts/package/mkdebian
+++ b/scripts/package/mkdebian
@@ -135,29 +135,24 @@  else
 fi
 
 mkdir -p debian/source/
-echo "1.0" > debian/source/format
-
-# Ugly: ignore anything except .config or debian/
-cat<<'EOF' > debian/source/local-options
-diff-ignore
-
-extend-diff-ignore = ^[^.d]
-
-extend-diff-ignore = ^\.[^c]
-extend-diff-ignore = ^\.c($|[^o])
-extend-diff-ignore = ^\.co($|[^n])
-extend-diff-ignore = ^\.con($|[^f])
-extend-diff-ignore = ^\.conf($|[^i])
-extend-diff-ignore = ^\.confi($|[^g])
-extend-diff-ignore = ^\.config.
-
-extend-diff-ignore = ^d($|[^e])
-extend-diff-ignore = ^de($|[^b])
-extend-diff-ignore = ^deb($|[^i])
-extend-diff-ignore = ^debi($|[^a])
-extend-diff-ignore = ^debia($|[^n])
-extend-diff-ignore = ^debian[^/]
-EOF
+echo "3.0 (quilt)" > debian/source/format
+
+{
+	echo "diff-ignore"
+	echo "extend-diff-ignore = .*"
+} > debian/source/local-options
+
+# Add .config as a patch
+mkdir -p debian/patches
+{
+	echo "Subject: Add .config"
+	echo "Author: ${maintainer}"
+	echo
+	echo "--- /dev/null"
+	echo "+++ linux/.config"
+	diff -u /dev/null "${KCONFIG_CONFIG}" | tail -n +3
+} > debian/patches/config
+echo config > debian/patches/series
 
 echo $debarch > debian/arch
 extra_build_depends=", $(if_enabled_echo CONFIG_UNWINDER_ORC libelf-dev:native)"