mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2026-09-14 02:56:11 +05:00
180 lines
6.5 KiB
YAML
Executable File
180 lines
6.5 KiB
YAML
Executable File
name: Install and CLI Compatibility
|
|
|
|
on:
|
|
workflow_call:
|
|
|
|
env:
|
|
DOCKER_IMAGE: archivebox-ci
|
|
ARCHIVEBOX_IMAGE: archivebox-ci
|
|
PYTHONIOENCODING: utf-8
|
|
PYTHONLEGACYWINDOWSSTDIO: utf-8
|
|
USE_COLOR: False
|
|
UV_NO_SOURCES: "1"
|
|
|
|
jobs:
|
|
install_cli_platform:
|
|
name: CLI install / ${{ matrix.os_name }} / Python ${{ matrix.python }}
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-24.04
|
|
os_name: linux
|
|
python: "3.14"
|
|
- os: macos-15
|
|
os_name: macOS
|
|
python: "3.13"
|
|
- os: macos-15
|
|
os_name: macOS
|
|
python: "3.14"
|
|
|
|
steps:
|
|
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
|
|
with:
|
|
submodules: true
|
|
fetch-depth: 1
|
|
|
|
### Set up Python
|
|
- name: Set up Python ${{ matrix.python }}
|
|
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
with:
|
|
python-version: ${{ matrix.python }}
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
|
|
with:
|
|
version: "0.11.3"
|
|
enable-cache: true
|
|
cache-dependency-glob: uv.lock
|
|
|
|
- name: Prepare abxpkg environment
|
|
env:
|
|
LIB_DIR: ${{ runner.temp }}/abx-lib
|
|
ABXPKG_LIB_DIR: ${{ runner.temp }}/abx-lib
|
|
run: |
|
|
set -Eeuo pipefail
|
|
ABXPKG_VERSION="$(uv run --no-project python -c 'import tomllib; print(next(package["version"] for package in tomllib.load(open("uv.lock", "rb"))["package"] if package["name"] == "abxpkg"))')"
|
|
test -n "$ABXPKG_VERSION"
|
|
mkdir -p "$LIB_DIR/env/bin"
|
|
{
|
|
echo "ABXPKG_VERSION=$ABXPKG_VERSION"
|
|
echo "LIB_DIR=$LIB_DIR"
|
|
echo "ABXPKG_LIB_DIR=$ABXPKG_LIB_DIR"
|
|
} >> "$GITHUB_ENV"
|
|
echo "$LIB_DIR/env/bin" >> "$GITHUB_PATH"
|
|
|
|
- name: Resolve CI tools through abxpkg
|
|
env:
|
|
LIB_DIR: ${{ runner.temp }}/abx-lib
|
|
ABXPKG_LIB_DIR: ${{ runner.temp }}/abx-lib
|
|
run: |
|
|
set -Eeuo pipefail
|
|
export PATH="$LIB_DIR/env/bin:$PATH"
|
|
tooling_env="$(
|
|
uv run --no-project --with "abxpkg==$ABXPKG_VERSION" abxpkg env \
|
|
--install \
|
|
--json \
|
|
--lib="$LIB_DIR" \
|
|
--deps-from="$GITHUB_WORKSPACE/.github/configs/ci-tooling.json:ci_binaries"
|
|
)"
|
|
JQ_BINARY="$LIB_DIR/env/bin/jq"
|
|
"$JQ_BINARY" -r 'to_entries[] | "\(.key)=\(.value)"' \
|
|
<<< "$tooling_env" >> "$GITHUB_ENV"
|
|
echo "JQ_BINARY=$JQ_BINARY" >> "$GITHUB_ENV"
|
|
test -L "$JQ_BINARY"
|
|
test -x "$JQ_BINARY"
|
|
|
|
- name: Resolve Linux build dependencies through abxpkg
|
|
if: runner.os == 'Linux'
|
|
env:
|
|
LIB_DIR: ${{ runner.temp }}/abx-lib
|
|
ABXPKG_LIB_DIR: ${{ runner.temp }}/abx-lib
|
|
run: |
|
|
set -Eeuo pipefail
|
|
uv run --no-project --with "abxpkg==$ABXPKG_VERSION" abxpkg env \
|
|
--install \
|
|
--no-cache \
|
|
--json \
|
|
--lib="$LIB_DIR" \
|
|
--deps-from="$GITHUB_WORKSPACE/.github/configs/ci-linux-build.json:required_binaries"
|
|
|
|
- name: Resolve host Homebrew through abxpkg
|
|
if: runner.os == 'macOS'
|
|
env:
|
|
LIB_DIR: ${{ runner.temp }}/abx-lib
|
|
ABXPKG_LIB_DIR: ${{ runner.temp }}/abx-lib
|
|
run: |
|
|
set -Eeuo pipefail
|
|
brew_env="$(
|
|
uv run --no-project --with "abxpkg==$ABXPKG_VERSION" abxpkg env \
|
|
--install \
|
|
--json \
|
|
--lib="$LIB_DIR" \
|
|
--deps-from="$GITHUB_WORKSPACE/.github/configs/ci-macos-brew.json:required_binaries"
|
|
)"
|
|
brew_binary="$("$JQ_BINARY" -r '.BREW_BINARY' <<< "$brew_env")"
|
|
test -L "$brew_binary"
|
|
echo "BREW_BINARY=$brew_binary" >> "$GITHUB_ENV"
|
|
|
|
- name: Resolve macOS build dependencies through abxpkg
|
|
if: runner.os == 'macOS'
|
|
env:
|
|
LIB_DIR: ${{ runner.temp }}/abx-lib
|
|
ABXPKG_LIB_DIR: ${{ runner.temp }}/abx-lib
|
|
run: |
|
|
set -Eeuo pipefail
|
|
brew_target="$(readlink "$BREW_BINARY")"
|
|
test -x "$brew_target"
|
|
brew_root="$(dirname "$(dirname "$brew_target")")"
|
|
export ABXPKG_BREW_ROOT="$brew_root"
|
|
|
|
uv run --no-project --with "abxpkg==$ABXPKG_VERSION" abxpkg env \
|
|
--install \
|
|
--json \
|
|
--lib="$LIB_DIR" \
|
|
--deps-from="$GITHUB_WORKSPACE/.github/configs/ci-macos-build.json:required_binaries"
|
|
|
|
PATH="$brew_root/opt/openldap/bin:$PATH" \
|
|
uv run --no-project --with "abxpkg==$ABXPKG_VERSION" abxpkg env \
|
|
--install \
|
|
--json \
|
|
--lib="$LIB_DIR" \
|
|
--deps-from="$GITHUB_WORKSPACE/.github/configs/ci-macos-openldap-env.json:required_binaries" \
|
|
| "$JQ_BINARY" -r 'to_entries[] | "\(.key)=\(.value)"' \
|
|
>> "$GITHUB_ENV"
|
|
|
|
ldapvc_target="$(readlink "$LIB_DIR/env/bin/ldapvc")"
|
|
while [[ -L "$ldapvc_target" ]]; do
|
|
next_ldapvc_target="$(readlink "$ldapvc_target")"
|
|
if [[ "$next_ldapvc_target" == /* ]]; then
|
|
ldapvc_target="$next_ldapvc_target"
|
|
else
|
|
ldapvc_target="$(dirname "$ldapvc_target")/$next_ldapvc_target"
|
|
fi
|
|
done
|
|
test -x "$ldapvc_target"
|
|
openldap_prefix="$(dirname "$(dirname "$ldapvc_target")")"
|
|
test -f "$openldap_prefix/include/ldap.h"
|
|
test -f "$openldap_prefix/lib/libldap.dylib"
|
|
{
|
|
echo "ABXPKG_BREW_ROOT=$brew_root"
|
|
echo "CPPFLAGS=-I$openldap_prefix/include${CPPFLAGS:+ $CPPFLAGS}"
|
|
echo "LDFLAGS=-L$openldap_prefix/lib${LDFLAGS:+ $LDFLAGS}"
|
|
echo "PKG_CONFIG_PATH=$openldap_prefix/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
|
|
} >> "$GITHUB_ENV"
|
|
|
|
- name: Install dependencies with uv
|
|
run: uv sync --locked --dev --all-extras
|
|
|
|
- name: ArchiveBox full install check
|
|
run: |
|
|
set -Eeuo pipefail
|
|
DATA_DIR="$PWD/tests/out/data"
|
|
mkdir -p "$DATA_DIR"
|
|
uv run --directory "$DATA_DIR" --no-sync --no-sources archivebox init
|
|
uv run --directory "$DATA_DIR" --no-sync --no-sources archivebox install
|
|
uv run --directory "$DATA_DIR" --no-sync --no-sources archivebox version
|
|
uv run --directory "$DATA_DIR" --no-sync --no-sources archivebox status
|