1515create_package () {
1616 local pname=" $1 " pdir=" $2 "
1717
18+ mkdir -m 755 -p " $pdir /DEBIAN"
19+ mkdir -p " $pdir /usr/share/doc/$pname "
1820 cp debian/copyright " $pdir /usr/share/doc/$pname /"
1921 cp debian/changelog " $pdir /usr/share/doc/$pname /changelog.Debian"
2022 gzip -9 " $pdir /usr/share/doc/$pname /changelog.Debian"
@@ -25,8 +27,13 @@ create_package() {
2527 chown -R root:root " $pdir "
2628 chmod -R go-w " $pdir "
2729
30+ # Create the package
31+ dpkg-gencontrol $forcearch -Vkernel:debarch=" ${debarch} " -p$pname -P" $pdir "
32+ dpkg --build " $pdir " ..
33+ }
34+
35+ set_debarch () {
2836 # Attempt to find the correct Debian architecture
29- local forcearch=" " debarch=" "
3037 case " $UTS_MACHINE " in
3138 i386|ia64|alpha)
3239 debarch=" $UTS_MACHINE " ;;
@@ -45,8 +52,18 @@ create_package() {
4552 arm64)
4653 debarch=arm64 ;;
4754 arm* )
48- debarch=arm$( grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;;
55+ if grep -q CONFIG_AEABI=y $KCONFIG_CONFIG ; then
56+ if grep -q CONFIG_VFP=y $KCONFIG_CONFIG ; then
57+ debarch=armhf
58+ else
59+ debarch=armel
60+ fi
61+ else
62+ debarch=arm
63+ fi
64+ ;;
4965 * )
66+ debarch=$( dpkg --print-architecture)
5067 echo " " >&2
5168 echo " ** ** ** WARNING ** ** **" >&2
5269 echo " " >&2
@@ -59,13 +76,8 @@ create_package() {
5976 if [ -n " $KBUILD_DEBARCH " ] ; then
6077 debarch=" $KBUILD_DEBARCH "
6178 fi
62- if [ -n " $debarch " ] ; then
63- forcearch=" -DArchitecture=$debarch "
64- fi
79+ forcearch=" -DArchitecture=$debarch "
6580
66- # Create the package
67- dpkg-gencontrol $forcearch -Vkernel:debarch=" ${debarch:- $(dpkg --print-architecture)} " -p$pname -P" $pdir "
68- dpkg --build " $pdir " ..
6981}
7082
7183# Some variables and settings used throughout the script
@@ -76,6 +88,7 @@ if [ -n "$KDEB_PKGVERSION" ]; then
7688else
7789 packageversion=$version -$revision
7890fi
91+ sourcename=$KDEB_SOURCENAME
7992tmpdir=" $objtree /debian/tmp"
8093fwdir=" $objtree /debian/fwtmp"
8194kernel_headers_dir=" $objtree /debian/hdrtmp"
@@ -86,6 +99,9 @@ fwpackagename=linux-firmware-image-$version
8699kernel_headers_packagename=linux-headers-$version
87100libc_headers_packagename=linux-libc-dev
88101dbg_packagename=$packagename -dbg
102+ debarch=
103+ forcearch=
104+ set_debarch
89105
90106if [ " $ARCH " = " um" ] ; then
91107 packagename=user-mode-linux-$version
@@ -108,26 +124,15 @@ esac
108124BUILD_DEBUG=" $( grep -s ' ^CONFIG_DEBUG_INFO=y' $KCONFIG_CONFIG || true) "
109125
110126# Setup the directory structure
111- rm -rf " $tmpdir " " $fwdir " " $kernel_headers_dir " " $libc_headers_dir " " $dbg_dir "
127+ rm -rf " $tmpdir " " $fwdir " " $kernel_headers_dir " " $libc_headers_dir " " $dbg_dir " $objtree /debian/files
112128mkdir -m 755 -p " $tmpdir /DEBIAN"
113- mkdir -p " $tmpdir /lib" " $tmpdir /boot" " $tmpdir /usr/share/doc/$packagename "
114- mkdir -m 755 -p " $fwdir /DEBIAN"
115- mkdir -p " $fwdir /lib/firmware/$version /" " $fwdir /usr/share/doc/$fwpackagename "
116- mkdir -m 755 -p " $libc_headers_dir /DEBIAN"
117- mkdir -p " $libc_headers_dir /usr/share/doc/$libc_headers_packagename "
118- mkdir -m 755 -p " $kernel_headers_dir /DEBIAN"
119- mkdir -p " $kernel_headers_dir /usr/share/doc/$kernel_headers_packagename "
129+ mkdir -p " $tmpdir /lib" " $tmpdir /boot"
130+ mkdir -p " $fwdir /lib/firmware/$version /"
120131mkdir -p " $kernel_headers_dir /lib/modules/$version /"
121- if [ " $ARCH " = " um" ] ; then
122- mkdir -p " $tmpdir /usr/lib/uml/modules/$version " " $tmpdir /usr/bin"
123- fi
124- if [ -n " $BUILD_DEBUG " ] ; then
125- mkdir -p " $dbg_dir /usr/share/doc/$dbg_packagename "
126- mkdir -m 755 -p " $dbg_dir /DEBIAN"
127- fi
128132
129133# Build and install the kernel
130134if [ " $ARCH " = " um" ] ; then
135+ mkdir -p " $tmpdir /usr/lib/uml/modules/$version " " $tmpdir /usr/bin" " $tmpdir /usr/share/doc/$packagename "
131136 $MAKE linux
132137 cp System.map " $tmpdir /usr/lib/uml/modules/$version /System.map"
133138 cp $KCONFIG_CONFIG " $tmpdir /usr/share/doc/$packagename /config"
@@ -143,6 +148,22 @@ else
143148 cp arch/$ARCH /boot/$KBUILD_IMAGE " $tmpdir /$installed_image_path "
144149fi
145150
151+ if grep -q " ^CONFIG_OF=y" $KCONFIG_CONFIG ; then
152+ mkdir -p " $tmpdir /boot/dtbs/$version "
153+ # Only some architectures with OF support have this target
154+ if grep -q dtbs_install " ${srctree} /arch/$SRCARCH /Makefile" ; then
155+ $MAKE KBUILD_SRC= INSTALL_DTBS_PATH=" $tmpdir /boot/dtbs/$version " dtbs_install
156+ else
157+ $MAKE KBUILD_SRC= dtbs
158+ find arch/arm/boot/ -iname " *.dtb" -exec cp -v ' {}' " $tmpdir /boot/dtbs/$version " \;
159+ fi
160+
161+ # make dtbs_install seems to add an .old directory
162+ if [ -d " $tmpdir /boot/dtbs/$version .old" ] ; then
163+ rm -rf " $tmpdir /boot/dtbs/$version .old"
164+ fi
165+ fi
166+
146167if grep -q ' ^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
147168 INSTALL_MOD_PATH=" $tmpdir " $MAKE KBUILD_SRC= modules_install
148169 rm -f " $tmpdir /lib/modules/$version /build"
@@ -162,6 +183,12 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
162183 # then add a link to those
163184 $OBJCOPY --add-gnu-debuglink=$dbg_dir /usr/lib/debug/$module $tmpdir /$module
164185 done
186+
187+ # resign stripped modules
188+ MODULE_SIG_ALL=" $( grep -s ' ^CONFIG_MODULE_SIG_ALL=y' $KCONFIG_CONFIG || true) "
189+ if [ -n " $MODULE_SIG_ALL " ]; then
190+ INSTALL_MOD_PATH=" $tmpdir " $MAKE KBUILD_SRC= modules_sign
191+ fi
165192 fi
166193fi
167194
@@ -206,7 +233,7 @@ if [ -n "$DEBEMAIL" ]; then
206233elif [ -n " $EMAIL " ]; then
207234 email=$EMAIL
208235else
209- email=$( id -nu) @$( hostname -f)
236+ email=$( id -nu) @$( hostname -f 2> /dev/null || hostname )
210237fi
211238if [ -n " $DEBFULLNAME " ]; then
212239 name=$DEBFULLNAME
230257
231258# Generate a simple changelog template
232259cat << EOF > debian/changelog
233- linux-upstream ($packageversion ) $distribution ; urgency=low
260+ $sourcename ($packageversion ) $distribution ; urgency=low
234261
235262 * Custom built Linux kernel.
236263
@@ -257,12 +284,16 @@ On Debian GNU/Linux systems, the complete text of the GNU General Public
257284License version 2 can be found in \` /usr/share/common-licenses/GPL-2'.
258285EOF
259286
287+
288+ build_depends=" bc, kmod, cpio "
289+
260290# Generate a control file
261291cat << EOF > debian/control
262- Source: linux-upstream
292+ Source: $sourcename
263293Section: kernel
264294Priority: optional
265295Maintainer: $maintainer
296+ Build-Depends: $build_depends
266297Standards-Version: 3.8.4
267298Homepage: http://www.kernel.org/
268299EOF
383414 create_package " $dbg_packagename " " $dbg_dir "
384415fi
385416
417+ if [ " x$1 " = " xdeb-pkg" ]
418+ then
419+ cat << EOF > debian/rules
420+ #!/usr/bin/make -f
421+
422+ build:
423+ \$ (MAKE)
424+
425+ binary-arch:
426+ \$ (MAKE) KDEB_SOURCENAME=${sourcename} KDEB_PKGVERSION=${packageversion} bindeb-pkg
427+
428+ clean:
429+ rm -rf debian/*tmp debian/files
430+ mv debian/ debian.backup # debian/ might be cleaned away
431+ \$ (MAKE) clean
432+ mv debian.backup debian
433+
434+ binary: binary-arch
435+ EOF
436+ mv ${sourcename} .tar.gz ../${sourcename} _${version} .orig.tar.gz
437+ tar caf ../${sourcename} _${packageversion} .debian.tar.gz debian/{copyright,rules,changelog,control}
438+ dpkg-source -cdebian/control -ldebian/changelog --format=" 3.0 (custom)" --target-format=" 3.0 (quilt)" \
439+ -b / ../${sourcename} _${version} .orig.tar.gz ../${sourcename} _${packageversion} .debian.tar.gz
440+ mv ${sourcename} _${packageversion} * dsc ..
441+ dpkg-genchanges > ../${sourcename} _${packageversion} _${debarch} .changes
442+ else
443+ dpkg-genchanges -b > ../${sourcename} _${packageversion} _${debarch} .changes
444+ fi
445+
386446exit 0
0 commit comments