build/kernel: (re)generate mtree file for later use

This commit is contained in:
Franco Fichtner 2018-10-12 19:26:06 +02:00
parent 1ca88f0d6c
commit f90365b32b
3 changed files with 52 additions and 23 deletions

View File

@ -493,6 +493,27 @@ build_marker()
echo "${REPO_VERSION}-${PRODUCT_ARCH}" > "${MARKER}/${1}"
}
setup_version()
{
VERSIONDIR="${1}/${2}/usr/local/opnsense/version"
# clear previous in case of rename
rm -rf ${VERSIONDIR}
mkdir -p ${VERSIONDIR}
if [ ${2} = "base" ]; then
# XXX obsolete file handling
fi
# embed version info into target file
echo ${REPO_VERSION}-${PRODUCT_ARCH} > ${VERSIONDIR}/${3}
# mtree generation must come LAST
mtree -c -k uid,gid,mode,size,sha256digest -p ${1}/${2} > ${1}/mtree
mv ${1}/mtree ${VERSIONDIR}/${3}.mtree
chmod 600 ${VERSIONDIR}/${3}.mtree
}
setup_base()
{
echo ">>> Setting up world in ${1}"

View File

@ -60,34 +60,42 @@ __MAKE_CONF=
${ENV_FILTER} make -s -C${SRCDIR} -j${CPUS} buildkernel ${MAKE_ARGS} NO_KERNELCLEAN=yes
${ENV_FILTER} make -s -C${SRCDIR}/release obj ${MAKE_ARGS}
# XXX remove me later
build_marker kernel
# reset the distribution directory
KERNEL_DISTDIR="$(make -C${SRCDIR}/release -V DISTDIR)/${SELF}"
KERNEL_OBJDIR="$(make -C${SRCDIR}/release -V .OBJDIR)"
setup_stage "${KERNEL_OBJDIR}/${KERNEL_DISTDIR}"
# remove older object archives, too
KERNEL_OBJ=$(make -C${SRCDIR}/release -V .OBJDIR)/kernel.txz
DEBUG_OBJ=$(make -C${SRCDIR}/release -V .OBJDIR)/kernel-dbg.txz
rm -f ${KERNEL_OBJ} ${DEBUG_OBJ}
# We used kernel.txz because we did not rewrite it,
# but as time went on and version info was embedded
# for tighter signature verification handling it is
# a convoluted action, but the archive gives us a
# full update set so we repack it instead of using
# src-related commands here too loosely...
${ENV_FILTER} make -s -C${SRCDIR}/release kernel.txz ${MAKE_ARGS}
sh ./clean.sh ${SELF}
setup_stage ${STAGEDIR} work
tar -C ${STAGEDIR}/work -xjpf ${KERNEL_OBJ}
echo ">>> Generating kernel set:"
if [ -z "$(test -f ${DEBUG_OBJ} && tar -tf ${DEBUG_OBJ})" ]; then
echo ">>> Generating release kernel set:"
KERNEL_SET=${KERNEL_RELEASE_SET}
else
tar -C ${STAGEDIR}/work -xjpf ${DEBUG_OBJ}
echo ">>> Generating debug kernel set:"
tar -C ${STAGEDIR}/work -xJpf ${KERNEL_OBJ}
KERNEL_SET=${KERNEL_RELEASE_SET}
if [ -n "$(test -f ${DEBUG_OBJ} && tar -tf ${DEBUG_OBJ})" ]; then
tar -C ${STAGEDIR}/work -xJpf ${DEBUG_OBJ}
KERNEL_SET=${KERNEL_DEBUG_SET}
fi
setup_version ${STAGEDIR} work ${SELF}
rm -f ${KERNEL_OBJ} ${DEBUG_OBJ}
# XXX mtree magic
tar -C ${STAGEDIR}/work -cvf - . | xz > ${KERNEL_SET}
generate_signature ${KERNEL_SET}

View File

@ -39,14 +39,14 @@ for ARG in ${@}; do
${IMAGESDIR}/${PRODUCT_NAME}${PRODUCT_SUFFIX}-${PRODUCT_VERSION}-${PRODUCT_FLAVOUR}-arm-${PRODUCT_ARCH}.img
;;
base)
setup_stage ${STAGEDIR}
setup_stage ${STAGEDIR} work
echo ">>> Repacking base set..."
BASE_SET=$(find ${SETSDIR} -name "base-*-${PRODUCT_ARCH}.txz")
tar -C ${STAGEDIR} -xjf ${BASE_SET}
echo ${PRODUCT_VERSION}-${PRODUCT_ARCH} > \
${STAGEDIR}/usr/local/opnsense/version/base
tar -C ${STAGEDIR}/work -xJpf ${BASE_SET}
REPO_VERSION=${PRODUCT_VERSION}
setup_version ${STAGEDIR} work ${ARG}
rm ${BASE_SET}
tar -C ${STAGEDIR} -cvf - . | xz > ${BASE_SET}
tar -C ${STAGEDIR}/work -cvf - . | xz > ${BASE_SET}
generate_signature ${BASE_SET}
echo ">>> Renaming base set: ${PRODUCT_VERSION}"
for FILE in $(find ${SETSDIR} -name \
@ -65,14 +65,14 @@ for ARG in ${@}; do
${IMAGESDIR}/${PRODUCT_NAME}${PRODUCT_SUFFIX}-${PRODUCT_VERSION}-${PRODUCT_FLAVOUR}-dvd-${PRODUCT_ARCH}.iso
;;
kernel)
setup_stage ${STAGEDIR}
setup_stage ${STAGEDIR} work
echo ">>> Repacking kernel set..."
KERNEL_SET=$(find ${SETSDIR} -name "kernel-*-${PRODUCT_ARCH}.txz")
tar -C ${STAGEDIR} -xjf ${KERNEL_SET}
echo ${PRODUCT_VERSION}-${PRODUCT_ARCH} > \
${STAGEDIR}/usr/local/opnsense/version/kernel
tar -C ${STAGEDIR}/work -xJpf ${KERNEL_SET}
REPO_VERSION=${PRODUCT_VERSION}
setup_version ${STAGEDIR} work ${ARG}
rm ${KERNEL_SET}
tar -C ${STAGEDIR} -cvf - . | xz > ${KERNEL_SET}
tar -C ${STAGEDIR}/work -cvf - . | xz > ${KERNEL_SET}
generate_signature ${KERNEL_SET}
echo ">>> Renaming kernel set: ${PRODUCT_VERSION}"
for FILE in $(find ${SETSDIR} -name \