8 Commits

Author SHA1 Message Date
087926728a docs(version): v0.7.6rc3 -> v0.7.6rc3.1
this version uses the target workaround which we use for the SUNDIALS suite to get meson to recognize it as position indepenednt code to CppAD
2025-12-22 08:23:20 -05:00
df09564c9a fix(cppad): build static lib for cppad
this is needed for gcc build and does not break clang build
2025-12-22 08:22:07 -05:00
0bf3ae625b docs(meson): version v0.7.5rc3 -> v0.7.6rc3 2025-12-22 08:18:02 -05:00
5c1714410a fix(engine_defined): fixed gcc build warnings 2025-12-22 08:17:23 -05:00
e6a9d8c5bb fix(wheels): fixed macos wheel generation to pin meson==1.9.1 2025-12-22 07:09:51 -05:00
e73daf88b3 docs(version): v0.7.4rc3 -> v0.7.5rc4 2025-12-20 16:41:27 -05:00
e197227908 fix(meson): address #13
Address regresion in meson 1.10.1 by pinning version to 1.9.1
2025-12-20 16:40:28 -05:00
f1f793f775 Merge pull request #12 from tboudreaux/perf/coloring
Perf/coloring
2025-12-20 16:17:08 -05:00
11 changed files with 40 additions and 61 deletions

View File

@@ -48,7 +48,7 @@ PROJECT_NAME = GridFire
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = v0.7.4_rc2
PROJECT_NUMBER = v0.7.5rc3
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewers a

View File

@@ -1,21 +1,11 @@
#cppad_inc = include_directories('include', is_system: true)
#cppad_dep = declare_dependency(
# include_directories: cppad_inc,
#)
#
#message('Registering CppAD headers for installation...')
#install_subdir('include/cppad', install_dir: get_option('includedir'))
#message('Done registering CppAD headers for installation!')
#
cppad_cmake_options = cmake.subproject_options()
cppad_cmake_options.add_cmake_defines({
'cppad_static_lib': 'true',
'cpp_mas_num_threads': '10',
'cppad_debug_and_release': 'false',
'include_doc': 'false'
'include_doc': 'false',
'CMAKE_POSITION_INDEPENDENT_CODE': true
})
cppad_cmake_options.set_install(false)
@@ -25,4 +15,22 @@ cppad_sp = cmake.subproject(
options: cppad_cmake_options,
)
cppad_dep = cppad_sp.dependency('cppad_lib').as_system()
cppad_target = cppad_sp.target('cppad_lib')
cppad_objs = [cppad_target.extract_all_objects(recursive: true)]
cppad_incs = cppad_sp.include_directories('cppad_lib')
empty_cppad_file = configure_file(output: 'cppad_dummy_ar.cpp', command: ['echo'], capture: true)
libcppad_static = static_library(
'cppad-static',
empty_cppad_file,
objects: cppad_objs,
include_directories: cppad_incs,
pic: true,
install: false
)
cppad_dep = declare_dependency(
link_with: libcppad_static,
include_directories: cppad_incs
)

View File

@@ -7,10 +7,10 @@ if meson.is_cross_build() and host_machine.system() == 'darwin'
py_inc_dir = include_directories('../../cross/python_includes/python-' + py_ver + '/include/python' + py_ver)
py_dep = declare_dependency(include_directories: py_inc_dir)
py_module_prefix = ''
py_module_suffic = 'so'
py_module_suffix = 'so'
meson.override_dependency('python3', py_dep)
else
py_dep = py_installation.dependency()
py_module_prefix = ''
py_module_suffic = 'so'
py_module_suffix = 'so'
endif

View File

@@ -18,7 +18,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# *********************************************************************** #
project('GridFire', ['c', 'cpp'], version: 'v0.7.4rc3', default_options: ['cpp_std=c++23'], meson_version: '>=1.5.0')
project('GridFire', ['c', 'cpp'], version: 'v0.7.6rc3.1', default_options: ['cpp_std=c++23'], meson_version: '>=1.5.0')
# Start by running the code which validates the build environment
subdir('build-check')

View File

@@ -1,14 +1,14 @@
[build-system]
requires = [
"meson-python>=0.15.0", # Use a recent version
"meson>=1.6.0", # Specify your Meson version requirement
"meson==1.9.1", # Specify your Meson version requirement
"pybind11>=2.10" # pybind11 headers needed at build time
]
build-backend = "mesonpy"
[project]
name = "gridfire" # Choose your Python package name
version = "v0.7.4rc3" # Your project's version
version = "v0.7.5rc3" # Your project's version
description = "Python interface to the GridFire nuclear network code"
readme = "README.md"
license = { file = "LICENSE.txt" } # Reference your license file [cite: 2]

View File

@@ -359,7 +359,6 @@ namespace gridfire::engine {
private:
using LogManager = LogManager;
Config<config::GridFireConfig> m_config;
quill::Logger* m_logger = LogManager::getInstance().getLogger("log");
@@ -367,4 +366,4 @@ namespace gridfire::engine {
///< Parser for the network file.
const io::NetworkFileParser& m_parser;
};
}
}

View File

@@ -1,4 +1,4 @@
[wrap-git]
url = https://github.com/4D-STAR/fourdst
revision = v0.9.18
revision = v0.9.19
depth = 1

View File

@@ -248,7 +248,7 @@ int main() {
std::array<NetIn, nZones> netIns;
for (size_t zone = 0; zone < nZones; ++zone) {
netIns[zone] = netIn;
netIns[zone].temperature = 1.0e7;
netIns[zone].temperature = 1.5e7;
}
const solver::PointSolver localSolver(engine);
@@ -256,4 +256,4 @@ int main() {
const solver::GridSolver gridSolver(engine, localSolver);
std::vector<NetOut> netOuts = gridSolver.evaluate(solverCtx, netIns | std::ranges::to<std::vector>());
}
}

View File

@@ -346,25 +346,15 @@ int main(int argc, char** argv) {
double temp = 1.5e7;
double rho = 1.5e2;
double tMax = 3.1536e+16;
double X = 0.7;
double Z = 0.02;
CLI::App app("GridFire Quick CLI Test");
// Add temp, rho, and tMax as options if desired
app.add_option("--temp", temp, "Initial Temperature")->default_val(std::format("{:5.2E}", temp));
app.add_option("--rho", rho, "Initial Density")->default_val(std::format("{:5.2E}", rho));
app.add_option("--tmax", tMax, "Maximum Time")->default_val(std::format("{:5.2E}", tMax));
// app.add_option("--X", X, "Target Hydrogen Mass Fraction")->default_val(std::format("{:5.2f}", X));
// app.add_option("--Z", Z, "Target Metal Mass Fraction")->default_val(std::format("{:5.2f}", Z));
CLI11_PARSE(app, argc, argv);
NetIn netIn = init(temp, rho, tMax);
for (const auto& [sp, y] : netIn.composition) {
std::println("Species: {}, Abundance: {}", sp.name(), y);
}
return 0;
// netIn.composition = rescale(netIn.composition, X, Z);
policy::MainSequencePolicy stellarPolicy(netIn.composition);
auto [engine, ctx_template] = stellarPolicy.construct();
@@ -374,4 +364,4 @@ int main(int argc, char** argv) {
NetOut result = solver.evaluate(solver_context, netIn);
log_results(result, netIn);
}
}

View File

@@ -31,18 +31,6 @@ cd "${TMPDIR}/project"
# 3. Build Configuration
export MACOSX_DEPLOYMENT_TARGET=15.0
# Meson options passed to pip via config-settings
# Note: We use an array to keep the command clean
MESON_ARGS=(
"-Csetup-args=-Dunity=off"
"-Csetup-args=-Dbuild-python=true"
"-Csetup-args=-Dbuild-fortran=false"
"-Csetup-args=-Dbuild-tests=false"
"-Csetup-args=-Dpkg-config=false"
"-Csetup-args=-Dunity-safe=true"
)
PYTHON_VERSIONS=("3.8.20" "3.9.23" "3.10.18" "3.11.13" "3.12.11" "3.13.5" "3.13.5t" "3.14.0rc1" "3.14.0rc1t" 'pypy3.10-7.3.19' "pypy3.11-7.3.20")
PYTHON_VERSIONS=("3.9.23" "3.10.18" "3.11.13" "3.12.11" "3.13.5" "3.13.5t" "3.14.0rc1" "3.14.0rc1t" 'pypy3.10-7.3.19' "pypy3.11-7.3.20")
if ! command -v pyenv &> /dev/null; then
@@ -56,12 +44,6 @@ for PY_VERSION in "${PYTHON_VERSIONS[@]}"; do
(
set -e
# Check if version exists in pyenv
if ! pyenv versions --bare --filter="${PY_VERSION}" &>/dev/null; then
echo "⚠️ Python version matching '${PY_VERSION}' not found by pyenv. Skipping."
continue
fi
pyenv shell "${PY_VERSION}"
PY="$(pyenv which python)"
@@ -70,14 +52,14 @@ for PY_VERSION in "${PYTHON_VERSIONS[@]}"; do
echo "----------------------------------------------------------------"
# Install build deps explicitly so we can skip build isolation
"$PY" -m pip install --upgrade pip setuptools wheel meson meson-python delocate
"$PY" -m pip install --upgrade pip setuptools wheel meson-python delocate
"$PY" -m pip install meson==1.9.1
echo "➤ Building wheel with ccache enabled"
echo "➤ Found meson version $(meson --version)"
# PERF: --no-build-isolation prevents creating a fresh venv and reinstalling meson/ninja
# for every single build, saving significant I/O and network time.
CC="ccache clang" CXX="ccache clang++" "$PY" -m pip wheel . \
--no-build-isolation \
"${MESON_ARGS[@]}" \
-w "${WHEEL_DIR}" -vv
CC="ccache clang" CXX="ccache clang++" "$PY" -m pip wheel . --no-build-isolation -w "${WHEEL_DIR}" -v
# We expect exactly one new wheel in the tmp dir per iteration
CURRENT_WHEEL=$(find "${WHEEL_DIR}" -name "*.whl" | head -n 1)

View File

@@ -75,7 +75,7 @@ for WHEEL_PATH in "$WHEEL_DIR"/*.whl; do
done < <(find "$TEMP_DIR" -name "*.so" -print0)
echo -e "${GREEN}Step 4: Repackaging wheel...${NC}"
python -m wheel pack "$TEMP_DIR/gridfire-0.7.4rc2" -d "$REPAIRED_WHEELS_DIR"
python -m wheel pack "$TEMP_DIR/gridfire-0.7.5rc3" -d "$REPAIRED_WHEELS_DIR"
REPAIRED_WHEEL_PATH="${REPAIRED_WHEELS_DIR}/${WHEEL_NAME}"
@@ -87,4 +87,4 @@ for WHEEL_PATH in "$WHEEL_DIR"/*.whl; do
echo -e "${GREEN}Repaired wheel saved to: ${REPAIRED_DELOCATED_WHEELS_DIR}/${WHEEL_NAME}${NC}"
# Clean up temporary directory
rm -rf "$TEMP_DIR"
done
done