openFOAM-RANS-to-GPU/scripts/build_python_stepper.sh

47 lines
1.8 KiB
Bash
Raw Permalink Normal View History

2026-07-25 07:09:19 +00:00
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)"
PYTHON_BIN="${PYTHON_BIN:-${ROOT_DIR}/.venv/bin/python}"
JOBS="${JOBS:-$(nproc)}"
if [[ ! -x "${PYTHON_BIN}" ]]; then
echo "Python interpreter not found: ${PYTHON_BIN}" >&2
echo "Run: uv sync --dev" >&2
exit 1
fi
# shellcheck disable=SC1091
set +u
source "${ROOT_DIR}/OpenFOAM-14/etc/bashrc" \
WM_MPLIB=Dummy \
ParaView_TYPE=none \
SCOTCH_TYPE=none \
ZOLTAN_TYPE=none
set -u
export FOAM_USER_LIBBIN="${ROOT_DIR}/python/src/foam_stepper"
export FOAM_USER_APPBIN="${ROOT_DIR}/pythonStepper/bin"
mkdir -p "${FOAM_USER_LIBBIN}" "${FOAM_USER_APPBIN}"
export PYBIND11_INCLUDES="$("${PYTHON_BIN}" -m pybind11 --includes)"
PYTHON_LIBDIR="$("${PYTHON_BIN}" -c 'import sysconfig; print(sysconfig.get_config_var("LIBDIR") or "")')"
PYTHON_LINK_LIBS="$("${PYTHON_BIN}" -c 'import sysconfig; print(" ".join(v for v in [sysconfig.get_config_var("LIBDIR") and "-L" + sysconfig.get_config_var("LIBDIR"), sysconfig.get_config_var("LDLIBRARY") and "-l" + sysconfig.get_config_var("LDLIBRARY").removeprefix("lib").removesuffix(".so"), sysconfig.get_config_var("LIBS"), sysconfig.get_config_var("SYSLIBS")] if v))')"
RPATH_DIRS=("${FOAM_LIBBIN}" "${FOAM_LIBBIN}/${FOAM_MPI}" "${FOAM_EXT_LIBBIN}")
if [[ -n "${PYTHON_LIBDIR}" ]]; then
RPATH_DIRS+=("${PYTHON_LIBDIR}")
fi
RPATH_LIBS="-Wl,--disable-new-dtags"
for lib_dir in "${RPATH_DIRS[@]}"; do
if [[ -d "${lib_dir}" ]]; then
RPATH_LIBS="${RPATH_LIBS} -Wl,-rpath,${lib_dir}"
fi
done
export PYTHON_LIBS="${PYTHON_LINK_LIBS} ${RPATH_LIBS}"
rm -f "${FOAM_USER_LIBBIN}/_foam_stepper.so"
wmake -j "${JOBS}" libso "${ROOT_DIR}/pythonStepper/pyfoam_stepper"
printf 'Built %s/_foam_stepper.so\n' "${FOAM_USER_LIBBIN}"