Rework package bundling mechanism

Setting PACKAGE_DIR without PACKAGES will default to bundling all
packages in PACKAGE_DIR. PKG_INFO is also mandatory now.

Change-Id: Iaf02221ec91e9c54dc8caec6e9a01bccfc65cc31
This commit is contained in:
Jean-Baptiste Boric 2017-04-11 18:12:47 +02:00 committed by David van Moolenbroek
parent 1915559884
commit 0884854a38

View File

@ -45,8 +45,12 @@ add_link_spec()
# $1 : sets to extract # $1 : sets to extract
build_workdir() build_workdir()
{ {
# Extract sets
mkdir -p ${ROOT_DIR} mkdir -p ${ROOT_DIR}
# Don't do anything if we don't use sets
if [ -n "$1" ]
then
# Extract sets
for set in $1; do for set in $1; do
if [ ! -e ${SETS_DIR}/${set}.tgz ]; then if [ ! -e ${SETS_DIR}/${set}.tgz ]; then
echo "Missing ${SETS_DIR}/${set}.tgz, aborting" echo "Missing ${SETS_DIR}/${set}.tgz, aborting"
@ -68,6 +72,7 @@ build_workdir()
# Build specifications files # Build specifications files
cp ${ROOT_DIR}/etc/mtree/set* ${WORK_DIR} cp ${ROOT_DIR}/etc/mtree/set* ${WORK_DIR}
${ROOT_DIR}/usr/bin/MAKEDEV -s -m all >> ${WORK_DIR}/extra.dev ${ROOT_DIR}/usr/bin/MAKEDEV -s -m all >> ${WORK_DIR}/extra.dev
fi
if [ ${BUNDLE_SETS} -eq 1 ] if [ ${BUNDLE_SETS} -eq 1 ]
then then
@ -210,7 +215,12 @@ workdir_add_kernel()
# #
create_input_spec() create_input_spec()
{ {
if [ -n "$SETS" ]
then
cat ${WORK_DIR}/set* ${WORK_DIR}/extra* | ${CROSS_TOOLS}/nbmtree -N ${ROOT_DIR}/etc -C -K device > ${WORK_DIR}/input cat ${WORK_DIR}/set* ${WORK_DIR}/extra* | ${CROSS_TOOLS}/nbmtree -N ${ROOT_DIR}/etc -C -K device > ${WORK_DIR}/input
else
cat ${WORK_DIR}/extra* | ${CROSS_TOOLS}/nbmtree -C > ${WORK_DIR}/input
fi
if [ ${ASR_HACK} -eq 1 ] if [ ${ASR_HACK} -eq 1 ]
then then
@ -350,18 +360,28 @@ create_ramdisk_image()
# $1 : packages to bundle # $1 : packages to bundle
bundle_packages() bundle_packages()
{ {
if [ -z "$1" ] if [ -z $PACKAGE_DIR ]
then then
echo " * PACKAGE_DIR not set, skipping package bundling..."
return return
fi fi
if [ -z $PACKAGE_DIR ] if [ ! -x "$(which $PKG_INFO)" ]
then then
echo "Error: PACKAGE_DIR is not set while trying to bundle packages." echo "Error: PKG_INFO ("$(which $PKG_INFO)") not executable."
echo "Please fetch binary packages to bundle and set PACKAGE_DIR to continue." echo "Can't create package index without pkg_info."
echo "Bootstrap pkgsrc on host to get pkg_info."
exit 1 exit 1
fi fi
# Bundle all available packages if no list was given
if [ -z "$1" ]
then
PACKAGES=$(for i in $(echo "$PACKAGE_DIR"/*.tgz); do basename $i | sed s/\.tgz//; done)
else
PACKAGES=$1
fi
DESTPACKAGES="usr/packages/$RELEASE_VERSION/$ARCH/All" DESTPACKAGES="usr/packages/$RELEASE_VERSION/$ARCH/All"
RELEASEPACKAGE="${ROOT_DIR}/$DESTPACKAGES" RELEASEPACKAGE="${ROOT_DIR}/$DESTPACKAGES"
index=pkg_summary index=pkg_summary
@ -373,7 +393,7 @@ bundle_packages()
add_dir_spec "usr/packages/$RELEASE_VERSION/$ARCH" extra.pkgsrc add_dir_spec "usr/packages/$RELEASE_VERSION/$ARCH" extra.pkgsrc
add_dir_spec "usr/packages/$RELEASE_VERSION/$ARCH/All" extra.pkgsrc add_dir_spec "usr/packages/$RELEASE_VERSION/$ARCH/All" extra.pkgsrc
add_link_spec "packages" "usr/packages" extra.pkgsrc add_link_spec "packages" "usr/packages" extra.pkgsrc
for pkgprefix in $1 for pkgprefix in $PACKAGES
do do
realfn=$(echo $PACKAGE_DIR/${pkgprefix}*.tgz | cut -d' ' -f1) realfn=$(echo $PACKAGE_DIR/${pkgprefix}*.tgz | cut -d' ' -f1)
if [ -f "$realfn" ] if [ -f "$realfn" ]
@ -389,8 +409,6 @@ bundle_packages()
fi fi
done done
if [ -x "$(which $PKG_INFO)" ]
then
# Create packages index # Create packages index
echo " * Generating package index..." echo " * Generating package index..."
indexname=$indexpath/$p.$index indexname=$indexpath/$p.$index
@ -400,10 +418,6 @@ bundle_packages()
echo " * Compressing index..." echo " * Compressing index..."
bzip2 -f $RELEASEPACKAGE/$index bzip2 -f $RELEASEPACKAGE/$index
add_file_spec "$DESTPACKAGES/$index.bz2" extra.pkgsrc add_file_spec "$DESTPACKAGES/$index.bz2" extra.pkgsrc
else
echo " * Skipping package index generation."
echo " PKG_INFO ("$(which $PKG_INFO)") not executable."
fi
} }
# #