Every other packages/*/*.SlackBuild is 755 — this one was created at 644
(likely from how it was originally written to disk), so
scripts/build-packages.sh's own executability check correctly refused to
run it ("No SlackBuild found/executable for 'podman-compose'"), failing
the whole build — confirmed from a real Gitea Actions run's log
(build-packages.yml run 110).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
84 lines
3.7 KiB
Bash
Executable File
84 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# =============================================================================
|
|
# packages/podman-compose/podman-compose.SlackBuild
|
|
#
|
|
# Packages podman-compose (github.com/containers/podman-compose) — the
|
|
# external "compose provider" `podman compose` shells out to (see
|
|
# versions.env's PODMAN_COMPOSE_* block for the full story, including why
|
|
# this replaces the project's earlier vendored docker-compose). Verified
|
|
# live against a real podman install that podman-compose is looked up as a
|
|
# plain $PATH command, unlike docker-compose's fixed CLI-plugin-directory
|
|
# search — so this installs a wrapper at /usr/local/bin/podman-compose.
|
|
#
|
|
# podman-compose itself is a single Python script (not a compiled binary),
|
|
# with two runtime dependencies — PyYAML and python-dotenv — vendored here
|
|
# as plain pure-Python source (no C extension build) since Unraid ships
|
|
# Python3 but neither of those modules.
|
|
# =============================================================================
|
|
|
|
set -eu
|
|
|
|
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
# shellcheck source=/dev/null
|
|
. "$REPO_ROOT/scripts/lib/slackbuild-common.sh"
|
|
# shellcheck source=/dev/null
|
|
. "$REPO_ROOT/versions.env"
|
|
|
|
VERSION="$PODMAN_COMPOSE_VERSION"
|
|
ARCH="$PKG_ARCH"
|
|
BUILD="$PKG_BUILD"
|
|
TAG="$PKG_TAG"
|
|
|
|
sb_init "podman-compose"
|
|
|
|
script=$(sb_fetch_and_verify "$PODMAN_COMPOSE_SRC_URL" "$PODMAN_COMPOSE_SRC_SHA256" "podman_compose-$VERSION.py")
|
|
pyyaml_tarball=$(sb_fetch_and_verify "$PYYAML_SRC_URL" "$PYYAML_SRC_SHA256" "pyyaml-$PYYAML_VERSION.tar.gz")
|
|
dotenv_tarball=$(sb_fetch_and_verify "$PYTHON_DOTENV_SRC_URL" "$PYTHON_DOTENV_SRC_SHA256" "python-dotenv-$PYTHON_DOTENV_VERSION.tar.gz")
|
|
|
|
libdir="$PKG/usr/local/lib/podman-compose"
|
|
mkdir -p "$libdir"
|
|
install -m 0644 "$script" "$libdir/podman_compose.py"
|
|
|
|
# Only the pure-Python "yaml" package, not the "_yaml" C extension (which
|
|
# would need libyaml plus a compiler toolchain this build doesn't otherwise
|
|
# require) — see the header comment on why the pure-Python fallback is
|
|
# sufficient for what podman-compose actually needs from it.
|
|
tar -xzf "$pyyaml_tarball" -C "$TMP" "pyyaml-$PYYAML_VERSION/lib/yaml"
|
|
cp -r "$TMP/pyyaml-$PYYAML_VERSION/lib/yaml" "$libdir/yaml"
|
|
|
|
tar -xzf "$dotenv_tarball" -C "$TMP" "python_dotenv-$PYTHON_DOTENV_VERSION/src/dotenv"
|
|
cp -r "$TMP/python_dotenv-$PYTHON_DOTENV_VERSION/src/dotenv" "$libdir/dotenv"
|
|
|
|
# A thin wrapper, not a symlink or bare shebang: podman_compose.py's own
|
|
# shebang (whatever upstream wrote, a plain "#!/usr/bin/env python3") has
|
|
# no idea the vendored yaml/dotenv sit right next to it, so PYTHONPATH has
|
|
# to be set by whatever actually invokes the script.
|
|
install -d "$PKG/usr/local/bin"
|
|
cat > "$PKG/usr/local/bin/podman-compose" <<'WRAPPER'
|
|
#!/bin/sh
|
|
exec env PYTHONPATH="/usr/local/lib/podman-compose${PYTHONPATH:+:$PYTHONPATH}" \
|
|
/usr/bin/python3 /usr/local/lib/podman-compose/podman_compose.py "$@"
|
|
WRAPPER
|
|
chmod 0755 "$PKG/usr/local/bin/podman-compose"
|
|
|
|
docdir="$PKG/usr/doc/podman-compose-$VERSION"
|
|
mkdir -p "$docdir"
|
|
{
|
|
echo "podman-compose $VERSION"
|
|
echo "https://github.com/containers/podman-compose"
|
|
echo
|
|
echo "Vendored alongside its two runtime dependencies (bundled as plain"
|
|
echo "pure-Python source, no C extensions built):"
|
|
echo " PyYAML $PYYAML_VERSION - https://pypi.org/project/PyYAML/"
|
|
echo " python-dotenv $PYTHON_DOTENV_VERSION - https://pypi.org/project/python-dotenv/"
|
|
echo
|
|
echo "See versions.env for pinned source URLs and SHA256 checksums."
|
|
} > "$docdir/README"
|
|
{
|
|
echo "Built by unraid-podman from upstream source."
|
|
echo "Package: podman-compose $VERSION"
|
|
echo "Built: $(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
} > "$docdir/unraid-podman.build-info"
|
|
|
|
sb_make_package "$VERSION" "$ARCH" "$BUILD" "$TAG"
|