#!/usr/bin/env bash set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" # shellcheck source=scripts/apk/package-lib.sh . "${repo_root}/scripts/apk/package-lib.sh" repo_name="${ALPINE_REPO_NAME:-local}" arch="${ALPINE_ARCH:-$(apk --print-arch)}" packages="${SMOKE_PACKAGES:-seaweedfs seaweedfs-master-openrc seaweedfs-filer-openrc seaweedfs-worker-openrc greptimedb lavinmq lavinmq-openrc gitea gitea-openrc rclone-openrc}" repo_dir="${repo_root}/packages/${repo_name}/${arch}" registry_url="${ALPINE_REGISTRY_URL:-}" registry_key="${ALPINE_REGISTRY_KEY:-}" read -r -a package_list <<< "${packages}" declare -A source_packages=() local_repo_complete=0 while IFS= read -r package_dir; do while IFS= read -r spec; do source_packages["${spec%%=*}"]=1 done < <(apk_package_versioned_names "${package_dir}" "${arch}") done < <(apk_all_package_dirs "${repo_root}") for package in "${package_list[@]}"; do if [[ -z "${source_packages[${package}]:-}" ]]; then printf 'smoke package is not defined by a source APKBUILD: %s\n' "${package}" >&2 exit 2 fi done if [[ -d "${repo_dir}" ]]; then local_repo_complete=1 for package in "${package_list[@]}"; do if ! compgen -G "${repo_dir}/${package}-*.apk" >/dev/null; then local_repo_complete=0 break fi done fi if [[ -d "${repo_dir}" ]]; then cp "${repo_dir}"/*.rsa.pub /etc/apk/keys/ echo "${repo_root}/packages/${repo_name}" >> /etc/apk/repositories fi if [[ -n "${registry_url}" && "${local_repo_complete}" == 0 ]]; then if [[ ! -f "${registry_key}" ]]; then printf 'missing Alpine registry signing key: %s\n' "${registry_key:-}" >&2 exit 1 fi cp "${registry_key}" /etc/apk/keys/ echo "${registry_url}" >> /etc/apk/repositories elif [[ -n "${registry_url}" ]]; then printf 'Using the complete local Alpine repository; registry fallback is not needed\n' fi if [[ ! -d "${repo_dir}" && -z "${registry_url}" ]]; then printf 'missing local repository and no registry fallback: packages/%s/%s\n' "${repo_name}" "${arch}" >&2 exit 1 fi apk update apk add "${package_list[@]}" if command -v weed >/dev/null 2>&1; then weed version ls -1 /etc/seaweedfs fi if command -v greptime >/dev/null 2>&1; then greptime --version fi if command -v lavinmq >/dev/null 2>&1; then lavinmq -v lavinmqctl --version lavinmqperf --version fi if command -v gitea >/dev/null 2>&1; then gitea --version test -f /etc/gitea/app.ini test -d /var/lib/gitea fi if command -v rclone >/dev/null 2>&1; then rclone version test -f /etc/conf.d/rclone test -f /etc/init.d/rclone fi if ls /etc/init.d/seaweedfs.* >/dev/null 2>&1; then find /etc/init.d -maxdepth 1 -name 'seaweedfs.*' -print | sort fi if [[ -f /etc/init.d/lavinmq ]]; then printf '%s\n' /etc/init.d/lavinmq fi if [[ -f /etc/init.d/gitea ]]; then printf '%s\n' /etc/init.d/gitea fi