#!/usr/local/bin/cbsd
#v10.0.3
CBSDMODULE="build"
MYARG=""
MYOPTARG="ver arch target_arch maxjobs clean name stable basename stable destdir"
MYDESC="Build kernel from sources"
ADDHELP="10.0 for FreeBSD 10.0-R or ver=. for current.\n\
stable=1 for RELENG_X\n\
destdir= for alternative install path in root dir\n"

. ${subrdir}/nc.subr
. ${cbsdinit}

over="${ver}"
oarch="${arch}"

. ${subrdir}/build.subr
readconf buildworld.conf
. ${system}
. ${subrdir}/universe.subr
. ${subrdir}/emulator.subr

destdir_arg="${destdir}"
unset destdir # this variable used in init_kerneldir

init_distcc
init_notify
init_target_arch
init_srcdir
init_supported_arch
init_basedir

LOCKFILE=${ftmpdir}/$( /sbin/md5 -qs ${MAKEOBJDIRPREFIX} ).lock

init_kerneldir

kernel_conf="${platform}-kernel-${name}-${arch}-${ver}"

if [ -f "${etcdir}/${kernel_conf}" ]; then
	kernel_conf_path="${etcdir}/${kernel_conf}"
else
	kernel_conf_path="${etcdir}/defaults/${kernel_conf}"
fi

[ ! -f "${kernel_conf_path}" ] && err 1 "${N1_COLOR}No such config ${kernel_conf_path} in: ${N2_COLOR}${etcdir}${N0_COLOR}"

cp ${kernel_conf_path} ${SRC_DIR}/sys/${arch}/conf/${name}.CBSD
#makelock $LOCKFILE "rm -f ${SRC_DIR}/sys/${arch}/conf/${name}.CBSD"

## preparing chroot
TMPDST="${basejaildir}/tempbase.$$"
mkdir -p ${TMPDST}

makelock $LOCKFILE "rm -f ${SRC_DIR}/sys/${arch}/conf/${name}.CBSD && umount -f ${TMPDST}${MAKEOBJDIRPREFIX} && umount -f ${TMPDST}/dev && umount -f ${TMPDST}/${SRC_DIR} && ${CHFLAGS_CMD} -R noschg ${TMPDST} && /bin/rm -rf ${TMPDST}"

baserw=1
populate_cdir ${BASE_DIR} ${TMPDST}
cp ${kernel_conf_path} ${SRC_DIR}/sys/${arch}/conf/${name}.CBSD

# place for rewrite to mountbase from system.subr
mkdir -p ${TMPDST}/${SRC_DIR}
${MOUNT_NULL_CMD} -o ro ${SRC_DIR} ${TMPDST}/${SRC_DIR}
mkdir -p ${MAKEOBJDIRPREFIX} ${TMPDST}${MAKEOBJDIRPREFIX}
mkdir -p ${TMPDST}${etcdir}
[ -f "${__MAKE_CONF}" ] && cp ${__MAKE_CONF} ${TMPDST}${etcdir}
[ -f "${SRCCONF}" ] && cp ${SRCCONF} ${TMPDST}${etcdir}
echo "${MOUNT_NULL_CMD} ${MAKEOBJDIRPREFIX} ${TMPDST}${MAKEOBJDIRPREFIX}"
${MOUNT_NULL_CMD} ${MAKEOBJDIRPREFIX} ${TMPDST}${MAKEOBJDIRPREFIX}

#echo "${MOUNT_NULL_CMD} ${MAKEOBJDIRPREFIX}/usr/src/sys/GENERIC.CBSD ${TMPDST}${MAKEOBJDIRPREFIX}/usr/jails/src/src_12/src/sys/GENERIC.CBSD"
#${MOUNT_NULL_CMD} ${MAKEOBJDIRPREFIX}/usr/src/sys/GENERIC.CBSD ${TMPDST}${MAKEOBJDIRPREFIX}/usr/jails/src/src_12/src/sys/GENERIC.CBSD

mount -t devfs devfs ${TMPDST}/dev
#

#echo "/usr/sbin/chroot ${TMPDST} /usr/bin/make -C ${SRC_DIR} packages KERNCONF=${name}.CBSD ${NOCLEANUP} TARGET=${arch} TARGET_ARCH=${target_arch}"
#echo "/usr/sbin/chroot ${TMPDST} /usr/bin/make -C ${SRC_DIR} create-kernel-packages KERNCONF=${name}.CBSD ${NOCLEANUP} TARGET=${arch} TARGET_ARCH=${target_arch}"
#/usr/bin/make -C ${SRC_DIR} packages KERNCONF=${name}.CBSD
#/usr/bin/make -C ${SRC_DIR} create-kernel-packages KERNCONF=${name}.CBSD
#/usr/bin/make -C ${SRC_DIR} packagekernel KERNCONF=${name}.CBSD
#echo "1"
/usr/bin/make -C ${SRC_DIR} create-packages

${ECHO} "New repository available via: ${N2_COLOR}${SRC_DIR}/src/repo/FreeBSD:12:amd64/latest"

#/usr/bin/make -C ${SRC_DIR} sign-packages
#/usr/bin/make -C ${SRC_DIR} package-pkg

#read p
#/usr/sbin/chroot ${TMPDST} /usr/bin/make -C /usr/src packages KERNCONF=${name}.CBSD ${NOCLEANUP} TARGET=${arch} TARGET_ARCH="${target_arch}"

#[ -n "${destdir_arg}" ] && KERNEL_DIR="${destdir_arg}"
#[ -d "${KERNEL_DIR}/boot/kernel" ] && rm -rf ${KERNEL_DIR}/boot/kernel
#[ ! -d "${KERNEL_DIR}/boot" ] && mkdir -p ${KERNEL_DIR}/boot
#mv ${TMPDST}/boot/kernel ${KERNEL_DIR}/boot/kernel
#/usr/bin/make -C ${SRC_DIR} installkernel TARGET=${arch} KERNCONF=${name}.CBSD DESTDIR=${KERNEL_DIR} TARGET_ARCH="${target_arch}"
