#!/bin/bash
#
# arm/build
# Check package dependencies, set metadata and launch
# package build script.
# by Stuart Winter <mozes@slackware.com>
#
source /usr/share/slackdev/buildkit.sh

echo "*********************************************************"
echo "*** DID YOU WIPE THE OLD KERNELS from slackware/a ??? ***"
echo "*********************************************************"
#sleep 30

# If it's an -rc release, remove the hyphen and rename
# the source archive.  It makes packaging and scripting all play happily.
# Also make sure you comment out the $VERSION vs Makefile version
# check in kernel.SlackBuild
# Release candidates don't include "rc" in the 4.4.x kernels
#export VERSION=${VERSION:-4.13.0rc2next20170728}
#export VERSION=${VERSION:-4.13.0rc3}
#export VERSION=${VERSION:-4.13.0}
export VERSION=${VERSION:-5.15.21}

# A stable release:
# With Linux 3.x, it always has a 3 digit number - e.g. 3.2.0 rather than just 3.2:
# You also need to change the version in kernel-source.SlackBuild
#export VERSION=${VERSION:-4.10.0next20170224}
#export VERSION=${VERSION:-4.9.3}
export BUILD=${BUILD:-1}
export PKGSERIES=${PKGSERIES:-a}

# If building in /patches for a Stable Release, we drop the packages into /tmp/patches/
slack_findpkgstore_is_stablerelease && {
    export PKGSTORE=/tmp/
    export PKGSERIES=patches
    mkdir -vpm755 $PKGSTORE/$PKGSERIES
    echo "*** Building on a Stable release - resulting packages will be dropped in to $PKGSTORE/$PKGSERIES **" ;}

# Select the kernel to build.  As we have a single Kernel per architecture,
# we'll take the setting from slackkit.
# We also set the *Linux* Kernel architecture name, since it's
# "arm" for armv7/32bit
# "arm64" for armv7/64bit/aarch64
case $SLKPORTARCH in
   arm)     export SLKKERNELARCH="armv7"
            export LINUXKERNELARCH="arm"
            export ARCH="arm" ;;
   aarch64) export SLKKERNELARCH="armv8"
            export LINUXKERNELARCH="arm64"
            export ARCH="arm64" ;;
esac

# Assume we want to build a Versatile Kernel if we did not
# specify any particular arch type:
#if [ -z "$1" ]; then
#   # For this package only, we use branded hardware names as the $ARCH: riscpc, iyonix, cats, netwinder, riscstation
#   # export SLKKERNELARCH=riscpc
#   export SLKKERNELARCH=armv7
# else
#   export SLKKERNELARCH=$1
#fi

# Ensure build dependencies are met:
# We require Das U-Boot 'mkimage' tool to build the 'uImage' Kernels
# for the ARM Kirkwood and other platforms using the U-Boot Linux loader.
{ slackcheckpkgdeps u-boot-tools || installpkg $PKGSTORE/a/u-boot-tools-?[0-9]*.t?z || exit 99 ; }
# udev, mdadm & lvm2 are included in the initrd so we need them installed
# on the system (the mkinitrd script takes the versions from the running system)
{ slackcheckpkgdeps eudev || installpkg $PKGSTORE/a/eudev-[0-9]*.t?z || exit 99 ; }
{ slackcheckpkgdeps mdadm || installpkg $PKGSTORE/a/mdadm-[0-9]*.t?z || exit 99 ; }
{ slackcheckpkgdeps lvm2 || installpkg $PKGSTORE/a/lvm2-[0-9]*.t?z || exit 99 ; }
# DTC (Device Tree Compiler) is needed for ARM kernels since Linux 3.7.
{ slackcheckpkgdeps device-tree-compiler || installpkg $PKGSTORE/d/device-tree-compiler-[0-9]*.t?z || exit 99 ; }
# We use rsync to keep the DTBs in place:
{ slackcheckpkgdeps rsync || installpkg $PKGSTORE/n/rsync-[0-9]*.t?z || exit 99 ; }

export PKGNAM=kernel_$SLKKERNELARCH
export SLACKPACKAGE=$PKGNAM-$VERSION-$PKGARCH-$BUILD.txz

# Launch the package build script:
BUILDLOG=$SLKPORTARCH-$( basename $SLACKPACKAGE .t?z ).build.log
( ./kernel.SlackBuild ) >& /dev/stdout | tee $BUILDLOG || exit 1

# Compress the build log:
bzip2 -9fvz $BUILDLOG
