You've already forked RecordFlux
mirror of
https://github.com/AdaCore/RecordFlux.git
synced 2026-02-12 13:01:56 -08:00
78 lines
3.0 KiB
Bash
Executable File
78 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Purpose: Download the Python dependencies and archive the results.
|
|
#
|
|
# Dependencies: Python 3.12 - This is the version that is currently
|
|
# expected by the Anod spec.
|
|
#
|
|
# Arguments:
|
|
# 1. TARGET_DIR - Directory to create archive into
|
|
# 2. ARCHIVE_NAME - Name of the archive to create
|
|
# ----------------------------------------------------------------------------
|
|
|
|
set -euo pipefail
|
|
|
|
# Check for required arguments
|
|
if [[ $# -ne 2 ]]; then
|
|
echo "Usage: $0 <TARGET_DIR> <ARCHIVE_NAME>" >&2
|
|
exit 1
|
|
fi
|
|
|
|
TARGET_DIR=$1
|
|
ARCHIVE_NAME=$2
|
|
|
|
PYTHON_VERSION="3.12"
|
|
PYTHON_EXECUTABLE="${PYTHON_EXECUTABLE:-python${PYTHON_VERSION}}"
|
|
|
|
# Validate Python availability
|
|
if ! command -v ${PYTHON_EXECUTABLE} >/dev/null 2>&1; then
|
|
echo "Error: ${PYTHON_EXECUTABLE} is not found. Please install it and try again." >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Validate Python version
|
|
if [ -z "$(${PYTHON_EXECUTABLE} --version | grep "^Python ${PYTHON_VERSION}")" ]; then
|
|
echo "Error: Python ${PYTHON_VERSION} is required, but $(${PYTHON_EXECUTABLE} --version) is used." >&2;
|
|
exit 1;
|
|
fi
|
|
|
|
mkdir -p "${TARGET_DIR}"
|
|
|
|
TARGET_DIR=$(realpath ${TARGET_DIR})
|
|
REQUIREMENTS_RFLX="${TARGET_DIR}/requirements-rflx.txt"
|
|
REQUIREMENTS_EXTRA="${TARGET_DIR}/requirements-extra.txt"
|
|
|
|
# Prepare for download
|
|
|
|
# The RecordFlux requirements must be split into binary and source lists first.
|
|
# The packages that are excluded below do not have a binary version (wheel)
|
|
# available for the platform that we need.
|
|
|
|
make anod_rflx_dependencies | grep -vE "(Leaving|Entering) directory" > ${REQUIREMENTS_RFLX}
|
|
make anod_extra_dependencies | grep -vE "(Leaving|Entering) directory" > ${REQUIREMENTS_EXTRA}
|
|
|
|
REQUIREMENTS_RFLX_BIN="${TARGET_DIR}/requirements-rflx-bin.txt"
|
|
REQUIREMENTS_RFLX_SRC="${TARGET_DIR}/requirements-rflx-src.txt"
|
|
|
|
cat ${REQUIREMENTS_RFLX} \
|
|
| grep -v "ld==" | grep -v "pydotplus==" | grep -v "e3-core" \
|
|
> ${REQUIREMENTS_RFLX_BIN}
|
|
grep -vFf ${REQUIREMENTS_RFLX_BIN} ${REQUIREMENTS_RFLX} > ${REQUIREMENTS_RFLX_SRC}
|
|
|
|
cd "${TARGET_DIR}"
|
|
|
|
WHEELS_DIR="${TARGET_DIR}/wheels"
|
|
mkdir -p "${WHEELS_DIR}"
|
|
|
|
# Download
|
|
# Note: The platforms here are chosen to support older systems with libc 2.17 (e.g. RHEL 7)
|
|
${PYTHON_EXECUTABLE} -m pip download --platform manylinux_2_17_x86_64 --platform manylinux1_x86_64 --platform manylinux2014_x86_64 --disable-pip-version-check --python-version=${PYTHON_VERSION} --only-binary=:all: -r "${REQUIREMENTS_EXTRA}" -d ${WHEELS_DIR}
|
|
${PYTHON_EXECUTABLE} -m pip download --platform manylinux_2_17_x86_64 --platform manylinux1_x86_64 --platform manylinux2014_x86_64 --disable-pip-version-check --python-version=${PYTHON_VERSION} --only-binary=:all: -r "${REQUIREMENTS_RFLX_BIN}" -d ${WHEELS_DIR}
|
|
${PYTHON_EXECUTABLE} -m pip download --disable-pip-version-check -r "${REQUIREMENTS_RFLX_SRC}" -d ${WHEELS_DIR}
|
|
|
|
# Create the archive
|
|
tar -czf "${TARGET_DIR}/${ARCHIVE_NAME}" -C "${TARGET_DIR}" wheels
|
|
|
|
echo "Created archive ${ARCHIVE_NAME}"
|