unos-repository

APK repository for unos
git clone git://git.finwo.net/misc/unos-repository
Log | Files | Refs | README

channel-assemble.sh (1131B)


      1 #!/bin/sh
      2 # mk/channel-assemble.sh - compose a channel's package tree from its chain.
      3 #
      4 #   ./mk/channel-assemble.sh <channel>   -> build/channels/<channel>/packages
      5 #
      6 # Layers replace whole package directories rather than merging file by file, so
      7 # a stale patch or files/ entry cannot survive underneath a bumped template.
      8 set -eu
      9 
     10 HERE=$(cd "$(dirname "$0")" && pwd)
     11 ROOT=$(cd "${HERE}/.." && pwd)
     12 
     13 # shellcheck disable=SC1091
     14 . "${HERE}/channels.inc"
     15 
     16 CHANNEL="${1:?usage: channel-assemble.sh <channel>}"
     17 
     18 OUT=$(chan_pkgdir "${CHANNEL}")
     19 rm -rf "${OUT}"
     20 mkdir -p "${OUT}"
     21 
     22 for layer in $(chan_layers "${CHANNEL}"); do
     23 	src="${CHANDIR}/${layer}/packages"
     24 	[ -d "${src}" ] || continue
     25 	for pkg in "${src}"/*/; do
     26 		[ -d "${pkg}" ] || continue
     27 		name=$(basename "${pkg}")
     28 		rm -rf "${OUT}/${name}"
     29 		cp -R "${pkg}" "${OUT}/${name}"
     30 	done
     31 	for extra in "${src}"/*.md; do
     32 		[ -f "${extra}" ] && cp "${extra}" "${OUT}/"
     33 	done
     34 done
     35 
     36 printf '==> channel %s: %s packages from [%s]\n' \
     37 	"${CHANNEL}" \
     38 	"$(find "${OUT}" -mindepth 1 -maxdepth 1 -type d | wc -l | tr -d ' ')" \
     39 	"$(chan_layers "${CHANNEL}" | tr '\n' ' ' | sed 's/ $//')"