xref: /freebsd/release/packages/create-sets.sh (revision 9b7bddfd082d1df2b4c97e7ec974d1d67e98a1de)
166f36c36SLexi Winter#! /bin/sh
266f36c36SLexi Winter
366f36c36SLexi Winter# Generate metapackage sets.  We do this by examining the annotations field
466f36c36SLexi Winter# of the packages we previously built.
566f36c36SLexi Winter
666f36c36SLexi Winterset -e
766f36c36SLexi Winter
866f36c36SLexi Winterif [ $# -lt 3 ]; then
966f36c36SLexi Winter	printf >&2 'usage: %s <srcdir> <wstagedir> <repodir>\n' "$0"
1066f36c36SLexi Winter	exit 1
1166f36c36SLexi Winterfi
1266f36c36SLexi Winter
1366f36c36SLexi Wintersrcdir="$1"; shift
1466f36c36SLexi Winterwstagedir="$1"; shift
1566f36c36SLexi Winterrepodir="$1"; shift
1666f36c36SLexi Winter# Everything after the first three arguments is UCL variables we pass to
1766f36c36SLexi Winter# generate-set-ucl.lua.
1866f36c36SLexi WinterUCL_VARS="$@"
1966f36c36SLexi Winter
2066f36c36SLexi Winterfor pkg in "$repodir"/*.pkg; do
2166f36c36SLexi Winter	# If the package name doesn't containing a '-', then it's
2266f36c36SLexi Winter	# probably data.pkg or packagesite.pkg, which are not real
2366f36c36SLexi Winter	# packages.
2466f36c36SLexi Winter	{ echo "$pkg" | grep -q '-'; } || continue
2566f36c36SLexi Winter
2666f36c36SLexi Winter	set -- $(pkg query -F "$pkg" '%At %n %Av' | grep '^set ')
2766f36c36SLexi Winter	pkgname="$2"
28*9b7bddfdSLexi Winter	sets="$(echo "$3" | tr , ' ')"
29*9b7bddfdSLexi Winter	for set in $sets; do
3066f36c36SLexi Winter		SETS="$SETS $set"
3166f36c36SLexi Winter		setvar="$(echo "$set" | tr - _)"
3266f36c36SLexi Winter		eval PKGS_${setvar}=\"\$PKGS_${setvar} $pkgname\"
3366f36c36SLexi Winter	done
34*9b7bddfdSLexi Winterdone
3566f36c36SLexi Winter
3666f36c36SLexi Winterfor set in $(echo $SETS | tr ' ' '\n' | sort | uniq); do
3766f36c36SLexi Winter	setvar="$(echo "$set" | tr - _)"
3866f36c36SLexi Winter	eval deps=\"\$PKGS_${setvar}\"
3966f36c36SLexi Winter
4066f36c36SLexi Winter	"${srcdir}/release/packages/generate-set-ucl.lua" \
4166f36c36SLexi Winter		"${srcdir}/release/packages/set-template.ucl" \
4266f36c36SLexi Winter		PKGNAME "$set" \
4366f36c36SLexi Winter		SET_DEPENDS "$deps" \
4466f36c36SLexi Winter		UCLFILES "${srcdir}/release/packages/sets" \
4566f36c36SLexi Winter		$UCL_VARS \
4666f36c36SLexi Winter		> "${wstagedir}/set-${set}.ucl"
4766f36c36SLexi Winterdone
48