build: make sure the build can cope with SUFFIX=-business

We do not want to install globs as the matching is very fuzzy and
also we no longer do.  To make sure prevent use of globs in
install_packages so we can catch this in nightly builds if it
ever happens.

While here, allow to set a VERSION for core builds which ignores
the tag-version-derivation.  It is useful for prerelease building.

Last but not least ADDITIONS should no longer look for SUFFIX so
if you want to build an image with SUFFIX=-devel and use a development
plugin overwrite ADDITIONS accordingly, e.g. ADDTIONS=os-dyndns-devel
This commit is contained in:
Franco Fichtner 2021-02-10 11:11:31 +01:00
parent dde4e340ed
commit a927e81e30
5 changed files with 20 additions and 13 deletions

View File

@ -77,7 +77,7 @@ _ARCH!= uname -p
ARCH?= ${_ARCH}
ABI?= ${SETTINGS}
KERNEL?= SMP
ADDITIONS?= os-dyndns${SUFFIX}
ADDITIONS?= os-dyndns
DEVICE?= A10
COMSPEED?= 115200
COMPORT?= 0x3f8

View File

@ -64,7 +64,7 @@ Available build options are:
* NAME: "OPNsense" (default)
* PRIVKEY: the private key for signing sets
* PUBKEY: the public key for signing sets
* SUFFIX: the suffix of top package name (empty, "-devel")
* SUFFIX: the suffix of top package name (default is empty)
* TYPE: the base name of the top package to be installed
* UEFI: use amd64 hybrid images for said images, e.g. "vga vm"
* VERSION: a version tag (if applicable)

View File

@ -153,11 +153,11 @@ while getopts ${OPTS} OPT; do
;;
U)
case "${OPTARG}" in
''|-devel)
''|-business|-devel)
export PRODUCT_SUFFIX=${OPTARG}
;;
*)
echo "SUFFIX wants empty string or '-devel'" >&2
echo "SUFFIX '${OPTARG}' is not supported" >&2
exit 1
;;
esac
@ -261,10 +261,11 @@ export PRODUCT_PUBKEY=${PRODUCT_PUBKEY:-"${CONFIGDIR}/repo.pub"}
export PRODUCT_SIGNCMD=${PRODUCT_SIGNCMD:-"${TOOLSDIR}/scripts/pkg_sign.sh ${PRODUCT_PUBKEY} ${PRODUCT_PRIVKEY}"}
export PRODUCT_SIGNCHK=${PRODUCT_SIGNCHK:-"${TOOLSDIR}/scripts/pkg_fingerprint.sh ${PRODUCT_PUBKEY}"}
export PRODUCT_RELEASE="${PRODUCT_NAME}${PRODUCT_SUFFIX}-${PRODUCT_VERSION}-${PRODUCT_FLAVOUR}"
export PRODUCT_CORES="${PRODUCT_TYPE} ${PRODUCT_TYPE}-devel"
export PRODUCT_CORES="${PRODUCT_TYPE} ${PRODUCT_TYPE}-devel ${PRODUCT_TYPE}-business"
export PRODUCT_CORE="${PRODUCT_TYPE}${PRODUCT_SUFFIX}"
export PRODUCT_DEVEL="${PRODUCT_SUFFIX%-business}"
export PRODUCT_PLUGINS="os-*"
export PRODUCT_PLUGIN="os-*${PRODUCT_SUFFIX}"
export PRODUCT_PLUGIN="os-*${PRODUCT_DEVEL}"
# assume that arguments mean we are doing a rebuild
if [ -n "${*}" ]; then
@ -845,15 +846,14 @@ install_packages()
# Adds all selected packages and fails if one cannot
# be installed. Used to build a runtime environment.
for PKG in pkg ${PKGLIST}; do
PKGGLOB=$(echo "${PKG}" | sed 's/[^*]*//')
PKGSEARCH="-name ${PKG}-[0-9]*.txz"
PKGFOUND=
if [ -n "${PKGGLOB}" -a -z "${PRODUCT_SUFFIX}" ]; then
PKGSEARCH="${PKGSEARCH} ! -name ${PKG}-devel-[0-9]*.txz"
if [ -n "$(echo "${PKG}" | sed 's/[^*]*//')" ]; then
echo "Cannot install globbed package: ${PKG}" >&2
exit 1
fi
PKGFOUND=
for PKGFILE in $({
cd ${BASEDIR}
find .${PACKAGESDIR}/All ${PKGSEARCH}
find .${PACKAGESDIR}/All -name ${PKG}-[0-9]*.txz
}); do
pkg -c ${BASEDIR} add ${PKGFILE}
PKGFOUND=1

View File

@ -47,11 +47,18 @@ remove_packages ${STAGEDIR} ${@}
install_packages ${STAGEDIR} pkg git
lock_packages ${STAGEDIR}
if [ -n "${VERSION}" ]; then
CORE_PKGVERSION="CORE_PKGVERSION=${VERSION}"
fi
for BRANCH in ${EXTRABRANCH} ${COREBRANCH}; do
setup_copy ${STAGEDIR} ${COREDIR}
git_reset ${STAGEDIR}${COREDIR} ${BRANCH}
CORE_ARGS="CORE_ARCH=${PRODUCT_ARCH} CORE_FLAVOUR=${PRODUCT_FLAVOUR} ${COREENV}"
if [ ${BRANCH} = ${COREBRANCH} ]; then
CORE_ARGS="${CORE_ARGS} ${CORE_PKGVERSION}"
fi
CORE_NAME=$(make -C ${STAGEDIR}${COREDIR} ${CORE_ARGS} name)
CORE_DEPS=$(make -C ${STAGEDIR}${COREDIR} ${CORE_ARGS} depends)

View File

@ -41,7 +41,7 @@ setup_clone ${STAGEDIR} ${PLUGINSDIR}
setup_chroot ${STAGEDIR}
extract_packages ${STAGEDIR}
install_packages ${STAGEDIR} ${PRODUCT_CORE} os-debug${PRODUCT_SUFFIX}
install_packages ${STAGEDIR} ${PRODUCT_CORE} os-debug${PRODUCT_DEVEL}
lock_packages ${STAGEDIR}
# XXX plugins have conflicts, cannot install all for following check