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/ $//')"