Skip to content

Commit 78ce75b

Browse files
committed
backports: bindeb-pkg: from: linux.git
Reference: v5.10.25 Signed-off-by: Robert Nelson <[email protected]>
1 parent d3ddfc1 commit 78ce75b

File tree

4 files changed

+126
-66
lines changed

4 files changed

+126
-66
lines changed

scripts/package/builddeb

Lines changed: 74 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -26,34 +26,90 @@ if_enabled_echo() {
2626

2727
create_package() {
2828
local pname="$1" pdir="$2"
29+
local dpkg_deb_opts
2930

3031
mkdir -m 755 -p "$pdir/DEBIAN"
3132
mkdir -p "$pdir/usr/share/doc/$pname"
3233
cp debian/copyright "$pdir/usr/share/doc/$pname/"
3334
cp debian/changelog "$pdir/usr/share/doc/$pname/changelog.Debian"
34-
gzip -9 "$pdir/usr/share/doc/$pname/changelog.Debian"
35+
gzip -n -9 "$pdir/usr/share/doc/$pname/changelog.Debian"
3536
sh -c "cd '$pdir'; find . -type f ! -path './DEBIAN/*' -printf '%P\0' \
3637
| xargs -r0 md5sum > DEBIAN/md5sums"
3738

3839
# Fix ownership and permissions
39-
chown -R root:root "$pdir"
40+
if [ "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then
41+
dpkg_deb_opts="--root-owner-group"
42+
else
43+
chown -R root:root "$pdir"
44+
fi
4045
chmod -R go-w "$pdir"
4146
# in case we are in a restrictive umask environment like 0077
4247
chmod -R a+rX "$pdir"
48+
# in case we build in a setuid/setgid directory
49+
chmod -R ug-s "$pdir"
4350

4451
# Create the package
4552
dpkg-gencontrol -p$pname -P"$pdir"
46-
dpkg --build "$pdir" ..
53+
dpkg-deb $dpkg_deb_opts ${KDEB_COMPRESS:+-Z$KDEB_COMPRESS} --build "$pdir" ..
54+
}
55+
56+
deploy_kernel_headers () {
57+
pdir=$1
58+
59+
rm -rf $pdir
60+
61+
(
62+
cd $srctree
63+
find . arch/$SRCARCH -maxdepth 1 -name Makefile\*
64+
find include scripts -type f -o -type l
65+
find arch/$SRCARCH -name Kbuild.platforms -o -name Platform
66+
find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f
67+
) > debian/hdrsrcfiles
68+
69+
{
70+
if is_enabled CONFIG_STACK_VALIDATION; then
71+
echo tools/objtool/objtool
72+
fi
73+
74+
find arch/$SRCARCH/include Module.symvers include scripts -type f
75+
76+
if is_enabled CONFIG_GCC_PLUGINS; then
77+
find scripts/gcc-plugins -name \*.so
78+
fi
79+
} > debian/hdrobjfiles
80+
81+
destdir=$pdir/usr/src/linux-headers-$version
82+
mkdir -p $destdir
83+
tar -c -f - -C $srctree -T debian/hdrsrcfiles | tar -xf - -C $destdir
84+
tar -c -f - -T debian/hdrobjfiles | tar -xf - -C $destdir
85+
rm -f debian/hdrsrcfiles debian/hdrobjfiles
86+
87+
# copy .config manually to be where it's expected to be
88+
cp $KCONFIG_CONFIG $destdir/.config
89+
90+
mkdir -p $pdir/lib/modules/$version/
91+
ln -s /usr/src/linux-headers-$version $pdir/lib/modules/$version/build
92+
}
93+
94+
deploy_libc_headers () {
95+
pdir=$1
96+
97+
rm -rf $pdir
98+
99+
$MAKE -f $srctree/Makefile headers
100+
$MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH=$pdir/usr
101+
102+
# move asm headers to /usr/include/<libc-machine>/asm to match the structure
103+
# used by Debian-based distros (to support multi-arch)
104+
host_arch=$(dpkg-architecture -a$(cat debian/arch) -qDEB_HOST_MULTIARCH)
105+
mkdir $pdir/usr/include/$host_arch
106+
mv $pdir/usr/include/asm $pdir/usr/include/$host_arch/
47107
}
48108

49109
version=$KERNELRELEASE
50-
tmpdir="$objtree/debian/tmp"
51-
kernel_headers_dir="$objtree/debian/hdrtmp"
52-
libc_headers_dir="$objtree/debian/headertmp"
53-
dbg_dir="$objtree/debian/dbgtmp"
110+
tmpdir=debian/linux-image
111+
dbg_dir=debian/linux-image-dbg
54112
packagename=linux-image-$version
55-
kernel_headers_packagename=linux-headers-$version
56-
libc_headers_packagename=linux-libc-dev
57113
dbg_packagename=$packagename-dbg
58114

59115
if [ "$ARCH" = "um" ] ; then
@@ -77,15 +133,13 @@ esac
77133
BUILD_DEBUG=$(if_enabled_echo CONFIG_DEBUG_INFO Yes)
78134

79135
# Setup the directory structure
80-
rm -rf "$tmpdir" "$kernel_headers_dir" "$libc_headers_dir" "$dbg_dir" $objtree/debian/files
136+
rm -rf "$tmpdir" "$dbg_dir" debian/files
81137
mkdir -m 755 -p "$tmpdir/DEBIAN"
82138
mkdir -p "$tmpdir/lib" "$tmpdir/boot"
83-
mkdir -p "$kernel_headers_dir/lib/modules/$version/"
84139

85-
# Build and install the kernel
140+
# Install the kernel
86141
if [ "$ARCH" = "um" ] ; then
87142
mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin" "$tmpdir/usr/share/doc/$packagename"
88-
$MAKE linux
89143
cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"
90144
cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config"
91145
gzip "$tmpdir/usr/share/doc/$packagename/config"
@@ -129,16 +183,6 @@ if is_enabled CONFIG_MODULES; then
129183
fi
130184
fi
131185

132-
if [ "$ARCH" != "um" ]; then
133-
$MAKE -f $srctree/Makefile headers
134-
$MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH="$libc_headers_dir/usr"
135-
# move asm headers to /usr/include/<libc-machine>/asm to match the structure
136-
# used by Debian-based distros (to support multi-arch)
137-
host_arch=$(dpkg-architecture -a$(cat debian/arch) -qDEB_HOST_MULTIARCH)
138-
mkdir $libc_headers_dir/usr/include/$host_arch
139-
mv $libc_headers_dir/usr/include/asm $libc_headers_dir/usr/include/$host_arch/
140-
fi
141-
142186
# Install the maintainer scripts
143187
# Note: hook scripts under /etc/kernel are also executed by official Debian
144188
# kernel packages, as well as kernel packages built using make-kpkg.
@@ -164,29 +208,14 @@ EOF
164208
chmod 755 "$tmpdir/DEBIAN/$script"
165209
done
166210

167-
# Build kernel header package
168-
(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles"
169-
(cd $srctree; find arch/*/include include scripts -type f -o -type l) >> "$objtree/debian/hdrsrcfiles"
170-
(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles"
171-
(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles"
172-
if is_enabled CONFIG_STACK_VALIDATION; then
173-
(cd $objtree; find tools/objtool -type f -executable) >> "$objtree/debian/hdrobjfiles"
174-
fi
175-
(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles"
176-
if is_enabled CONFIG_GCC_PLUGINS; then
177-
(cd $objtree; find scripts/gcc-plugins -name \*.so -o -name gcc-common.h) >> "$objtree/debian/hdrobjfiles"
178-
fi
179-
destdir=$kernel_headers_dir/usr/src/linux-headers-$version
180-
mkdir -p "$destdir"
181-
(cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -)
182-
(cd $objtree; tar -c -f - -T -) < "$objtree/debian/hdrobjfiles" | (cd $destdir; tar -xf -)
183-
(cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be
184-
ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build"
185-
rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles"
186-
187211
if [ "$ARCH" != "um" ]; then
188-
create_package "$kernel_headers_packagename" "$kernel_headers_dir"
189-
create_package "$libc_headers_packagename" "$libc_headers_dir"
212+
if is_enabled CONFIG_MODULES; then
213+
deploy_kernel_headers debian/linux-headers
214+
create_package linux-headers-$version debian/linux-headers
215+
fi
216+
217+
deploy_libc_headers debian/linux-libc-dev
218+
create_package linux-libc-dev debian/linux-libc-dev
190219
fi
191220

192221
create_package "$packagename" "$tmpdir"

scripts/package/buildtar

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# SPDX-License-Identifier: GPL-2.0
33

44
#
5-
# buildtar 0.0.4
5+
# buildtar 0.0.5
66
#
77
# (C) 2004-2006 by Jan-Benedict Glaw <[email protected]>
88
#
@@ -24,7 +24,7 @@ tarball="${objtree}/linux-${KERNELRELEASE}-${ARCH}.tar"
2424
# Figure out how to compress, if requested at all
2525
#
2626
case "${1}" in
27-
tar-pkg)
27+
dir-pkg|tar-pkg)
2828
opts=
2929
;;
3030
targz-pkg)
@@ -53,6 +53,18 @@ rm -rf -- "${tmpdir}"
5353
mkdir -p -- "${tmpdir}/boot"
5454
dirs=boot
5555

56+
57+
#
58+
# Try to install dtbs
59+
#
60+
if grep -q '^CONFIG_OF_EARLY_FLATTREE=y' include/config/auto.conf; then
61+
# Only some architectures with OF support have this target
62+
if [ -d "${srctree}/arch/${SRCARCH}/boot/dts" ]; then
63+
$MAKE ARCH="${ARCH}" -f ${srctree}/Makefile INSTALL_DTBS_PATH="${tmpdir}/boot/dtbs/${KERNELRELEASE}" dtbs_install
64+
fi
65+
fi
66+
67+
5668
#
5769
# Try to install modules
5870
#
@@ -125,6 +137,10 @@ case "${ARCH}" in
125137
;;
126138
esac
127139

140+
if [ "${1}" = dir-pkg ]; then
141+
echo "Kernel tree successfully created in $tmpdir"
142+
exit 0
143+
fi
128144

129145
#
130146
# Create the tarball

scripts/package/mkdebian

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -94,16 +94,16 @@ else
9494
packageversion=$version-$revision
9595
fi
9696
sourcename=$KDEB_SOURCENAME
97-
packagename=linux-image-$version
98-
kernel_headers_packagename=linux-headers-$version
99-
dbg_packagename=$packagename-dbg
100-
debarch=
101-
set_debarch
10297

10398
if [ "$ARCH" = "um" ] ; then
104-
packagename=user-mode-linux-$version
99+
packagename=user-mode-linux
100+
else
101+
packagename=linux-image
105102
fi
106103

104+
debarch=
105+
set_debarch
106+
107107
email=${DEBEMAIL-$EMAIL}
108108

109109
# use email string directly if it contains <email>
@@ -174,22 +174,16 @@ Source: $sourcename
174174
Section: kernel
175175
Priority: optional
176176
Maintainer: $maintainer
177+
Rules-Requires-Root: no
177178
Build-Depends: bc, rsync, kmod, cpio, bison, flex | flex:native $extra_build_depends
178-
Homepage: http://www.kernel.org/
179+
Homepage: https://www.kernel.org/
179180
180-
Package: $packagename
181+
Package: $packagename-$version
181182
Architecture: $debarch
182183
Description: Linux kernel, version $version
183184
This package contains the Linux kernel, modules and corresponding other
184185
files, version: $version.
185186
186-
Package: $kernel_headers_packagename
187-
Architecture: $debarch
188-
Description: Linux kernel headers for $version on $debarch
189-
This package provides kernel header files for $version on $debarch
190-
.
191-
This is useful for people who need to build external modules
192-
193187
Package: linux-libc-dev
194188
Section: devel
195189
Provides: linux-kernel-headers
@@ -198,25 +192,46 @@ Description: Linux support headers for userspace development
198192
This package provides userspaces headers from the Linux kernel. These headers
199193
are used by the installed headers for GNU glibc and other system libraries.
200194
Multi-Arch: same
195+
EOF
201196

202-
Package: $dbg_packagename
197+
if is_enabled CONFIG_MODULES; then
198+
cat <<EOF >> debian/control
199+
200+
Package: linux-headers-$version
201+
Architecture: $debarch
202+
Description: Linux kernel headers for $version on $debarch
203+
This package provides kernel header files for $version on $debarch
204+
.
205+
This is useful for people who need to build external modules
206+
EOF
207+
fi
208+
209+
if is_enabled CONFIG_DEBUG_INFO; then
210+
cat <<EOF >> debian/control
211+
212+
Package: linux-image-$version-dbg
203213
Section: debug
204214
Architecture: $debarch
205215
Description: Linux kernel debugging symbols for $version
206216
This package will come in handy if you need to debug the kernel. It provides
207217
all the necessary debug symbols for the kernel and its modules.
208218
EOF
219+
fi
209220

210221
cat <<EOF > debian/rules
211222
#!$(command -v $MAKE) -f
212223
213224
srctree ?= .
214225
215-
build:
226+
build-indep:
227+
build-arch:
216228
\$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \
217229
KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile
218230
219-
binary-arch:
231+
build: build-arch
232+
233+
binary-indep:
234+
binary-arch: build-arch
220235
\$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \
221236
KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile intdeb-pkg
222237

scripts/package/mkspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
4646
License: GPL
4747
Group: System Environment/Kernel
4848
Vendor: The Linux Community
49-
URL: http://www.kernel.org
49+
URL: https://www.kernel.org
5050
$S Source: kernel-$__KERNELRELEASE.tar.gz
5151
Provides: $PROVIDES
5252
%define __spec_install_post /usr/lib/rpm/brp-compress || :

0 commit comments

Comments
 (0)