Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python3-espressomd for openSUSE:Factory checked in at 2025-03-24 13:27:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python3-espressomd (Old) and /work/SRC/openSUSE:Factory/.python3-espressomd.new.2696 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-espressomd" Mon Mar 24 13:27:19 2025 rev:23 rq:1255106 version:4.2.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python3-espressomd/python3-espressomd.changes 2024-09-12 16:58:01.761029025 +0200 +++ /work/SRC/openSUSE:Factory/.python3-espressomd.new.2696/python3-espressomd.changes 2025-03-24 13:27:19.359474992 +0100 @@ -1,0 +2,21 @@ +Fri Mar 21 14:41:09 UTC 2025 - Bernhard Wiedemann <bwiedem...@suse.com> + +- Add espresso-cython.patch to drop build date (boo#1047218) + +------------------------------------------------------------------- +Thu Mar 13 15:25:08 UTC 2025 - Jean-Noel Grad <jg...@icp.uni-stuttgart.de> + +- Fix Python executable path hint + +------------------------------------------------------------------- +Thu Mar 13 15:10:17 UTC 2025 - Jean-Noel Grad <jg...@icp.uni-stuttgart.de> + +- Disable HDF5 feature + +------------------------------------------------------------------- +Thu Mar 13 15:04:19 UTC 2025 - Jean-Noel Grad <jg...@icp.uni-stuttgart.de> + +- Fix breaking builds +- Disable features that rely on unmet dependencies (h5py, scipy) + +------------------------------------------------------------------- New: ---- espresso-cython.patch BETA DEBUG BEGIN: New: - Add espresso-cython.patch to drop build date (boo#1047218) BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python3-espressomd.spec ++++++ --- /var/tmp/diff_new_pack.Q3xqpl/_old 2025-03-24 13:27:20.007501993 +0100 +++ /var/tmp/diff_new_pack.Q3xqpl/_new 2025-03-24 13:27:20.011502160 +0100 @@ -1,7 +1,7 @@ # # spec file for package python3-espressomd # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC # Copyright (c) 2014 Christoph Junghans # # All modifications and additions to the file contributed by third parties @@ -18,6 +18,15 @@ # Build with OpenMPI +%if 0%{?suse_version} > 1600 && 0%{?is_opensuse} +%define is_tumbleweed 1 +%define boostver %{nil} +%define pyver 3 +%else +%define is_tumbleweed 0 +%define boostver 1_75_0 +%define pyver 311 +%endif %define mpiver openmpi4 %define pkgname espresso %define modname %{pkgname}md @@ -32,34 +41,31 @@ Patch0: numpy.patch # PATCH-FIX-UPSTREAM cmake.patch gh#espressomd/espresso#4992 Patch1: cmake.patch +# PATCH-FIX-UPSTREAM https://github.com/espressomd/espresso/commit/2111342 +Patch2: espresso-cython.patch # According to gh#espressomd/espresso#4537 32bit architectures are not supported any more ExcludeArch: %{ix86} armv7l +BuildRequires: %{mpiver}-devel +BuildRequires: chrpath BuildRequires: cmake BuildRequires: fftw3-devel BuildRequires: gcc-c++ -# Currently libboost_mpi-devel and hdf5 use different mpi versions -# BuildRequires: hdf5-devel -BuildRequires: %{mpiver}-devel -BuildRequires: chrpath BuildRequires: gsl-devel -BuildRequires: hdf5-%{mpiver}-devel -BuildRequires: libboost_filesystem-devel -BuildRequires: libboost_mpi-devel -BuildRequires: libboost_system-devel -BuildRequires: libboost_test-devel -BuildRequires: python3-Cython < 3.0.10 -BuildRequires: python3-devel -BuildRequires: python3-h5py -BuildRequires: python3-numpy-devel -BuildRequires: python3-scipy -BuildRequires: python3-setuptools +BuildRequires: libboost_filesystem%{boostver}-devel +BuildRequires: libboost_mpi%{boostver}-devel +BuildRequires: libboost_system%{boostver}-devel +BuildRequires: libboost_test%{boostver}-devel +BuildRequires: python%{pyver}-Cython < 3.0.13 +BuildRequires: python%{pyver}-devel +BuildRequires: python%{pyver}-numpy-devel +BuildRequires: python%{pyver}-setuptools +%if 0%{?is_tumbleweed} +BuildRequires: python%{pyver}-scipy +%endif BuildRequires: zlib-devel Provides: libEspresso4 = %{version}-%{release} Obsoletes: libEspresso4 < 4.1 -Requires: python3-h5py Requires: python3-numpy -# make sure rpm pulls in the right dependency -Requires: libhdf5-%{mpiver} %description ESPResSo is a highly versatile software package for performing and analyzing @@ -73,23 +79,39 @@ %autosetup -p1 -n %{pkgname} # Fix shebang line for pypresso sed -i -E '1s@^#!/usr/bin/env[[:blank:]]+sh@#!/bin/sh@' src/python/pypresso.cmakein -# skip mpiio test - it fails if inwoked with cmake, direct run with python3 -m unittest pass +# skip mpiio test - it fails if invoked with cmake, directly run with python3 -m unittest pass sed -i '/mpiio\.py/d' testsuite/python/CMakeLists.txt +%if 0%{?is_tumbleweed} == 0 +# remove tests that depend on scipy (unavailable in Leap 15.6) +sed -i '/checkpoint_test(/d' testsuite/python/CMakeLists.txt +sed -i '/ MAX_NUM_PROC 1)/d' testsuite/python/CMakeLists.txt +sed -i '/rotation\.py/d' testsuite/python/CMakeLists.txt +sed -i '/reaction_complex\.py/d' testsuite/python/CMakeLists.txt +sed -i '/canonical_ensemble\.py/d' testsuite/python/CMakeLists.txt +sed -i '/lb_pressure_tensor\.py/d' testsuite/python/CMakeLists.txt +sed -i '/analyze_acf\.py/d' testsuite/python/CMakeLists.txt +sed -i '/analyze_distribution\.py/d' testsuite/python/CMakeLists.txt +sed -i '/random_pairs\.py/d' testsuite/python/CMakeLists.txt +sed -i '/oif_volume_conservation\.py/d' testsuite/python/CMakeLists.txt +%endif %build source %{_libdir}/mpi/gcc/%{mpiver}/bin/mpivars.sh # gh#espressomd/espresso#3396 %define _lto_cflags %{nil} -#force usage of shared hdf5 -export HDF5_USE_SHLIB=yes # overwrite .so linker flags on SUSE distros: drop --no-undefined # we don't install {i,}pypresso scripts as they aren't needed when installing in /usr %cmake \ -DCMAKE_SHARED_LINKER_FLAGS='-Wl,--as-needed -Wl,-z,now' \ -DCMAKE_SKIP_RPATH=ON \ + -DWITH_HDF5=OFF \ -DLIBDIR=%{_libdir} \ +%if 0%{?is_tumbleweed} -DPYTHON_EXECUTABLE=%{_bindir}/python3 \ +%else + -DPYTHON_EXECUTABLE=%{_bindir}/python3.11 \ +%endif -DPYTHON_INSTDIR=%{python3_sitearch} \ -DINSTALL_PYPRESSO=ON %make_jobs ++++++ espresso-cython.patch ++++++ diff --git a/src/config/gen_featureconfig.py b/src/config/gen_featureconfig.py index 59cf81068d..b8d713e947 100644 --- a/src/config/gen_featureconfig.py +++ b/src/config/gen_featureconfig.py @@ -1,3 +1,4 @@ +# # Copyright (C) 2013-2022 The ESPResSo project # Copyright (C) 2012 Olaf Lenz # @@ -16,9 +17,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # -# This script generates the files featureconfig.h and featureconfig.c. -# -import time + import string import inspect import sys @@ -32,67 +31,78 @@ if len(sys.argv) != 4: print(f"Usage: {sys.argv[0]} DEFFILE HPPFILE CPPFILE", file=sys.stderr) exit(2) -deffilename, hfilename, cfilename = sys.argv[1:5] - -print("Reading definitions from " + deffilename + "...") -defs = featuredefs.defs(deffilename) -print("Done.") - -print("Writing " + hfilename + "...") -hfile = open(hfilename, 'w') - -hfile.write("""/* -WARNING: This file was autogenerated by +path_def, path_hpp, path_cpp = sys.argv[1:5] - %s on %s +print(f"Reading definitions from {path_def}") +defs = featuredefs.defs(path_def) - Do not modify it or your changes will be overwritten! - Modify features.def instead. +disclaimer = f"""/* + WARNING: This file was generated automatically. + Do not modify it or your changes will be overwritten! + Modify features.def instead. */ -#ifndef ESPRESSO_FEATURECONFIG_HPP -#define ESPRESSO_FEATURECONFIG_HPP - -#include "cmake_config.hpp" -#include "myconfig-final.hpp" +""" -""" % (sys.argv[0], time.asctime())) +print(f"Writing {path_hpp}") +hfile = open(path_hpp, 'w') +hfile.write(disclaimer) +hfile.write(""" +#ifndef ESPRESSO_SRC_CONFIG_CONFIG_FEATURES_HPP +#define ESPRESSO_SRC_CONFIG_CONFIG_FEATURES_HPP +""") # external features can only be set by the build # system, so in case the user has defined some of # them, we undef all external features and include # the config from the build system again, to make # sure only the detected ones are set. -hfile.write('/* Guards for externals */') +hfile.write(""" +/*********************************/ +/* Handle definitions from CMake */ +/*********************************/ + +#include "cmake_config.hpp" +#include "myconfig-final.hpp" +""") external_template = string.Template(""" // $feature is external #if defined($feature) #undef $feature #endif """) -for feature in defs.externals: +for feature in sorted(defs.externals): hfile.write(external_template.substitute(feature=feature)) # Include definitions from CMake hfile.write(""" -/* Definitions from CMake */ #include "cmake_config.hpp" """) # handle implications -hfile.write('/* Handle implications */') +hfile.write("""\ +/***********************/ +/* Handle implications */ +/***********************/ +""") implication_template = string.Template(""" // $feature implies $implied #if defined($feature) && !defined($implied) #define $implied #endif """) -for feature, implied in defs.implications: +for feature, implied in sorted(defs.implications): hfile.write(implication_template.substitute( feature=feature, implied=implied)) +hfile.write("\n") + # output warnings if internal features are set manually -hfile.write('/* Warn when derived switches are specified manually */') +hfile.write("""\ +/*****************************************************/ +/* Warn when derived switches are specified manually */ +/*****************************************************/ +""") derivation_template = string.Template(""" // $feature equals $expr #ifdef $feature @@ -101,58 +111,52 @@ derivation_template = string.Template(""" #define $feature #endif """) -for feature, expr, cppexpr in defs.derivations: +for feature, expr, cppexpr in sorted(defs.derivations): hfile.write(derivation_template.substitute( feature=feature, cppexpr=cppexpr, expr=expr)) -# write footer -# define external FEATURES and NUM_FEATURES hfile.write(""" -extern const char* FEATURES[]; -extern const int NUM_FEATURES; -#endif /* of _FEATURECONFIG_HPP */""") -hfile.close() -print("Done.") +extern char const *const FEATURES[]; +extern char const *const FEATURES_ALL[]; +extern unsigned int const NUM_FEATURES; +extern unsigned int const NUM_FEATURES_ALL; -print("Writing " + cfilename + "...") -cfile = open(cfilename, 'w') - -# handle requirements - -cfile.write(f"""/* -WARNING: This file was autogenerated by +#endif +""") - {sys.argv[0]} - on - {time.asctime()} +hfile.close() - Do not modify it or your changes will be overwritten! - Modify features.def instead. -*/ +print(f"Writing {path_cpp}") +cfile = open(path_cpp, "w") -/* config.hpp includes config-features.hpp and myconfig.hpp */ +cfile.write(disclaimer) +cfile.write(f""" +#include "config-features.hpp" #include "config.hpp" +/***********************/ +/* Handle requirements */ +/***********************/ """) -cfile.write('/* Handle requirements */') - requirement_string = """ // {feature} requires {expr} #if defined({feature}) && !({cppexpr}) #error Feature {feature} requires {expr} #endif """ -for feature, expr, cppexpr in defs.requirements: +for feature, expr, cppexpr in sorted(defs.requirements): cfile.write( requirement_string.format( feature=feature, cppexpr=cppexpr, expr=expr)) cfile.write(""" - +/****************/ /* Feature list */ -const char* FEATURES[] = { +/****************/ + +char const *const FEATURES[] = { """) feature_string = """ @@ -161,14 +165,31 @@ feature_string = """ #endif """ -for feature in defs.externals.union(defs.features, defs.derived): +for feature in sorted(defs.externals.union(defs.features, defs.derived)): cfile.write(feature_string.format(feature=feature)) cfile.write(""" }; +unsigned int const NUM_FEATURES = sizeof(FEATURES) / sizeof(char*); +""") -const int NUM_FEATURES = sizeof(FEATURES)/sizeof(char*); +cfile.write(""" +/*********************/ +/* Feature full list */ +/*********************/ + +char const *const FEATURES_ALL[] = {\ +""") + +feature_string = """ + "{feature}",""" + +for feature in sorted(defs.allfeatures): + cfile.write(feature_string.format(feature=feature)) + +cfile.write(""" +}; +unsigned int const NUM_FEATURES_ALL = sizeof(FEATURES_ALL) / sizeof(char*); """) cfile.close() -print("Done.") diff --git a/src/python/espressomd/gen_code_info.py b/src/python/espressomd/gen_code_info.py index 4314d5e3c..2f14582b8 100644 --- a/src/python/espressomd/gen_code_info.py +++ b/src/python/espressomd/gen_code_info.py @@ -53,14 +53,14 @@ def features(): f = [] """) -for feature in defs.allfeatures: +for feature in sorted(defs.allfeatures): cfile.write(f"\n IF {feature} == 1:\n f.append(\"{feature}\")\n") cfile.write(f""" return sorted(f) def all_features(): - return {defs.allfeatures} + return {{{str(sorted(defs.allfeatures))[1:-1]}}} cdef extern from "version.hpp":