* [PATCH v3] scripts/package/builddeb: split generating packaging and build
@ 2017-10-02 10:43 riku.voipio
2017-10-04 9:12 ` Masahiro Yamada
0 siblings, 1 reply; 5+ messages in thread
From: riku.voipio @ 2017-10-02 10:43 UTC (permalink / raw)
To: linux-kbuild, Masahiro Yamada; +Cc: debian-kernel, Riku Voipio
From: Riku Voipio <riku.voipio@linaro.org>
Move debian/ directory generation out of builddeb to a new script,
mkdebian. The package build commands are kept in builddeb, which
is now an internal command called from debian/rules.
With these changes in place, we can now use dpkg-buildpackage from
deb-pkg and bindeb-pkg removing need for handrolled source/changes
generation.
This patch is based on the criticism of the current state of builddeb
discussed on:
https://patchwork.kernel.org/patch/9656403/
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
---
changes since v2:
- revert back to intdeb-pkg target
- fix parellel builds from deb-pkg targets
- drop unneccesary -us flag from bindeb-pkg target
changes since v1:
- use scripts/package/builddeb directly instead of
using a internal intdeb-pkg target
- as consequence remove cmd_builddeb
- use KBUILD_PKG_ROOTCMD instead of hardcoded fakeroot -u
- don't clean tree in bindeb-pkg target
- fix source tarball version
- rebase on kbuild/next: no more firmware package
scripts/package/Makefile | 34 +++-----
scripts/package/builddeb | 221 +----------------------------------------------
scripts/package/mkdebian | 191 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 202 insertions(+), 244 deletions(-)
create mode 100755 scripts/package/mkdebian
diff --git a/scripts/package/Makefile b/scripts/package/Makefile
index 73f9f3192b9f..2850a1b1f9ab 100644
--- a/scripts/package/Makefile
+++ b/scripts/package/Makefile
@@ -24,6 +24,7 @@
# Remove hyphens since they have special meaning in RPM filenames
KERNELPATH := kernel-$(subst -,_,$(KERNELRELEASE))
KDEB_SOURCENAME ?= linux-$(KERNELRELEASE)
+KBUILD_PKG_ROOTCMD ?="fakeroot -u"
export KDEB_SOURCENAME
# Include only those top-level files that are needed by make, plus the GPL copy
TAR_CONTENT := $(KBUILD_ALLDIRS) .config .scmversion Makefile \
@@ -62,35 +63,20 @@ binrpm-pkg: FORCE
$(UTS_MACHINE) -bb $(objtree)/binkernel.spec
rm binkernel.spec
-# Deb target
-# ---------------------------------------------------------------------------
-quiet_cmd_builddeb = BUILDDEB
- cmd_builddeb = set -e; \
- test `id -u` = 0 || \
- test -n "$(KBUILD_PKG_ROOTCMD)" || { \
- which fakeroot >/dev/null 2>&1 && \
- KBUILD_PKG_ROOTCMD="fakeroot -u"; \
- } || { \
- echo; \
- echo "builddeb must be run as root (or using fakeroot)."; \
- echo "KBUILD_PKG_ROOTCMD is unset and fakeroot not found."; \
- echo "Try setting KBUILD_PKG_ROOTCMD to a command to acquire"; \
- echo "root privileges (e.g., 'fakeroot -u' or 'sudo')."; \
- false; \
- } && \
- \
- $$KBUILD_PKG_ROOTCMD $(CONFIG_SHELL) \
- $(srctree)/scripts/package/builddeb $@
-
deb-pkg: FORCE
$(MAKE) clean
+ $(CONFIG_SHELL) $(srctree)/scripts/package/mkdebian
$(call cmd,src_tar,$(KDEB_SOURCENAME))
- $(MAKE) KBUILD_SRC=
- +$(call cmd,builddeb)
+ origversion=$$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$$//');\
+ mv $(KDEB_SOURCENAME).tar.gz ../$(KDEB_SOURCENAME)_$${origversion}.orig.tar.gz
+ +dpkg-buildpackage -j1 -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) -i.git -us -uc
bindeb-pkg: FORCE
- $(MAKE) KBUILD_SRC=
- +$(call cmd,builddeb)
+ $(CONFIG_SHELL) $(srctree)/scripts/package/mkdebian
+ +dpkg-buildpackage -j1 -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) -b -nc -uc
+
+intdeb-pkg: FORCE
+ +$(CONFIG_SHELL) $(srctree)/scripts/package/builddeb
clean-dirs += $(objtree)/debian/
diff --git a/scripts/package/builddeb b/scripts/package/builddeb
index 0bc87473f68f..9dd31f5d5395 100755
--- a/scripts/package/builddeb
+++ b/scripts/package/builddeb
@@ -30,67 +30,11 @@ create_package() {
chmod -R a+rX "$pdir"
# Create the package
- dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch}" -p$pname -P"$pdir"
+ dpkg-gencontrol -p$pname -P"$pdir"
dpkg --build "$pdir" ..
}
-set_debarch() {
- # Attempt to find the correct Debian architecture
- case "$UTS_MACHINE" in
- i386|ia64|alpha)
- debarch="$UTS_MACHINE" ;;
- x86_64)
- debarch=amd64 ;;
- sparc*)
- debarch=sparc ;;
- s390*)
- debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;;
- ppc*)
- debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;;
- parisc*)
- debarch=hppa ;;
- mips*)
- debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;;
- aarch64|arm64)
- debarch=arm64 ;;
- arm*)
- if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then
- if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then
- debarch=armhf
- else
- debarch=armel
- fi
- else
- debarch=arm
- fi
- ;;
- *)
- debarch=$(dpkg --print-architecture)
- echo "" >&2
- echo "** ** ** WARNING ** ** **" >&2
- echo "" >&2
- echo "Your architecture doesn't have its equivalent" >&2
- echo "Debian userspace architecture defined!" >&2
- echo "Falling back to using your current userspace instead!" >&2
- echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
- echo "" >&2
- esac
- if [ -n "$KBUILD_DEBARCH" ] ; then
- debarch="$KBUILD_DEBARCH"
- fi
- forcearch="-DArchitecture=$debarch"
-
-}
-
-# Some variables and settings used throughout the script
version=$KERNELRELEASE
-revision=$(cat .version)
-if [ -n "$KDEB_PKGVERSION" ]; then
- packageversion=$KDEB_PKGVERSION
-else
- packageversion=$version-$revision
-fi
-sourcename=$KDEB_SOURCENAME
tmpdir="$objtree/debian/tmp"
kernel_headers_dir="$objtree/debian/hdrtmp"
libc_headers_dir="$objtree/debian/headertmp"
@@ -99,9 +43,6 @@ packagename=linux-image-$version
kernel_headers_packagename=linux-headers-$version
libc_headers_packagename=linux-libc-dev
dbg_packagename=$packagename-dbg
-debarch=
-forcearch=
-set_debarch
if [ "$ARCH" = "um" ] ; then
packagename=user-mode-linux-$version
@@ -212,105 +153,6 @@ EOF
chmod 755 "$tmpdir/DEBIAN/$script"
done
-# Try to determine maintainer and email values
-if [ -n "$DEBEMAIL" ]; then
- email=$DEBEMAIL
-elif [ -n "$EMAIL" ]; then
- email=$EMAIL
-else
- email=$(id -nu)@$(hostname -f 2>/dev/null || hostname)
-fi
-if [ -n "$DEBFULLNAME" ]; then
- name=$DEBFULLNAME
-elif [ -n "$NAME" ]; then
- name=$NAME
-else
- name="Anonymous"
-fi
-maintainer="$name <$email>"
-
-# Try to determine distribution
-if [ -n "$KDEB_CHANGELOG_DIST" ]; then
- distribution=$KDEB_CHANGELOG_DIST
-# In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog
-elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then
- : # nothing to do in this case
-else
- distribution="unstable"
- echo >&2 "Using default distribution of 'unstable' in the changelog"
- echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly"
-fi
-
-# Generate a simple changelog template
-cat <<EOF > debian/changelog
-$sourcename ($packageversion) $distribution; urgency=low
-
- * Custom built Linux kernel.
-
- -- $maintainer $(date -R)
-EOF
-
-# Generate copyright file
-cat <<EOF > debian/copyright
-This is a packacked upstream version of the Linux kernel.
-
-The sources may be found at most Linux archive sites, including:
-https://www.kernel.org/pub/linux/kernel
-
-Copyright: 1991 - 2017 Linus Torvalds and others.
-
-The git repository for mainline kernel development is at:
-git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; version 2 dated June, 1991.
-
-On Debian GNU/Linux systems, the complete text of the GNU General Public
-License version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
-EOF
-
-
-build_depends="bc, kmod, cpio "
-
-# Generate a control file
-cat <<EOF > debian/control
-Source: $sourcename
-Section: kernel
-Priority: optional
-Maintainer: $maintainer
-Build-Depends: $build_depends
-Homepage: http://www.kernel.org/
-EOF
-
-if [ "$ARCH" = "um" ]; then
- cat <<EOF >> debian/control
-
-Package: $packagename
-Architecture: any
-Description: User Mode Linux kernel, version $version
- User-mode Linux is a port of the Linux kernel to its own system call
- interface. It provides a kind of virtual machine, which runs Linux
- as a user process under another Linux kernel. This is useful for
- kernel development, sandboxes, jails, experimentation, and
- many other things.
- .
- This package contains the Linux kernel, modules and corresponding other
- files, version: $version.
-EOF
-
-else
- cat <<EOF >> debian/control
-
-Package: $packagename
-Architecture: any
-Description: Linux kernel, version $version
- This package contains the Linux kernel, modules and corresponding other
- files, version: $version.
-EOF
-
-fi
-
# Build kernel header package
(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles"
(cd $srctree; find arch/*/include include scripts -type f) >> "$objtree/debian/hdrsrcfiles"
@@ -331,27 +173,6 @@ mkdir -p "$destdir"
ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build"
rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles"
-cat <<EOF >> debian/control
-
-Package: $kernel_headers_packagename
-Architecture: any
-Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch}
- This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch}
- .
- This is useful for people who need to build external modules
-EOF
-
-cat <<EOF >> debian/control
-
-Package: $libc_headers_packagename
-Section: devel
-Provides: linux-kernel-headers
-Architecture: any
-Description: Linux support headers for userspace development
- This package provides userspaces headers from the Linux kernel. These headers
- are used by the installed headers for GNU glibc and other system libraries.
-EOF
-
if [ "$ARCH" != "um" ]; then
create_package "$kernel_headers_packagename" "$kernel_headers_dir"
create_package "$libc_headers_packagename" "$libc_headers_dir"
@@ -370,47 +191,7 @@ if [ -n "$BUILD_DEBUG" ] ; then
ln -s ../lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/boot/vmlinux-$version
# kdump-tools
ln -s lib/modules/$version/vmlinux $dbg_dir/usr/lib/debug/vmlinux-$version
-
- cat <<EOF >> debian/control
-
-Package: $dbg_packagename
-Section: debug
-Architecture: any
-Description: Linux kernel debugging symbols for $version
- This package will come in handy if you need to debug the kernel. It provides
- all the necessary debug symbols for the kernel and its modules.
-EOF
-
create_package "$dbg_packagename" "$dbg_dir"
fi
-if [ "x$1" = "xdeb-pkg" ]
-then
- cat <<EOF > debian/rules
-#!/usr/bin/make -f
-
-build:
- \$(MAKE)
-
-binary-arch:
- \$(MAKE) KDEB_SOURCENAME=${sourcename} KDEB_PKGVERSION=${packageversion} bindeb-pkg
-
-clean:
- rm -rf debian/*tmp debian/files
- mv debian/ debian.backup # debian/ might be cleaned away
- \$(MAKE) clean
- mv debian.backup debian
-
-binary: binary-arch
-EOF
- mv ${sourcename}.tar.gz ../${sourcename}_${version}.orig.tar.gz
- tar caf ../${sourcename}_${packageversion}.debian.tar.gz debian/{copyright,rules,changelog,control}
- dpkg-source -cdebian/control -ldebian/changelog --format="3.0 (custom)" --target-format="3.0 (quilt)" \
- -b / ../${sourcename}_${version}.orig.tar.gz ../${sourcename}_${packageversion}.debian.tar.gz
- mv ${sourcename}_${packageversion}*dsc ..
- dpkg-genchanges > ../${sourcename}_${packageversion}_${debarch}.changes
-else
- dpkg-genchanges -b > ../${sourcename}_${packageversion}_${debarch}.changes
-fi
-
exit 0
diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian
new file mode 100755
index 000000000000..a151646a2c99
--- /dev/null
+++ b/scripts/package/mkdebian
@@ -0,0 +1,191 @@
+#!/bin/sh
+#
+# Copyright 2003 Wichert Akkerman <wichert@wiggy.net>
+#
+# Simple script to generate a debian/ directory for a Linux kernel.
+
+set -e
+
+set_debarch() {
+ # Attempt to find the correct Debian architecture
+ case "$UTS_MACHINE" in
+ i386|ia64|alpha)
+ debarch="$UTS_MACHINE" ;;
+ x86_64)
+ debarch=amd64 ;;
+ sparc*)
+ debarch=sparc ;;
+ s390*)
+ debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;;
+ ppc*)
+ debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;;
+ parisc*)
+ debarch=hppa ;;
+ mips*)
+ debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;;
+ aarch64|arm64)
+ debarch=arm64 ;;
+ arm*)
+ if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG; then
+ if grep -q CONFIG_VFP=y $KCONFIG_CONFIG; then
+ debarch=armhf
+ else
+ debarch=armel
+ fi
+ else
+ debarch=arm
+ fi
+ ;;
+ *)
+ debarch=$(dpkg --print-architecture)
+ echo "" >&2
+ echo "** ** ** WARNING ** ** **" >&2
+ echo "" >&2
+ echo "Your architecture doesn't have its equivalent" >&2
+ echo "Debian userspace architecture defined!" >&2
+ echo "Falling back to using your current userspace instead!" >&2
+ echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
+ echo "" >&2
+ esac
+ if [ -n "$KBUILD_DEBARCH" ] ; then
+ debarch="$KBUILD_DEBARCH"
+ fi
+}
+
+# Some variables and settings used throughout the script
+version=$KERNELRELEASE
+if [ -n "$KDEB_PKGVERSION" ]; then
+ packageversion=$KDEB_PKGVERSION
+else
+ revision=$(cat .version 2>/dev/null||echo 1)
+ packageversion=$version-$revision
+fi
+sourcename=$KDEB_SOURCENAME
+packagename=linux-image-$version
+kernel_headers_packagename=linux-headers-$version
+dbg_packagename=$packagename-dbg
+debarch=
+set_debarch
+
+if [ "$ARCH" = "um" ] ; then
+ packagename=user-mode-linux-$version
+fi
+
+# Try to determine maintainer and email values
+if [ -n "$DEBEMAIL" ]; then
+ email=$DEBEMAIL
+elif [ -n "$EMAIL" ]; then
+ email=$EMAIL
+else
+ email=$(id -nu)@$(hostname -f 2>/dev/null || hostname)
+fi
+if [ -n "$DEBFULLNAME" ]; then
+ name=$DEBFULLNAME
+elif [ -n "$NAME" ]; then
+ name=$NAME
+else
+ name="Anonymous"
+fi
+maintainer="$name <$email>"
+
+# Try to determine distribution
+if [ -n "$KDEB_CHANGELOG_DIST" ]; then
+ distribution=$KDEB_CHANGELOG_DIST
+# In some cases lsb_release returns the codename as n/a, which breaks dpkg-parsechangelog
+elif distribution=$(lsb_release -cs 2>/dev/null) && [ -n "$distribution" ] && [ "$distribution" != "n/a" ]; then
+ : # nothing to do in this case
+else
+ distribution="unstable"
+ echo >&2 "Using default distribution of 'unstable' in the changelog"
+ echo >&2 "Install lsb-release or set \$KDEB_CHANGELOG_DIST explicitly"
+fi
+
+mkdir -p debian/
+echo $debarch > debian/arch
+
+# Generate a simple changelog template
+cat <<EOF > debian/changelog
+$sourcename ($packageversion) $distribution; urgency=low
+
+ * Custom built Linux kernel.
+
+ -- $maintainer $(date -R)
+EOF
+
+# Generate copyright file
+cat <<EOF > debian/copyright
+This is a packacked upstream version of the Linux kernel.
+
+The sources may be found at most Linux archive sites, including:
+https://www.kernel.org/pub/linux/kernel
+
+Copyright: 1991 - 2017 Linus Torvalds and others.
+
+The git repository for mainline kernel development is at:
+git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 dated June, 1991.
+
+On Debian GNU/Linux systems, the complete text of the GNU General Public
+License version 2 can be found in \`/usr/share/common-licenses/GPL-2'.
+EOF
+
+# Generate a control file
+cat <<EOF > debian/control
+Source: $sourcename
+Section: kernel
+Priority: optional
+Maintainer: $maintainer
+Build-Depends: bc, kmod, cpio
+Homepage: http://www.kernel.org/
+
+Package: $packagename
+Architecture: $debarch
+Description: Linux kernel, version $version
+ This package contains the Linux kernel, modules and corresponding other
+ files, version: $version.
+
+Package: $kernel_headers_packagename
+Architecture: $debarch
+Description: Linux kernel headers for $version on $debarch
+ This package provides kernel header files for $version on $debarch
+ .
+ This is useful for people who need to build external modules
+
+Package: linux-libc-dev
+Section: devel
+Provides: linux-kernel-headers
+Architecture: $debarch
+Description: Linux support headers for userspace development
+ This package provides userspaces headers from the Linux kernel. These headers
+ are used by the installed headers for GNU glibc and other system libraries.
+
+Package: $dbg_packagename
+Section: debug
+Architecture: $debarch
+Description: Linux kernel debugging symbols for $version
+ This package will come in handy if you need to debug the kernel. It provides
+ all the necessary debug symbols for the kernel and its modules.
+EOF
+
+cat <<EOF > debian/rules
+#!/usr/bin/make -f
+
+build:
+ \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC=
+
+binary-arch:
+ \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC= intdeb-pkg
+
+clean:
+ rm -rf debian/*tmp debian/files
+ mv debian/ debian.backup # debian/ might be cleaned away
+ \$(MAKE) clean
+ mv debian.backup debian
+
+binary: binary-arch
+EOF
+
+exit 0
--
2.11.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v3] scripts/package/builddeb: split generating packaging and build
2017-10-02 10:43 [PATCH v3] scripts/package/builddeb: split generating packaging and build riku.voipio
@ 2017-10-04 9:12 ` Masahiro Yamada
2017-10-04 10:38 ` Riku Voipio
0 siblings, 1 reply; 5+ messages in thread
From: Masahiro Yamada @ 2017-10-04 9:12 UTC (permalink / raw)
To: Riku Voipio; +Cc: Linux Kbuild mailing list, debian-kernel
Hi Riku,
2017-10-02 19:43 GMT+09:00 <riku.voipio@linaro.org>:
> From: Riku Voipio <riku.voipio@linaro.org>
>
> Move debian/ directory generation out of builddeb to a new script,
> mkdebian. The package build commands are kept in builddeb, which
> is now an internal command called from debian/rules.
>
> With these changes in place, we can now use dpkg-buildpackage from
> deb-pkg and bindeb-pkg removing need for handrolled source/changes
> generation.
>
> This patch is based on the criticism of the current state of builddeb
> discussed on:
>
> https://patchwork.kernel.org/patch/9656403/
>
> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
> ---
> changes since v2:
> - revert back to intdeb-pkg target
> - fix parellel builds from deb-pkg targets
No. Not fixed.
I see the same problem for bindeb-pkg as in v2.
"make deb-pkg" gave me tons of warnings, then finally fails to build:
rm -rf debian/*tmp debian/files
mv debian/ debian.backup # debian/ might be cleaned away
make clean
mv debian.backup debian
dpkg-source -i.git -b linux
dpkg-source: warning: no source format specified in
debian/source/format, see dpkg-source(1)
dpkg-source: info: using source format '1.0'
dpkg-source: warning: source directory 'linux' is not
<sourcepackage>-<upstreamversion> 'linux-4.13.0+-4.13.0+'
dpkg-source: warning: .orig directory name linux.orig is not
<package>-<upstreamversion> (wanted linux-4.13.0+-4.13.0+.orig)
dpkg-source: info: building linux-4.13.0+ using existing
linux-4.13.0+_4.13.0+.orig.tar.gz
dpkg-source: info: building linux-4.13.0+ in linux-4.13.0+_4.13.0+-7.diff.gz
dpkg-source: warning: ignoring deletion of file .scmversion, use
--include-removal to override
dpkg-source: warning: ignoring deletion of directory drivers/lguest
dpkg-source: warning: ignoring deletion of file
drivers/video/console/fbcon_rotate.h, use --include-removal to
override
dpkg-source: warning: ignoring deletion of file
drivers/video/console/fbcon.h, use --include-removal to override
dpkg-source: warning: ignoring deletion of file
drivers/video/console/fbcon_cw.c, use --include-removal to override
dpkg-source: warning: ignoring deletion of file
drivers/video/console/fbcon_rotate.c, use --include-removal to
override
dpkg-source: warning: ignoring deletion of file
drivers/video/console/fbcon.c, use --include-removal to override
...
dpkg-source: info: use the '3.0 (quilt)' format to have separate and
documented changes to upstream files, see dpkg-source(1)
dpkg-source: error: unrepresentable changes to source
Do you have a clue?
> +cat <<EOF > debian/rules
> +#!/usr/bin/make -f
> +
> +build:
> + \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC=
> +
> +binary-arch:
> + \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC= intdeb-pkg
> +
> +clean:
> + rm -rf debian/*tmp debian/files
> + mv debian/ debian.backup # debian/ might be cleaned away
> + \$(MAKE) clean
> + mv debian.backup debian
"mv debian debian.backup" is unnecessary, I think.
I think you saw
clean-dirs += $(objtree)/debian/
in scripts/package/Makefile.
Please notice this is cleaned-up by "make mrproper"
because Kbuild does not descend under scripts/ for "make clean".
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3] scripts/package/builddeb: split generating packaging and build
2017-10-04 9:12 ` Masahiro Yamada
@ 2017-10-04 10:38 ` Riku Voipio
2017-10-05 8:05 ` Masahiro Yamada
2017-10-05 17:45 ` Ritesh Raj Sarraf
0 siblings, 2 replies; 5+ messages in thread
From: Riku Voipio @ 2017-10-04 10:38 UTC (permalink / raw)
To: Masahiro Yamada; +Cc: Linux Kbuild mailing list, debian-kernel
On 4 October 2017 at 12:12, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> Hi Riku,
> 2017-10-02 19:43 GMT+09:00 <riku.voipio@linaro.org>:
>> From: Riku Voipio <riku.voipio@linaro.org>
>>
>> Move debian/ directory generation out of builddeb to a new script,
>> mkdebian. The package build commands are kept in builddeb, which
>> is now an internal command called from debian/rules.
>>
>> With these changes in place, we can now use dpkg-buildpackage from
>> deb-pkg and bindeb-pkg removing need for handrolled source/changes
>> generation.
>>
>> This patch is based on the criticism of the current state of builddeb
>> discussed on:
>>
>> https://patchwork.kernel.org/patch/9656403/
>>
>> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
>> ---
>> changes since v2:
>> - revert back to intdeb-pkg target
>> - fix parellel builds from deb-pkg targets
> No. Not fixed.
> I see the same problem for bindeb-pkg as in v2.
The parallel build overload? I'm totally puzzled then. Debian is still
stuck with make 4.1, so I guess there is a change in behaviour on
later makes.
> "make deb-pkg" gave me tons of warnings, then finally fails to build:
> rm -rf debian/*tmp debian/files
> mv debian/ debian.backup # debian/ might be cleaned away
> make clean
> mv debian.backup debian
> dpkg-source -i.git -b linux
> dpkg-source: warning: no source format specified in
> debian/source/format, see dpkg-source(1)
> dpkg-source: info: using source format '1.0'
> dpkg-source: warning: source directory 'linux' is not
> <sourcepackage>-<upstreamversion> 'linux-4.13.0+-4.13.0+'
> dpkg-source: warning: .orig directory name linux.orig is not
> <package>-<upstreamversion> (wanted linux-4.13.0+-4.13.0+.orig)
> dpkg-source: info: building linux-4.13.0+ using existing
> linux-4.13.0+_4.13.0+.orig.tar.gz
> dpkg-source: info: building linux-4.13.0+ in linux-4.13.0+_4.13.0+-7.diff.gz
> dpkg-source: warning: ignoring deletion of file .scmversion, use
> --include-removal to override
> dpkg-source: warning: ignoring deletion of directory drivers/lguest
> dpkg-source: warning: ignoring deletion of file
> drivers/video/console/fbcon_rotate.h, use --include-removal to
> override
> dpkg-source: warning: ignoring deletion of file
> drivers/video/console/fbcon.h, use --include-removal to override
> dpkg-source: warning: ignoring deletion of file
> drivers/video/console/fbcon_cw.c, use --include-removal to override
> dpkg-source: warning: ignoring deletion of file
> drivers/video/console/fbcon_rotate.c, use --include-removal to
> override
> dpkg-source: warning: ignoring deletion of file
> drivers/video/console/fbcon.c, use --include-removal to override
>
>
> ...
>
>
> dpkg-source: info: use the '3.0 (quilt)' format to have separate and
> documented changes to upstream files, see dpkg-source(1)
> dpkg-source: error: unrepresentable changes to source
>
>
> Do you have a clue?
It looks like making the tarball (or renaming it) failed, and
dpkg-source picked up and older orig.tar.gz with same name. I think a
full log would be useful here, because there probably is bug here in
my patch.
>> +cat <<EOF > debian/rules
>> +#!/usr/bin/make -f
>> +
>> +build:
>> + \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC=
>> +
>> +binary-arch:
>> + \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC= intdeb-pkg
>> +
>> +clean:
>> + rm -rf debian/*tmp debian/files
>> + mv debian/ debian.backup # debian/ might be cleaned away
>> + \$(MAKE) clean
>> + mv debian.backup debian
>
>
> "mv debian debian.backup" is unnecessary, I think.
>
>
> I think you saw
>
> clean-dirs += $(objtree)/debian/
>
> in scripts/package/Makefile.
> Please notice this is cleaned-up by "make mrproper"
> because Kbuild does not descend under scripts/ for "make clean".
That is how it was in the old version of builddeb as well. I'll submit
another patch to remove the mv-in-clean hack.
Riku
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3] scripts/package/builddeb: split generating packaging and build
2017-10-04 10:38 ` Riku Voipio
@ 2017-10-05 8:05 ` Masahiro Yamada
2017-10-05 17:45 ` Ritesh Raj Sarraf
1 sibling, 0 replies; 5+ messages in thread
From: Masahiro Yamada @ 2017-10-05 8:05 UTC (permalink / raw)
To: Riku Voipio; +Cc: Linux Kbuild mailing list, debian-kernel
Hi Riku,
2017-10-04 19:38 GMT+09:00 Riku Voipio <riku.voipio@linaro.org>:
> On 4 October 2017 at 12:12, Masahiro Yamada
> <yamada.masahiro@socionext.com> wrote:
>> Hi Riku,
>
>> 2017-10-02 19:43 GMT+09:00 <riku.voipio@linaro.org>:
>>> From: Riku Voipio <riku.voipio@linaro.org>
>>>
>>> Move debian/ directory generation out of builddeb to a new script,
>>> mkdebian. The package build commands are kept in builddeb, which
>>> is now an internal command called from debian/rules.
>>>
>>> With these changes in place, we can now use dpkg-buildpackage from
>>> deb-pkg and bindeb-pkg removing need for handrolled source/changes
>>> generation.
>>>
>>> This patch is based on the criticism of the current state of builddeb
>>> discussed on:
>>>
>>> https://patchwork.kernel.org/patch/9656403/
>>>
>>> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
>>> ---
>>> changes since v2:
>>> - revert back to intdeb-pkg target
>>> - fix parellel builds from deb-pkg targets
>
>> No. Not fixed.
>
>> I see the same problem for bindeb-pkg as in v2.
>
> The parallel build overload?
Yes.
> I'm totally puzzled then. Debian is still
> stuck with make 4.1, so I guess there is a change in behaviour on
> later makes.
Can you test the patch with GNU Make 4.2 or newer?
You can download tarballs
https://ftp.gnu.org/gnu/make/
The build process is pretty easy,
./configure, make, make install, as usual.
>> "make deb-pkg" gave me tons of warnings, then finally fails to build:
>
>> rm -rf debian/*tmp debian/files
>> mv debian/ debian.backup # debian/ might be cleaned away
>> make clean
>> mv debian.backup debian
>> dpkg-source -i.git -b linux
>> dpkg-source: warning: no source format specified in
>> debian/source/format, see dpkg-source(1)
>> dpkg-source: info: using source format '1.0'
>> dpkg-source: warning: source directory 'linux' is not
>> <sourcepackage>-<upstreamversion> 'linux-4.13.0+-4.13.0+'
>> dpkg-source: warning: .orig directory name linux.orig is not
>> <package>-<upstreamversion> (wanted linux-4.13.0+-4.13.0+.orig)
>> dpkg-source: info: building linux-4.13.0+ using existing
>> linux-4.13.0+_4.13.0+.orig.tar.gz
>> dpkg-source: info: building linux-4.13.0+ in linux-4.13.0+_4.13.0+-7.diff.gz
>> dpkg-source: warning: ignoring deletion of file .scmversion, use
>> --include-removal to override
>> dpkg-source: warning: ignoring deletion of directory drivers/lguest
>> dpkg-source: warning: ignoring deletion of file
>> drivers/video/console/fbcon_rotate.h, use --include-removal to
>> override
>> dpkg-source: warning: ignoring deletion of file
>> drivers/video/console/fbcon.h, use --include-removal to override
>> dpkg-source: warning: ignoring deletion of file
>> drivers/video/console/fbcon_cw.c, use --include-removal to override
>> dpkg-source: warning: ignoring deletion of file
>> drivers/video/console/fbcon_rotate.c, use --include-removal to
>> override
>> dpkg-source: warning: ignoring deletion of file
>> drivers/video/console/fbcon.c, use --include-removal to override
>>
>>
>> ...
>>
>>
>> dpkg-source: info: use the '3.0 (quilt)' format to have separate and
>> documented changes to upstream files, see dpkg-source(1)
>> dpkg-source: error: unrepresentable changes to source
>>
>>
>> Do you have a clue?
>
> It looks like making the tarball (or renaming it) failed, and
> dpkg-source picked up and older orig.tar.gz with same name. I think a
> full log would be useful here, because there probably is bug here in
> my patch.
I saw this build failure some times,
but I cannot reproduce it today.
I have not tracked down the condition it happens under.
I will save the log if it happens next time.
>>> +cat <<EOF > debian/rules
>>> +#!/usr/bin/make -f
>>> +
>>> +build:
>>> + \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC=
>>> +
>>> +binary-arch:
>>> + \$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} KBUILD_SRC= intdeb-pkg
>>> +
>>> +clean:
>>> + rm -rf debian/*tmp debian/files
>>> + mv debian/ debian.backup # debian/ might be cleaned away
>>> + \$(MAKE) clean
>>> + mv debian.backup debian
>>
>>
>> "mv debian debian.backup" is unnecessary, I think.
>>
>>
>> I think you saw
>>
>> clean-dirs += $(objtree)/debian/
>>
>> in scripts/package/Makefile.
>
>> Please notice this is cleaned-up by "make mrproper"
>> because Kbuild does not descend under scripts/ for "make clean".
>
> That is how it was in the old version of builddeb as well. I'll submit
> another patch to remove the mv-in-clean hack.
Yes, please do so.
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3] scripts/package/builddeb: split generating packaging and build
2017-10-04 10:38 ` Riku Voipio
2017-10-05 8:05 ` Masahiro Yamada
@ 2017-10-05 17:45 ` Ritesh Raj Sarraf
1 sibling, 0 replies; 5+ messages in thread
From: Ritesh Raj Sarraf @ 2017-10-05 17:45 UTC (permalink / raw)
To: linux-kbuild
On Wed, 2017-10-04 at 13:38 +0300, Riku Voipio wrote:
> > I see the same problem for bindeb-pkg as in v2.
>
> The parallel build overload? I'm totally puzzled then. Debian is
> still
> stuck with make 4.1, so I guess there is a change in behaviour on
> later makes.
>
> > "make deb-pkg" gave me tons of warnings, then finally fails to
> > build:
I have seen similar fork bombs when using kernel-package to build the
kernel. And no, I couldn't much debug back then.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=807574
At that time, realizing that the upstream kernel has a bindeb-pkg
target, was a big relief.
--
Given the large number of mailing lists I follow, I request you to CC
me in replies for quicker response
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-10-05 18:05 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-02 10:43 [PATCH v3] scripts/package/builddeb: split generating packaging and build riku.voipio
2017-10-04 9:12 ` Masahiro Yamada
2017-10-04 10:38 ` Riku Voipio
2017-10-05 8:05 ` Masahiro Yamada
2017-10-05 17:45 ` Ritesh Raj Sarraf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).