#!/usr/bin/env bash
USAGE="
DESCRIPTION:
Preparing folder 'import/' using the export package from NuttX kernel
build.
USAGE: $0 [-d] [-z] [-l <ext>] -x <export-package>
Where:
-d enable debugging output
-h show this help message
-l <ext> extension of library file (default is .a)
-x <export-package> export package file name
-z expect gzip compressed tar ball
"
unset EXPORT
unset TGZ
LIBEXT=.a
while [ ! -z "$1" ]; do
case $1 in
-d )
set -x
;;
-l )
shift
LIBEXT=$1
;;
-x )
shift
EXPORT=$(realpath $1)
;;
-z )
TGZ=y
;;
-h )
echo "$USAGE"
exit 0
;;
* )
echo "ERROR: Unrecognized argument: $1"
echo $USAGE
exit 1
;;
esac
shift
done
if [ -z "${EXPORT}" ]; then
echo "ERROR: Missing required argument"
echo $USAGE
exit 1
fi
if [ ! -f "${EXPORT}" ]; then
echo "ERROR: Export file does not exist at ${EXPORT}"
exit 1
fi
if [ ! -d import ]; then
cd .. || { echo "ERROR: cd .. failed"; exit 1; }
if [ ! -d import ]; then
echo "ERROR: This script must be executed from the top-level apps/ directory"
exit 1
fi
fi
WD=${PWD}
IMPORTDIR=${WD}/import
BUILTINDIR=${WD}/builtin
DARCHDIR=${IMPORTDIR}/arch
DINCDIR=${IMPORTDIR}/include
DLIBDIR=${IMPORTDIR}/libs
DSCRIPTSDIR=${IMPORTDIR}/scripts
DSTARTDIR=${IMPORTDIR}/startup
DTOOLSDIR=${IMPORTDIR}/tools
TMPDIR=${IMPORTDIR}/tmp
DALLDIRS="${DARCHDIR} ${DINCDIR} ${DLIBDIR} ${DSCRIPTSDIR} ${DSTARTDIR} ${DTOOLSDIR} ${TMPDIR}"
rm -rf ${DALLDIRS}
mkdir ${TMPDIR} || \
{ echo "ERROR: Failed to create ${TMPDIR}"; exit 1; }
if [ "X${TGZ}" == "Xy" ]; then
tar zxf ${EXPORT} -C ${TMPDIR} || \
{ echo "ERROR: tar zxf ${EXPORT} failed"; exit 1; }
else
unzip ${EXPORT} -d ${TMPDIR} || \
{ echo "ERROR: unzip ${EXPORT} failed"; exit 1; }
fi
cd ${TMPDIR} || \
{ echo "ERROR: Failed to cd to ${TMPDIR}"; exit 1; }
EXPORTDIR=`ls`
if [ -z "${EXPORTDIR}" ]; then
echo "ERROR: Nothing was unpacked"
exit 1
fi
if [ ! -d "${EXPORTDIR}" ]; then
echo "ERROR: No directory found after unpacking"
exit 1
fi
SARCHDIR=${EXPORTDIR}/arch
SINCDIR=${EXPORTDIR}/include
SLIBDIR=${EXPORTDIR}/libs
SSCRIPTSDIR=${EXPORTDIR}/scripts
SSTARTDIR=${EXPORTDIR}/startup
STOOLSDIR=${EXPORTDIR}/tools
REGISTERSDIR=${EXPORTDIR}/registry
unset SALLDIRS
if [ -d ${SARCHDIR} ]; then
SALLDIRS="${SALLDIRS} ${SARCHDIR}"
fi
if [ -d ${SINCDIR} ]; then
SALLDIRS="${SALLDIRS} ${SINCDIR}"
fi
if [ -d ${SLIBDIR} ]; then
SALLDIRS="${SALLDIRS} ${SLIBDIR}"
fi
if [ -d ${SSCRIPTSDIR} ]; then
SALLDIRS="${SALLDIRS} ${SSCRIPTSDIR}"
fi
if [ -d ${SSTARTDIR} ]; then
SALLDIRS="${SALLDIRS} ${SSTARTDIR}"
fi
if [ -d ${STOOLSDIR} ]; then
SALLDIRS="${SALLDIRS} ${STOOLSDIR}"
fi
mv ${SALLDIRS} ${IMPORTDIR}/. || \
{ echo "ERROR: Failed to move ${SALLDIRS} to ${IMPORTDIR}"; exit 1; }
cp -rf ${REGISTERSDIR} ${BUILTINDIR}/. || \
{ echo "ERROR: Failed to move ${REGISTERSDIR} to ${BUILTINDIR}"; exit 1; }
SFILES=".config System.map"
for file in ${SFILES}; do
if [ -f "${EXPORTDIR}/${file}" ]; then
cp -a ${EXPORTDIR}/${file} ${IMPORTDIR}/${file} || \
{ echo "ERROR: Failed to copy ${EXPORTDIR}/${file} to ${IMPORTDIR}/${file}"; exit 1; }
fi
done
cd ${WD} || { echo "ERROR: Failed to cd to ${WD}"; exit 1; }
rm -rf ${TMPDIR}