Packaging (#2844)
* New build kernel if version ge 5.12 Signed-off-by: The-going <48602507+The-going@users.noreply.github.com> * Rename packagename for kernel in the armbian style Signed-off-by: The-going <48602507+The-going@users.noreply.github.com> * Fix depends pkg for build linux-* Signed-off-by: The-going <48602507+The-going@users.noreply.github.com> * Fixed version search by Source field Signed-off-by: The-going <48602507+The-going@users.noreply.github.com> * Fix postinst, prerm scripts for headers pkg Signed-off-by: The-going <48602507+The-going@users.noreply.github.com>
This commit is contained in:
parent
ba87e0cfb8
commit
8f1fb2e2be
@ -15,12 +15,29 @@
|
||||
compilation_prepare()
|
||||
{
|
||||
|
||||
# Packaging patch for modern kernels should be one for all.
|
||||
# Packaging patch for modern kernels should be one for all.
|
||||
# Currently we have it per kernel family since we can't have one
|
||||
# Maintaining one from central location starting with 5.3+
|
||||
# Temporally set for new "default->legacy,next->current" family naming
|
||||
|
||||
if linux-version compare "${version}" ge 5.10; then
|
||||
if linux-version compare "${version}" ge 5.12; then
|
||||
|
||||
if test -d ${kerneldir}/debian
|
||||
then
|
||||
rm -rf ${kerneldir}/debian/*
|
||||
fi
|
||||
sed -i -e '
|
||||
s/^KBUILD_IMAGE := \$(boot)\/Image\.gz$/KBUILD_IMAGE := \$(boot)\/Image/
|
||||
' ${kerneldir}/arch/arm64/Makefile
|
||||
|
||||
rm -f ${kerneldir}/scripts/package/{builddeb,mkdebian}
|
||||
|
||||
cp ${SRC}/packages/armbian/builddeb ${kerneldir}/scripts/package/builddeb
|
||||
cp ${SRC}/packages/armbian/mkdebian ${kerneldir}/scripts/package/mkdebian
|
||||
|
||||
chmod 755 ${kerneldir}/scripts/package/{builddeb,mkdebian}
|
||||
|
||||
elif linux-version compare "${version}" ge 5.10; then
|
||||
display_alert "Adjusting" "packaging" "info"
|
||||
cd "$kerneldir" || exit
|
||||
process_patch_file "${SRC}/patch/misc/general-packaging-5.10.y.patch" "applying"
|
||||
|
||||
@ -272,8 +272,8 @@ install_common()
|
||||
|
||||
# install kernel
|
||||
if [[ "${REPOSITORY_INSTALL}" != *kernel* ]]; then
|
||||
VER=$(dpkg --info "${DEB_STORAGE}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" | grep Descr | awk '{print $(NF)}')
|
||||
VER="${VER/-$LINUXFAMILY/}"
|
||||
VER=$(dpkg --info "${DEB_STORAGE}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" | awk -F"-" '/Source:/{print $2}')
|
||||
|
||||
install_deb_chroot "${DEB_STORAGE}/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb"
|
||||
if [[ -f ${DEB_STORAGE}/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb ]]; then
|
||||
install_deb_chroot "${DEB_STORAGE}/${CHOSEN_KERNEL/image/dtb}_${REVISION}_${ARCH}.deb"
|
||||
|
||||
358
packages/armbian/builddeb
Executable file
358
packages/armbian/builddeb
Executable file
@ -0,0 +1,358 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# builddeb 1.3
|
||||
# Copyright 2003 Wichert Akkerman <wichert@wiggy.net>
|
||||
#
|
||||
# Simple script to generate a deb package for a Linux kernel. All the
|
||||
# complexity of what to do with a kernel after it is installed or removed
|
||||
# is left to other scripts and packages: they can install scripts in the
|
||||
# /etc/kernel/{pre,post}{inst,rm}.d/ directories (or an alternative location
|
||||
# specified in KDEB_HOOKDIR) that will be called on package install and
|
||||
# removal.
|
||||
|
||||
set -e
|
||||
|
||||
is_enabled() {
|
||||
grep -q "^$1=y" include/config/auto.conf
|
||||
}
|
||||
|
||||
if_enabled_echo() {
|
||||
if is_enabled "$1"; then
|
||||
echo -n "$2"
|
||||
elif [ $# -ge 3 ]; then
|
||||
echo -n "$3"
|
||||
fi
|
||||
}
|
||||
|
||||
create_package() {
|
||||
local pname="$1" pdir="$2"
|
||||
local dpkg_deb_opts
|
||||
|
||||
mkdir -m 755 -p "$pdir/DEBIAN"
|
||||
mkdir -p "$pdir/usr/share/doc/$pname"
|
||||
cp debian/copyright "$pdir/usr/share/doc/$pname/"
|
||||
cp debian/changelog "$pdir/usr/share/doc/$pname/changelog.Debian"
|
||||
gzip -9 "$pdir/usr/share/doc/$pname/changelog.Debian"
|
||||
sh -c "cd '$pdir'; find . -type f ! -path './DEBIAN/*' -printf '%P\0' \
|
||||
| xargs -r0 md5sum > DEBIAN/md5sums"
|
||||
|
||||
# Fix ownership and permissions
|
||||
if [ "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then
|
||||
dpkg_deb_opts="--root-owner-group"
|
||||
else
|
||||
chown -R root:root "$pdir"
|
||||
fi
|
||||
chmod -R go-w "$pdir"
|
||||
# in case we are in a restrictive umask environment like 0077
|
||||
chmod -R a+rX "$pdir"
|
||||
# in case we build in a setuid/setgid directory
|
||||
chmod -R ug-s "$pdir"
|
||||
|
||||
# Create preinstall and post install script to remove dtb
|
||||
if [ "$3" = "dtb" ]; then
|
||||
|
||||
cat >> $pdir/DEBIAN/preinst <<EOT
|
||||
rm -rf /boot/dtb
|
||||
rm -rf /boot/dtb-$version
|
||||
exit 0
|
||||
EOT
|
||||
|
||||
cat >> $pdir/DEBIAN/postinst <<EOT
|
||||
cd /boot
|
||||
ln -sfT dtb-$version dtb 2> /dev/null || mv dtb-$version dtb
|
||||
exit 0
|
||||
EOT
|
||||
|
||||
chmod 775 $pdir/DEBIAN/preinst
|
||||
chmod 775 $pdir/DEBIAN/postinst
|
||||
fi
|
||||
|
||||
# Create postinstall prerm script for headers
|
||||
if [ "$3" = "headers" ]; then
|
||||
|
||||
# Set the time for all files to the current time.
|
||||
# Clean up the executables that are left over from
|
||||
# cross-compilation for a different host architecture.
|
||||
# And build them for the current architecture.
|
||||
cat >> $pdir/DEBIAN/postinst << EOT
|
||||
cd /usr/src/linux-headers-$version
|
||||
echo "Compiling headers - please wait ..."
|
||||
find -type f -exec touch {} +
|
||||
make -j\$(grep -c 'processor' /proc/cpuinfo) M=scripts clean >/dev/null
|
||||
yes "" | make oldconfig >/dev/null
|
||||
make -j\$(grep -c 'processor' /proc/cpuinfo) -s scripts >/dev/null
|
||||
make -j\$(grep -c 'processor' /proc/cpuinfo) -s M=scripts/mod/ >/dev/null
|
||||
exit 0
|
||||
EOT
|
||||
|
||||
# After the configuration and compilation processes, new files
|
||||
# appear that the package manager does not know anything about.
|
||||
# Just clear the entire target directory.
|
||||
cat >> $pdir/DEBIAN/prerm << EOT
|
||||
cd /usr/src/linux-headers-$version
|
||||
rm -rf ./*
|
||||
exit 0
|
||||
EOT
|
||||
|
||||
chmod 775 $pdir/DEBIAN/postinst
|
||||
chmod 775 $pdir/DEBIAN/prerm
|
||||
fi
|
||||
|
||||
|
||||
# Create the package
|
||||
dpkg-gencontrol -p$pname -P"$pdir"
|
||||
dpkg-deb --build "$pdir" ..
|
||||
}
|
||||
|
||||
deploy_kernel_headers () {
|
||||
pdir=$1
|
||||
|
||||
rm -rf $pdir
|
||||
|
||||
(
|
||||
cd $srctree
|
||||
find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl
|
||||
find arch/*/include include scripts -type f -o -type l
|
||||
find security/*/include -type f
|
||||
find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform
|
||||
find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f
|
||||
) > debian/hdrsrcfiles
|
||||
|
||||
{
|
||||
if is_enabled CONFIG_STACK_VALIDATION; then
|
||||
# echo tools/objtool/objtool
|
||||
find tools/objtool -type f -executable
|
||||
fi
|
||||
|
||||
find arch/$SRCARCH/include Module.symvers include scripts -type f
|
||||
|
||||
if is_enabled CONFIG_GCC_PLUGINS; then
|
||||
find scripts/gcc-plugins -name \*.so -o -name gcc-common.h
|
||||
fi
|
||||
} > debian/hdrobjfiles
|
||||
|
||||
destdir=$pdir/usr/src/linux-headers-$version
|
||||
mkdir -p $destdir
|
||||
|
||||
(
|
||||
cd $destdir
|
||||
patch -p1 < /tmp/headers-debian-byteshift.patch
|
||||
)
|
||||
|
||||
tar -c -f - -C $srctree -T debian/hdrsrcfiles | tar -xf - -C $destdir
|
||||
tar -c -f - -T debian/hdrobjfiles | tar -xf - -C $destdir
|
||||
rm -f debian/hdrsrcfiles debian/hdrobjfiles
|
||||
|
||||
# copy .config manually to be where it's expected to be
|
||||
cp $KCONFIG_CONFIG $destdir/.config
|
||||
|
||||
mkdir -p $pdir/lib/modules/$version/
|
||||
ln -s /usr/src/linux-headers-$version $pdir/lib/modules/$version/build
|
||||
}
|
||||
|
||||
deploy_libc_headers () {
|
||||
pdir=$1
|
||||
|
||||
rm -rf $pdir
|
||||
|
||||
$MAKE -f $srctree/Makefile headers
|
||||
$MAKE -f $srctree/Makefile headers_install INSTALL_HDR_PATH=$pdir/usr
|
||||
|
||||
# move asm headers to /usr/include/<libc-machine>/asm to match the structure
|
||||
# used by Debian-based distros (to support multi-arch)
|
||||
host_arch=$(dpkg-architecture -a$(cat debian/arch) -qDEB_HOST_MULTIARCH)
|
||||
mkdir $pdir/usr/include/$host_arch
|
||||
mv $pdir/usr/include/asm $pdir/usr/include/$host_arch/
|
||||
}
|
||||
|
||||
version=$KERNELRELEASE
|
||||
tmpdir="debian/tmp"
|
||||
kernel_headers_dir="debian/hdrtmp"
|
||||
libc_headers_dir="debian/headertmp"
|
||||
dbg_dir="debian/dbgtmp"
|
||||
dtb_dir="debian/dtbtmp"
|
||||
packagename=linux-image-"$BRANCH$LOCALVERSION"
|
||||
kernel_headers_packagename=linux-headers-"$BRANCH$LOCALVERSION"
|
||||
dtb_packagename=linux-dtb-"$BRANCH$LOCALVERSION"
|
||||
libc_headers_packagename=linux-libc-dev
|
||||
dbg_packagename=$packagename-dbg
|
||||
|
||||
if [ "$ARCH" = "um" ] ; then
|
||||
packagename=user-mode-linux-$version
|
||||
fi
|
||||
|
||||
# Not all arches have the same installed path in debian
|
||||
# XXX: have each arch Makefile export a variable of the canonical image install
|
||||
# path instead
|
||||
case $ARCH in
|
||||
++aarch64|arm64)
|
||||
image_name=Image
|
||||
installed_image_path="boot/vmlinuz-$version"
|
||||
;;
|
||||
arm*)
|
||||
image_name=zImage
|
||||
installed_image_path="boot/vmlinuz-$version"
|
||||
;;
|
||||
um)
|
||||
installed_image_path="usr/bin/linux-$version"
|
||||
;;
|
||||
parisc|mips|powerpc)
|
||||
installed_image_path="boot/vmlinux-$version"
|
||||
;;
|
||||
*)
|
||||
installed_image_path="boot/vmlinuz-$version"
|
||||
esac
|
||||
|
||||
BUILD_DEBUG=$(if_enabled_echo CONFIG_DEBUG_INFO Yes)
|
||||
|
||||
# Setup the directory structure
|
||||
rm -rf "$tmpdir" "$dbg_dir" "$dtb_dir" debian/files
|
||||
mkdir -m 755 -p "$tmpdir/DEBIAN"
|
||||
mkdir -p "$tmpdir/lib" "$tmpdir/boot"
|
||||
mkdir -m 755 -p "$dtb_dir/DEBIAN"
|
||||
mkdir -p "$dtb_dir/boot/dtb-$version" "$dtb_dir/usr/share/doc/$dtb_packagename"
|
||||
mkdir -m 755 -p "$kernel_headers_dir/lib/modules/$version/"
|
||||
mkdir -m 755 -p "$libc_headers_dir/DEBIAN"
|
||||
|
||||
# Install the kernel
|
||||
if [ "$ARCH" = "um" ] ; then
|
||||
mkdir -p "$tmpdir/usr/lib/uml/modules/$version" "$tmpdir/usr/bin" "$tmpdir/usr/share/doc/$packagename"
|
||||
$MAKE linux
|
||||
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
|
||||
cp System.map "$tmpdir/boot/System.map-$version"
|
||||
cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version"
|
||||
fi
|
||||
cp "$($MAKE -s -f $srctree/Makefile image_name)" "$tmpdir/$installed_image_path"
|
||||
|
||||
if is_enabled CONFIG_OF_EARLY_FLATTREE; then
|
||||
# Only some architectures with OF support have this target
|
||||
if [ -d "${srctree}/arch/$SRCARCH/boot/dts" ]; then
|
||||
$MAKE -f $srctree/Makefile INSTALL_DTBS_PATH="$tmpdir/usr/lib/$packagename" dtbs_install
|
||||
fi
|
||||
fi
|
||||
|
||||
if grep -q '^CONFIG_OF=y' $KCONFIG_CONFIG ; then
|
||||
#mkdir -p "$tmpdir/boot/dtb"
|
||||
INSTALL_DTBS_PATH="$dtb_dir/boot/dtb-$version" $MAKE KBUILD_SRC= dtbs_install
|
||||
fi
|
||||
|
||||
if is_enabled CONFIG_MODULES; then
|
||||
INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_install
|
||||
rm -f "$tmpdir/lib/modules/$version/build"
|
||||
rm -f "$tmpdir/lib/modules/$version/source"
|
||||
if [ "$ARCH" = "um" ] ; then
|
||||
mv "$tmpdir/lib/modules/$version"/* "$tmpdir/usr/lib/uml/modules/$version/"
|
||||
rmdir "$tmpdir/lib/modules/$version"
|
||||
fi
|
||||
if [ -n "$BUILD_DEBUG" ] ; then
|
||||
for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do
|
||||
module=lib/modules/$module
|
||||
mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
|
||||
# only keep debug symbols in the debug file
|
||||
$OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/usr/lib/debug/$module
|
||||
# strip original module from debug symbols
|
||||
$OBJCOPY --strip-debug $tmpdir/$module
|
||||
# then add a link to those
|
||||
$OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $tmpdir/$module
|
||||
done
|
||||
|
||||
# resign stripped modules
|
||||
if is_enabled CONFIG_MODULE_SIG_ALL; then
|
||||
INSTALL_MOD_PATH="$tmpdir" $MAKE -f $srctree/Makefile modules_sign
|
||||
fi
|
||||
fi
|
||||
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.
|
||||
# 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}
|
||||
for script in postinst postrm preinst prerm ; do
|
||||
mkdir -p "$tmpdir$debhookdir/$script.d"
|
||||
cat <<EOF > "$tmpdir/DEBIAN/$script"
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# Pass maintainer script parameters to hook scripts
|
||||
export DEB_MAINT_PARAMS="\$*"
|
||||
|
||||
# Tell initramfs builder whether it's wanted
|
||||
export INITRD=$(if_enabled_echo CONFIG_BLK_DEV_INITRD Yes No)
|
||||
|
||||
test -d $debhookdir/$script.d && run-parts --arg="$version" --arg="/$installed_image_path" $debhookdir/$script.d
|
||||
exit 0
|
||||
EOF
|
||||
chmod 755 "$tmpdir/DEBIAN/$script"
|
||||
done
|
||||
|
||||
##
|
||||
## Create sym link to kernel image
|
||||
##
|
||||
sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/postinst
|
||||
cat >> $tmpdir/DEBIAN/postinst <<EOT
|
||||
ln -sf $(basename $installed_image_path) /boot/$image_name 2> /dev/null || mv /$installed_image_path /boot/$image_name
|
||||
touch /boot/.next
|
||||
exit 0
|
||||
EOT
|
||||
|
||||
##
|
||||
## FAT install workaround
|
||||
##
|
||||
sed -e "s/exit 0//g" -i $tmpdir/DEBIAN/preinst
|
||||
cat >> $tmpdir/DEBIAN/preinst <<EOT
|
||||
# exit if we are running chroot
|
||||
if [ "\$(stat -c %d:%i /)" != "\$(stat -c %d:%i /proc/1/root/.)" ]; then exit 0; fi
|
||||
|
||||
check_and_unmount (){
|
||||
boot_device=\$(mountpoint -d /boot)
|
||||
|
||||
for file in /dev/* ; do
|
||||
CURRENT_DEVICE=\$(printf "%d:%d" \$(stat --printf="0x%t 0x%T" \$file))
|
||||
if [[ "\$CURRENT_DEVICE" = "\$boot_device" ]]; then
|
||||
boot_partition=\$file
|
||||
break
|
||||
fi
|
||||
done
|
||||
bootfstype=\$(blkid -s TYPE -o value \$boot_partition)
|
||||
if [ "\$bootfstype" = "vfat" ]; then
|
||||
umount /boot
|
||||
rm -f /boot/System.map* /boot/config* /boot/vmlinuz* /boot/$image_name /boot/uImage
|
||||
fi
|
||||
}
|
||||
mountpoint -q /boot && check_and_unmount
|
||||
exit 0
|
||||
EOT
|
||||
|
||||
if [ "$ARCH" != "um" ]; then
|
||||
deploy_kernel_headers $kernel_headers_dir
|
||||
create_package $kernel_headers_packagename $kernel_headers_dir "headers"
|
||||
|
||||
deploy_libc_headers $libc_headers_dir
|
||||
create_package $libc_headers_packagename $libc_headers_dir
|
||||
|
||||
create_package "$dtb_packagename" "$dtb_dir" "dtb"
|
||||
fi
|
||||
|
||||
create_package "$packagename" "$tmpdir"
|
||||
|
||||
if [ -n "$BUILD_DEBUG" ] ; then
|
||||
# Build debug package
|
||||
# Different tools want the image in different locations
|
||||
# perf
|
||||
mkdir -p $dbg_dir/usr/lib/debug/lib/modules/$version/
|
||||
cp vmlinux $dbg_dir/usr/lib/debug/lib/modules/$version/
|
||||
# systemtap
|
||||
mkdir -p $dbg_dir/usr/lib/debug/boot/
|
||||
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
|
||||
create_package "$dbg_packagename" "$dbg_dir"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
254
packages/armbian/mkdebian
Executable file
254
packages/armbian/mkdebian
Executable file
@ -0,0 +1,254 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright 2003 Wichert Akkerman <wichert@wiggy.net>
|
||||
#
|
||||
# Simple script to generate a debian/ directory for a Linux kernel.
|
||||
|
||||
set -e
|
||||
|
||||
is_enabled() {
|
||||
grep -q "^$1=y" include/config/auto.conf
|
||||
}
|
||||
|
||||
if_enabled_echo() {
|
||||
if is_enabled "$1"; then
|
||||
echo -n "$2"
|
||||
elif [ $# -ge 3 ]; then
|
||||
echo -n "$3"
|
||||
fi
|
||||
}
|
||||
|
||||
set_debarch() {
|
||||
if [ -n "$KBUILD_DEBARCH" ] ; then
|
||||
debarch="$KBUILD_DEBARCH"
|
||||
return
|
||||
fi
|
||||
|
||||
# Attempt to find the correct Debian architecture
|
||||
case "$UTS_MACHINE" in
|
||||
i386|ia64|alpha|m68k|riscv*)
|
||||
debarch="$UTS_MACHINE" ;;
|
||||
x86_64)
|
||||
debarch=amd64 ;;
|
||||
sparc*)
|
||||
debarch=sparc$(if_enabled_echo CONFIG_64BIT 64) ;;
|
||||
s390*)
|
||||
debarch=s390x ;;
|
||||
ppc*)
|
||||
if is_enabled CONFIG_64BIT; then
|
||||
debarch=ppc64$(if_enabled_echo CONFIG_CPU_LITTLE_ENDIAN el)
|
||||
else
|
||||
debarch=powerpc$(if_enabled_echo CONFIG_SPE spe)
|
||||
fi
|
||||
;;
|
||||
parisc*)
|
||||
debarch=hppa ;;
|
||||
mips*)
|
||||
if is_enabled CONFIG_CPU_LITTLE_ENDIAN; then
|
||||
debarch=mips$(if_enabled_echo CONFIG_64BIT 64)$(if_enabled_echo CONFIG_CPU_MIPSR6 r6)el
|
||||
elif is_enabled CONFIG_CPU_MIPSR6; then
|
||||
debarch=mips$(if_enabled_echo CONFIG_64BIT 64)r6
|
||||
else
|
||||
debarch=mips
|
||||
fi
|
||||
;;
|
||||
aarch64|arm64)
|
||||
debarch=arm64 ;;
|
||||
arm*)
|
||||
if is_enabled CONFIG_AEABI; then
|
||||
debarch=arm$(if_enabled_echo CONFIG_VFP hf el)
|
||||
else
|
||||
debarch=arm
|
||||
fi
|
||||
;;
|
||||
openrisc)
|
||||
debarch=or1k ;;
|
||||
sh)
|
||||
if is_enabled CONFIG_CPU_SH3; then
|
||||
debarch=sh3$(if_enabled_echo CONFIG_CPU_BIG_ENDIAN eb)
|
||||
elif is_enabled CONFIG_CPU_SH4; then
|
||||
debarch=sh4$(if_enabled_echo CONFIG_CPU_BIG_ENDIAN eb)
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if [ -z "$debarch" ]; then
|
||||
debarch=$(dpkg-architecture -qDEB_HOST_ARCH)
|
||||
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 the current host architecture ($debarch)." >&2
|
||||
echo "Please add support for $UTS_MACHINE to ${0} ..." >&2
|
||||
echo "" >&2
|
||||
fi
|
||||
}
|
||||
|
||||
# Some variables and settings used throughout the script
|
||||
version=$KERNELRELEASE
|
||||
if [ -n "$KDEB_PKGVERSION" ]; then
|
||||
packageversion=$KDEB_PKGVERSION
|
||||
revision=${packageversion##*-}
|
||||
else
|
||||
revision=$(cat .version 2>/dev/null||echo 1)
|
||||
packageversion=$version-$revision
|
||||
fi
|
||||
sourcename=$KDEB_SOURCENAME
|
||||
packagename=linux-image-"$BRANCH$LOCALVERSION"
|
||||
kernel_headers_packagename=linux-headers-"$BRANCH$LOCALVERSION"
|
||||
libc_headers_packagename=linux-libc-dev
|
||||
dtb_packagename=linux-dtb-"$BRANCH$LOCALVERSION"
|
||||
dbg_packagename=$packagename-dbg
|
||||
|
||||
if [ "$ARCH" = "um" ] ; then
|
||||
packagename=user-mode-linux-$version
|
||||
fi
|
||||
|
||||
debarch=
|
||||
set_debarch
|
||||
|
||||
email=${DEBEMAIL-$EMAIL}
|
||||
|
||||
# use email string directly if it contains <email>
|
||||
if echo $email | grep -q '<.*>'; then
|
||||
maintainer=$email
|
||||
else
|
||||
# or construct the maintainer string
|
||||
user=${KBUILD_BUILD_USER-$(id -nu)}
|
||||
name=${DEBFULLNAME-$user}
|
||||
if [ -z "$email" ]; then
|
||||
buildhost=${KBUILD_BUILD_HOST-$(hostname -f 2>/dev/null || hostname)}
|
||||
email="$user@$buildhost"
|
||||
fi
|
||||
maintainer="$name <$email>"
|
||||
fi
|
||||
|
||||
# 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/source/
|
||||
echo "1.0" > debian/source/format
|
||||
|
||||
echo $debarch > debian/arch
|
||||
extra_build_depends=", $(if_enabled_echo CONFIG_UNWINDER_ORC libelf-dev:native)"
|
||||
extra_build_depends="$extra_build_depends, $(if_enabled_echo CONFIG_SYSTEM_TRUSTED_KEYRING libssl-dev:native)"
|
||||
|
||||
# Generate a simple changelog template
|
||||
cat <<EOF > debian/changelog
|
||||
$sourcename ($packageversion) $distribution; urgency=low
|
||||
|
||||
* Armbian built Linux kernel. $BRANCH
|
||||
|
||||
-- $maintainer $(date -R)
|
||||
EOF
|
||||
|
||||
# Generate copyright file
|
||||
cat <<EOF > debian/copyright
|
||||
This is a packacked armbian patches 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 - 2018 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, rsync, kmod, cpio, bison, flex | flex:native $extra_build_depends
|
||||
Homepage: https://www.kernel.org/
|
||||
|
||||
Package: $packagename
|
||||
Architecture: $debarch
|
||||
Provides: linux-image, linux-image-armbian, armbian-$BRANCH
|
||||
Description: Linux kernel, armbian version $version $BRANCH
|
||||
This package contains the Linux kernel, modules and corresponding other
|
||||
files, version: $version.
|
||||
|
||||
Package: $kernel_headers_packagename
|
||||
Section: devel
|
||||
Architecture: $debarch
|
||||
Provides: linux-headers, linux-headers-armbian, armbian-$BRANCH
|
||||
Depends: make, gcc, libc6-dev, bison, flex, libssl-dev
|
||||
Description: Linux kernel headers for $version on $debarch $BRANCH
|
||||
This package provides kernel header files for $version on $debarch
|
||||
.
|
||||
This is useful for people who need to build external modules
|
||||
|
||||
Package: $libc_headers_packagename
|
||||
Section: devel
|
||||
Provides: linux-kernel-headers
|
||||
Conflicts: linux-kernel-headers
|
||||
Replaces: linux-kernel-headers
|
||||
Architecture: $debarch
|
||||
Description: Armbian 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.
|
||||
Multi-Arch: same
|
||||
|
||||
Package: $dtb_packagename
|
||||
Architecture: $debarch
|
||||
Provides: linux-dtb, linux-dtb-armbian, armbian-$BRANCH
|
||||
Description: Armbian Linux DTB, version $version $BRANCH
|
||||
This package contains device blobs from the Linux kernel, version $version
|
||||
EOF
|
||||
|
||||
if is_enabled CONFIG_DEBUG_INFO; then
|
||||
cat <<EOF >> debian/control
|
||||
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
|
||||
fi
|
||||
|
||||
cat <<EOF > debian/rules
|
||||
#!$(command -v $MAKE) -f
|
||||
|
||||
srctree ?= .
|
||||
|
||||
build-indep:
|
||||
build-arch:
|
||||
\$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \
|
||||
KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile
|
||||
|
||||
build: build-arch
|
||||
|
||||
binary-indep:
|
||||
binary-arch: build-arch
|
||||
\$(MAKE) KERNELRELEASE=${version} ARCH=${ARCH} \
|
||||
KBUILD_BUILD_VERSION=${revision} -f \$(srctree)/Makefile intdeb-pkg
|
||||
|
||||
clean:
|
||||
rm -rf debian/*tmp debian/files
|
||||
\$(MAKE) clean
|
||||
|
||||
binary: binary-arch
|
||||
EOF
|
||||
chmod +x debian/rules
|
||||
|
||||
exit 0
|
||||
Loading…
Reference in New Issue
Block a user