build: try to unify the packages chroot handling
This commit is contained in:
parent
054d5224e0
commit
cea8c505fb
|
@ -118,16 +118,27 @@ setup_packages()
|
|||
{
|
||||
echo ">>> Setting up packages in ${1}..."
|
||||
|
||||
mkdir -p ${1}/${PACKAGESDIR}
|
||||
cp ${PACKAGESDIR}/* ${1}/${PACKAGESDIR}
|
||||
BASEDIR=${1}
|
||||
shift
|
||||
PKGLIST=${@}
|
||||
|
||||
# bootstrap pkg manually, not sure why...
|
||||
pkg -c ${1} add ${PACKAGESDIR}/pkg-*.txz
|
||||
mkdir -p ${PACKAGESDIR} ${BASEDIR}/${PACKAGESDIR}
|
||||
cp ${PACKAGESDIR}/* ${BASEDIR}/${PACKAGESDIR} || true
|
||||
|
||||
# opnsense has all required ports embedded as dependencies
|
||||
pkg -c ${1} add ${PACKAGESDIR}/opnsense-*.txz
|
||||
if [ -z "${PKGLIST}" ]; then
|
||||
# forcefully add all available packages
|
||||
pkg -c ${BASEDIR} add -f ${PACKAGESDIR}/*.txz || true
|
||||
else
|
||||
# always bootstrap pkg
|
||||
PKGLIST="pkg ${PKGLIST}"
|
||||
|
||||
rm -r ${1}/${PACKAGESDIR}
|
||||
for PKG in ${PKGLIST}; do
|
||||
# must fail if packages aren't there
|
||||
pkg -c ${BASEDIR} add ${PACKAGESDIR}/${PKG}-*.txz
|
||||
done
|
||||
fi
|
||||
|
||||
rm -rf ${BASEDIR}/${PACKAGESDIR}/*
|
||||
}
|
||||
|
||||
setup_platform()
|
||||
|
|
|
@ -29,20 +29,18 @@ set -e
|
|||
|
||||
. ./common.sh
|
||||
|
||||
setup_stage ${STAGEDIR}
|
||||
setup_base ${STAGEDIR}
|
||||
rm -f ${PACKAGESDIR}/opnsense-*.txz
|
||||
|
||||
git_clear ${COREDIR}
|
||||
git_describe ${COREDIR}
|
||||
|
||||
setup_stage ${STAGEDIR}
|
||||
setup_base ${STAGEDIR}
|
||||
setup_packages ${STAGEDIR}
|
||||
|
||||
# no compiling needed; simply install
|
||||
make -C ${COREDIR} DESTDIR=${STAGEDIR} install > ${STAGEDIR}/plist
|
||||
|
||||
rm -f ${PACKAGESDIR}/opnsense-*.txz
|
||||
mkdir -p ${PACKAGESDIR} ${STAGEDIR}${PACKAGESDIR}
|
||||
cp ${PACKAGESDIR}/* ${STAGEDIR}${PACKAGESDIR}
|
||||
pkg -c ${STAGEDIR} add -f ${PACKAGESDIR}/*
|
||||
|
||||
cat >> ${STAGEDIR}/+PRE_DEINSTALL <<EOF
|
||||
echo "Resetting root shell"
|
||||
pw usermod -n root -s /bin/csh
|
||||
|
@ -120,7 +118,6 @@ EOF
|
|||
echo -n ">>> Creating custom package for ${COREDIR}... "
|
||||
|
||||
pkg -c ${STAGEDIR} create -m / -r / -p /plist -o ${PACKAGESDIR}
|
||||
|
||||
mv ${STAGEDIR}${PACKAGESDIR}/opnsense-*.txz ${PACKAGESDIR}
|
||||
|
||||
echo "done"
|
||||
|
|
|
@ -34,7 +34,7 @@ mkdir -p ${IMAGESDIR}
|
|||
setup_stage ${STAGEDIR}
|
||||
setup_base ${STAGEDIR}
|
||||
setup_kernel ${STAGEDIR}
|
||||
setup_packages ${STAGEDIR}
|
||||
setup_packages ${STAGEDIR} opnsense
|
||||
setup_mtree ${STAGEDIR}
|
||||
setup_platform ${STAGEDIR}
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ mkdir -p ${IMAGESDIR}
|
|||
setup_stage ${STAGEDIR}
|
||||
setup_base ${STAGEDIR}
|
||||
setup_kernel ${STAGEDIR}
|
||||
setup_packages ${STAGEDIR}
|
||||
setup_packages ${STAGEDIR} opnsense
|
||||
setup_mtree ${STAGEDIR}
|
||||
setup_platform ${STAGEDIR}
|
||||
|
||||
|
|
|
@ -30,12 +30,27 @@ set -e
|
|||
. ./common.sh
|
||||
|
||||
PORT_LIST=$(cat ${TOOLSDIR}/config/current/ports)
|
||||
PORT_REUSE=
|
||||
|
||||
echo "${PORT_LIST}" | { while read PORT_NAME PORT_CAT PORT_OPT; do
|
||||
if [ "${PORT_NAME}" = "#" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
PACKAGE=$(ls ${PACKAGESDIR}/${PORT_NAME}-*.txz 2> /dev/null || true)
|
||||
if [ -f "${PACKAGE}" ]; then
|
||||
# may fail for missing dependencies and
|
||||
# that's what we need: rebuild chain :)
|
||||
PORT_REUSE="${PORT_REUSE} ${PORT_NAME}"
|
||||
fi
|
||||
done }
|
||||
|
||||
git_clear ${PORTSDIR}
|
||||
git_clear ${SRCDIR}
|
||||
|
||||
setup_stage ${STAGEDIR}
|
||||
setup_base ${STAGEDIR}
|
||||
setup_packages ${STAGEDIR} ${PACKAGES}
|
||||
setup_chroot ${STAGEDIR}
|
||||
|
||||
echo ">>> Setting up ports in ${STAGEDIR}"
|
||||
|
@ -53,27 +68,6 @@ echo ">>> Setting up src in ${STAGEDIR}"
|
|||
tar -C/ -cf - --exclude=.${SRCDIR}/.git .${SRCDIR} | \
|
||||
tar -C${STAGEDIR} -pxf -
|
||||
|
||||
# bootstrap all available packages to save time
|
||||
mkdir -p ${PACKAGESDIR} ${STAGEDIR}${PACKAGESDIR}
|
||||
cp ${PACKAGESDIR}/* ${STAGEDIR}${PACKAGESDIR} || true
|
||||
|
||||
(echo "pkg ports-mgmt"; echo "${PORT_LIST}") | {
|
||||
while read PORT_NAME PORT_CAT PORT_OPT; do
|
||||
if [ "${PORT_NAME}" = "#" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
PACKAGE=$(ls ${PACKAGESDIR}/${PORT_NAME}-*.txz 2> /dev/null || true)
|
||||
if [ -f "${PACKAGE}" ]; then
|
||||
# may fail for missing dependencies and
|
||||
# that's what we need: rebuild chain :)
|
||||
pkg -c ${STAGEDIR} add ${PACKAGE} || true
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
rm -rf ${STAGEDIR}${PACKAGESDIR}/*
|
||||
|
||||
echo ">>> Building packages..."
|
||||
|
||||
chroot ${STAGEDIR} /bin/sh -es <<EOF || true
|
||||
|
@ -84,8 +78,7 @@ else
|
|||
make -C ${PORTSDIR}/ports-mgmt/pkg clean all install
|
||||
fi
|
||||
|
||||
echo "${PORT_LIST}" | {
|
||||
while read PORT_NAME PORT_CAT PORT_OPT; do
|
||||
echo "${PORT_LIST}" | { while read PORT_NAME PORT_CAT PORT_OPT; do
|
||||
if [ "\${PORT_NAME}" = "#" ]; then
|
||||
continue
|
||||
fi
|
||||
|
@ -107,8 +100,7 @@ while read PORT_NAME PORT_CAT PORT_OPT; do
|
|||
echo "\${PORT_NAME}: package names don't match"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
done }
|
||||
EOF
|
||||
|
||||
echo ">>> Creating binary packages..."
|
||||
|
@ -136,22 +128,17 @@ pkg_resolve_deps()
|
|||
|
||||
pkg_resolve_deps pkg
|
||||
|
||||
echo "${PORT_LIST}" | {
|
||||
while read PORT_NAME PORT_CAT PORT_OPT; do
|
||||
echo "${PORT_LIST}" | { while read PORT_NAME PORT_CAT PORT_OPT; do
|
||||
if [ "\${PORT_NAME}" = "#" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
pkg_resolve_deps "\$(pkg info -E \${PORT_NAME})"
|
||||
done
|
||||
}
|
||||
done }
|
||||
EOF
|
||||
|
||||
rm -rf ${PACKAGESDIR}/*
|
||||
mv ${STAGEDIR}${PACKAGESDIR}/* ${PACKAGESDIR}
|
||||
|
||||
# also build the meta-package
|
||||
cd ${TOOLSDIR}/build && ./core.sh
|
||||
|
||||
# bundle all packages into a ready-to-use set
|
||||
cd ${TOOLSDIR}/build && ./packages.sh
|
||||
|
|
Loading…
Reference in New Issue