@@ -26,34 +26,90 @@ if_enabled_echo() {
2626
2727create_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
49109version=$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
54112packagename=linux-image-$version
55- kernel_headers_packagename=linux-headers-$version
56- libc_headers_packagename=linux-libc-dev
57113dbg_packagename=$packagename -dbg
58114
59115if [ " $ARCH " = " um" ] ; then
@@ -77,15 +133,13 @@ esac
77133BUILD_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
81137mkdir -m 755 -p " $tmpdir /DEBIAN"
82138mkdir -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
86141if [ " $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
130184fi
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 "
165209done
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-
187211if [ " $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
190219fi
191220
192221create_package " $packagename " " $tmpdir "
0 commit comments