diff options
Diffstat (limited to 'scripts/package/builddeb')
| -rw-r--r-- | scripts/package/builddeb | 51 | 
1 files changed, 32 insertions, 19 deletions
diff --git a/scripts/package/builddeb b/scripts/package/builddeb index 90e521fde35..35d5a5877d0 100644 --- a/scripts/package/builddeb +++ b/scripts/package/builddeb @@ -35,15 +35,17 @@ create_package() {  	sparc*)  		debarch=sparc ;;  	s390*) -		debarch=s390 ;; +		debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;;  	ppc*)  		debarch=powerpc ;;  	parisc*)  		debarch=hppa ;;  	mips*) -		debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el) ;; +		debarch=mips$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo el || true) ;; +	arm64) +		debarch=arm64 ;;  	arm*) -		debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el) ;; +		debarch=arm$(grep -q CONFIG_AEABI=y $KCONFIG_CONFIG && echo el || true) ;;  	*)  		echo "" >&2  		echo "** ** **  WARNING  ** ** **" >&2 @@ -62,7 +64,7 @@ create_package() {  	fi  	# Create the package -	dpkg-gencontrol -isp $forcearch -p$pname -P"$pdir" +	dpkg-gencontrol -isp $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir"  	dpkg --build "$pdir" ..  } @@ -130,7 +132,7 @@ if [ "$ARCH" = "um" ] ; then  	cp System.map "$tmpdir/usr/lib/uml/modules/$version/System.map"  	cp $KCONFIG_CONFIG "$tmpdir/usr/share/doc/$packagename/config"  	gzip "$tmpdir/usr/share/doc/$packagename/config" -else  +else  	cp System.map "$tmpdir/boot/System.map-$version"  	cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version"  fi @@ -155,11 +157,11 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then  			for module in $(find lib/modules/ -name *.ko); do  				mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)  				# only keep debug symbols in the debug file -				objcopy --only-keep-debug $module $dbg_dir/usr/lib/debug/$module +				$OBJCOPY --only-keep-debug $module $dbg_dir/usr/lib/debug/$module  				# strip original module from debug symbols -				objcopy --strip-debug $module +				$OBJCOPY --strip-debug $module  				# then add a link to those -				objcopy --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module +				$OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module  			done  		)  	fi @@ -172,8 +174,15 @@ fi  # Install the maintainer scripts  # Note: hook scripts under /etc/kernel are also executed by official Debian -# kernel packages, as well as kernel packages built using make-kpkg +# kernel packages, as well as kernel packages built using make-kpkg. +# make-kpkg sets $INITRD to indicate whether an initramfs is wanted, and +# so do we; recent versions of dracut and initramfs-tools will obey this.  debhookdir=${KDEB_HOOKDIR:-/etc/kernel} +if grep -q '^CONFIG_BLK_DEV_INITRD=y' $KCONFIG_CONFIG; then +	want_initrd=Yes +else +	want_initrd=No +fi  for script in postinst postrm preinst prerm ; do  	mkdir -p "$tmpdir$debhookdir/$script.d"  	cat <<EOF > "$tmpdir/DEBIAN/$script" @@ -184,6 +193,9 @@ set -e  # Pass maintainer script parameters to hook scripts  export DEB_MAINT_PARAMS="\$*" +# Tell initramfs builder whether it's wanted +export INITRD=$want_initrd +  test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d  exit 0  EOF @@ -277,26 +289,27 @@ EOF  fi -# Build header package -(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles") -(cd $srctree; find arch/$SRCARCH/include include scripts -type f >> "$objtree/debian/hdrsrcfiles") -(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f >> "$objtree/debian/hdrobjfiles") +# Build kernel header package +(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles" +(cd $srctree; find arch/$SRCARCH/include include scripts -type f) >> "$objtree/debian/hdrsrcfiles" +(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles" +(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles" +(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles"  destdir=$kernel_headers_dir/usr/src/linux-headers-$version  mkdir -p "$destdir" -(cd $srctree; tar -c -f - -T "$objtree/debian/hdrsrcfiles") | (cd $destdir; tar -xf -) -(cd $objtree; tar -c -f - -T "$objtree/debian/hdrobjfiles") | (cd $destdir; tar -xf -) +(cd $srctree; tar -c -f - -T -) < "$objtree/debian/hdrsrcfiles" | (cd $destdir; tar -xf -) +(cd $objtree; tar -c -f - -T -) < "$objtree/debian/hdrobjfiles" | (cd $destdir; tar -xf -)  (cd $objtree; cp $KCONFIG_CONFIG $destdir/.config) # copy .config manually to be where it's expected to be  ln -sf "/usr/src/linux-headers-$version" "$kernel_headers_dir/lib/modules/$version/build"  rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" -arch=$(dpkg --print-architecture)  cat <<EOF >> debian/control  Package: $kernel_headers_packagename  Provides: linux-headers, linux-headers-2.6 -Architecture: $arch -Description: Linux kernel headers for $KERNELRELEASE on $arch - This package provides kernel header files for $KERNELRELEASE on $arch +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  | 
