#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd) ROOT_DIR=$(cd -- "${SCRIPT_DIR}/.." && pwd) CONFIG_FILE="${ROOT_DIR}/config/mesa-opt.conf" DIST_DIR="${ROOT_DIR}/dist" APT_DIR="${DIST_DIR}/aptrepo" DIST_ENV="${DIST_DIR}/package-info.env" if [[ -f "${CONFIG_FILE}" ]]; then # shellcheck disable=SC1090 source "${CONFIG_FILE}" fi if [[ ! -f "${DIST_ENV}" ]]; then echo "missing dist metadata: ${DIST_ENV}" >&2 exit 1 fi # shellcheck disable=SC1090 source "${DIST_ENV}" require_cmd() { local cmd for cmd in "$@"; do command -v "${cmd}" >/dev/null 2>&1 || { echo "missing command: ${cmd}" >&2 exit 1 } done } require_cmd dpkg-scanpackages gzip md5sum sha256sum sha512sum stat date PACKAGE_ARCH="$(dpkg-deb -f "${DIST_DIR}/${PACKAGE_FILE}" Architecture)" APT_SUITE="${APT_SUITE:-stable}" APT_COMPONENT="${APT_COMPONENT:-main}" APT_ARCH="${APT_ARCH:-${PACKAGE_ARCH}}" APT_ORIGIN="${APT_ORIGIN:-mesa-git}" APT_LABEL="${APT_LABEL:-mesa-git}" APT_DESCRIPTION="${APT_DESCRIPTION:-Mesa git apt repository}" POOL_DIR="${APT_DIR}/pool/${APT_COMPONENT}/m/${PACKAGE_NAME}" BINARY_DIR="${APT_DIR}/dists/${APT_SUITE}/${APT_COMPONENT}/binary-${APT_ARCH}" PACKAGE_PATH="${POOL_DIR}/${PACKAGE_FILE}" rm -rf "${APT_DIR}" mkdir -p "${POOL_DIR}" "${BINARY_DIR}" cp "${DIST_DIR}/${PACKAGE_FILE}" "${PACKAGE_PATH}" ( cd "${APT_DIR}" dpkg-scanpackages --arch "${APT_ARCH}" "pool" > "${BINARY_DIR#${APT_DIR}/}/Packages" ) gzip -kf "${BINARY_DIR}/Packages" cat > "${APT_DIR}/dists/${APT_SUITE}/Release" <> "${release_file}" while IFS= read -r -d '' file; do rel_path="${file#${rel_dir}/}" sum="$(${checksum_cmd} "${file}" | awk '{print $1}')" size="$(stat -c '%s' "${file}")" printf ' %s %16s %s\n' "${sum}" "${size}" "${rel_path}" >> "${release_file}" done < <(find "${rel_dir}" -type f ! -name Release -print0 | sort -z) } append_checksum_block "MD5Sum" md5sum append_checksum_block "SHA256" sha256sum append_checksum_block "SHA512" sha512sum if [[ -n "${APT_PUBLIC_BASE_URL:-}" ]]; then printf 'deb [trusted=yes] %s %s %s\n' \ "${APT_PUBLIC_BASE_URL%/}" \ "${APT_SUITE}" \ "${APT_COMPONENT}" \ > "${APT_DIR}/${PACKAGE_NAME}-${APT_SUITE}.list" fi