Skip to content

{math}[foss/2023b] Dynare v6.0w/ MATLAB 2024b#19857

Merged
akesandgren merged 10 commits intoeasybuilders:developfrom
sassy-crick:20240214201638_new_pr_Dynare60
Feb 17, 2026
Merged

{math}[foss/2023b] Dynare v6.0w/ MATLAB 2024b#19857
akesandgren merged 10 commits intoeasybuilders:developfrom
sassy-crick:20240214201638_new_pr_Dynare60

Conversation

@sassy-crick
Copy link
Copy Markdown
Collaborator

@sassy-crick sassy-crick commented Feb 14, 2024

…ynare-6.0-foss-2023b-MATLAB-2023b.eb, Dynare-5.5-foss-2022b-MATLAB-2022b.eb and patches: Dynare-6.0-pthread.patch
@sassy-crick
Copy link
Copy Markdown
Collaborator Author

For the Dynare-6.0 version I provide deliberately two ways of doing it. For MATLAB installations with EasyBuild pre-4.8.1, Dynare-6.0-foss-2023b-MATLAB-2023a_Update_3.eb is working. Anything later, which does not contain the LD_LIBRARIES_PATH in the MATLAB module files any more, the Dynare-6.0-foss-2023b-MATLAB-2023b.eb will work which should be seen as a way forward. Thanks to @boegel and @ocaisa for useful suggestions.
Changing the local_mlver will change the version of MATLAB.

@boegelbot
Copy link
Copy Markdown
Collaborator

@sassy-crick: Tests failed in GitHub Actions, see https://github.com/easybuilders/easybuild-easyconfigs/actions/runs/7906891336
Output from first failing test suite run:

ERROR: test_conflicts (test.easyconfigs.easyconfigs.EasyConfigTest)
Check whether any conflicts occur in software dependency graphs.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/easybuild-easyconfigs/easybuild-easyconfigs/test/easyconfigs/easyconfigs.py", line 330, in test_conflicts
    self.assertFalse(check_conflicts(self.ordered_specs, modules_tool(), check_inter_ec_conflicts=False),
  File "/home/runner/work/easybuild-easyconfigs/easybuild-easyconfigs/test/easyconfigs/easyconfigs.py", line 282, in ordered_specs
    EasyConfigTest.resolve_all_dependencies()
  File "/home/runner/work/easybuild-easyconfigs/easybuild-easyconfigs/test/easyconfigs/easyconfigs.py", line 214, in resolve_all_dependencies
    cls._parsed_easyconfigs, modules_tool(), retain_all_deps=True)
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/site-packages/easybuild/tools/robot.py", line 463, in resolve_dependencies
    raise_error_missing_deps(totally_missing, extra_msg="no easyconfig file or existing module found")
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/site-packages/easybuild/tools/robot.py", line 326, in raise_error_missing_deps
    raise EasyBuildError(error_msg)
easybuild.tools.build_log.EasyBuildError: 'Missing dependencies: gawk/5.3.0-foss-2022b, gawk/5.3.0-foss-2023b, x13as/1-1-b60-foss-2022b, x13as/1-1-b60-foss-2023b, SLICOT/5.9-foss-2022b, MATIO/1.5.26-foss-2023b, SLICOT/5.9-foss-2023b (no easyconfig file or existing module found)'

======================================================================
ERROR: test_dep_graph (test.easyconfigs.easyconfigs.EasyConfigTest)
Unit test that builds a full dependency graph.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/easybuild-easyconfigs/easybuild-easyconfigs/test/easyconfigs/easyconfigs.py", line 317, in test_dep_graph
    dep_graph(fn, self.ordered_specs)
  File "/home/runner/work/easybuild-easyconfigs/easybuild-easyconfigs/test/easyconfigs/easyconfigs.py", line 282, in ordered_specs
    EasyConfigTest.resolve_all_dependencies()
  File "/home/runner/work/easybuild-easyconfigs/easybuild-easyconfigs/test/easyconfigs/easyconfigs.py", line 214, in resolve_all_dependencies
    cls._parsed_easyconfigs, modules_tool(), retain_all_deps=True)
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/site-packages/easybuild/tools/robot.py", line 463, in resolve_dependencies
    raise_error_missing_deps(totally_missing, extra_msg="no easyconfig file or existing module found")
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/site-packages/easybuild/tools/robot.py", line 326, in raise_error_missing_deps
    raise EasyBuildError(error_msg)
easybuild.tools.build_log.EasyBuildError: 'Missing dependencies: gawk/5.3.0-foss-2022b, gawk/5.3.0-foss-2023b, x13as/1-1-b60-foss-2022b, x13as/1-1-b60-foss-2023b, SLICOT/5.9-foss-2022b, MATIO/1.5.26-foss-2023b, SLICOT/5.9-foss-2023b (no easyconfig file or existing module found)'

======================================================================
ERROR: test_dep_versions_per_toolchain_generation (test.easyconfigs.easyconfigs.EasyConfigTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/runner/work/easybuild-easyconfigs/easybuild-easyconfigs/test/easyconfigs/easyconfigs.py", line 923, in test_dep_versions_per_toolchain_generation
    for ec in self.ordered_specs:
  File "/home/runner/work/easybuild-easyconfigs/easybuild-easyconfigs/test/easyconfigs/easyconfigs.py", line 282, in ordered_specs
    EasyConfigTest.resolve_all_dependencies()
  File "/home/runner/work/easybuild-easyconfigs/easybuild-easyconfigs/test/easyconfigs/easyconfigs.py", line 214, in resolve_all_dependencies
    cls._parsed_easyconfigs, modules_tool(), retain_all_deps=True)
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/site-packages/easybuild/tools/robot.py", line 463, in resolve_dependencies
    raise_error_missing_deps(totally_missing, extra_msg="no easyconfig file or existing module found")
  File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/site-packages/easybuild/tools/robot.py", line 326, in raise_error_missing_deps
    raise EasyBuildError(error_msg)
easybuild.tools.build_log.EasyBuildError: 'Missing dependencies: gawk/5.3.0-foss-2022b, gawk/5.3.0-foss-2023b, x13as/1-1-b60-foss-2022b, x13as/1-1-b60-foss-2023b, SLICOT/5.9-foss-2022b, MATIO/1.5.26-foss-2023b, SLICOT/5.9-foss-2023b (no easyconfig file or existing module found)'

----------------------------------------------------------------------
Ran 19155 tests in 982.335s

FAILED (errors=3)
ERROR: Not all tests were successful

bleep, bloop, I'm just a bot (boegelbot v20200716.01)
Please talk to my owner @boegel if you notice me acting stupid),
or submit a pull request to https://github.com/boegel/boegelbot fix the problem.

@akesandgren akesandgren self-assigned this Jun 16, 2025
@github-actions github-actions Bot added update and removed new labels Jun 24, 2025
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 24, 2025

Updated software Dynare-5.5-foss-2022b-MATLAB-2022b-r5.eb

Diff against Dynare-6.0-foss-2023b-MATLAB-2023b.eb

easybuild/easyconfigs/d/Dynare/Dynare-6.0-foss-2023b-MATLAB-2023b.eb

diff --git a/easybuild/easyconfigs/d/Dynare/Dynare-6.0-foss-2023b-MATLAB-2023b.eb b/easybuild/easyconfigs/d/Dynare/Dynare-5.5-foss-2022b-MATLAB-2022b-r5.eb
index bfa5266f2e..f55ed62c12 100644
--- a/easybuild/easyconfigs/d/Dynare/Dynare-6.0-foss-2023b-MATLAB-2023b.eb
+++ b/easybuild/easyconfigs/d/Dynare/Dynare-5.5-foss-2022b-MATLAB-2022b-r5.eb
@@ -2,13 +2,14 @@
 # Changing the local_mlver string will load a different MATLAB version
 # Author: J. Sassmannshausen (Imperial College London/UK)
 
-easyblock = 'MesonNinja'
+easyblock = 'ConfigureMake'
 
 name = 'Dynare'
-version = '6.0'
-local_mlver = '2023b'
+version = '5.5'
+local_mlver = '2022b-r5'
 versionsuffix = '-MATLAB-%s' % local_mlver
 
+
 homepage = 'https://www.dynare.org'
 description = """Dynare is a software platform for handling a wide class of economic models,
 in particular dynamic stochastic general equilibrium (DSGE) and overlapping generations (OLG)
@@ -19,46 +20,41 @@ differently: on one extreme, models where agents perfectly anticipate the future
 other extreme, models where agents have limited rationality or imperfect knowledge of the
 state of the economy and, hence, form their expectations through a learning process."""
 
-toolchain = {'name': 'foss', 'version': '2023b'}
+toolchain = {'name': 'foss', 'version': '2022b'}
 
 source_urls = ['https://www.dynare.org/release/source']
 sources = ['%(namelower)s-%(version)s.tar.xz']
-patches = ['%(name)s-%(version)s-pthread.patch']
-checksums = [
-    {'dynare-6.0.tar.xz': '52460046d44776d936986f52649f9e48966b07e414a864d83531d43e568ab682'},
-    {'Dynare-6.0-pthread.patch': '20d8537456d1febea1dbefc7edc2ed36fc63d7ce4cdfcd865b52453b870d6116'},
-]
+checksums = ['11deae32997e79e500a9802c6408067749485ea7ef3c08bbf24141f2b0e00326']
 
 builddependencies = [
     ('gawk', '5.3.0'),
     ('Bison', '3.8.2'),
     ('flex', '2.6.4'),
-    ('Boost', '1.83.0'),
-    ('Meson', '1.2.3'),
-    ('Ninja', '1.11.1'),
-    ('pkgconf', '2.0.3'),
+    ('Boost', '1.81.0'),
 ]
 
 dependencies = [
     ('x13as', '1-1-b60'),
-    ('MATIO', '1.5.26'),
+    ('MATIO', '1.5.23'),
     ('GSL', '2.7'),
     ('Szip', '2.1.1'),
     ('SLICOT', '5.9'),
     ('MATLAB', local_mlver, '', SYSTEM),
 ]
 
-preconfigopts = 'export MATLABROOT=${EBROOTMATLAB} && module del MATLAB && ml; '
-configopts = "-Dprefer_static=true -Dmatlab_path=${MATLABROOT} -Dbuildtype=release "
+preconfigopts = 'CXXFLAGS="$CXXFLAGS -static-libstdc++" ; '
+
+configopts = "--disable-doc --disable-octave --with-blas='-lflexiblas' "
+configopts += "--with-lapack='-lflexiblas' "
+configopts += "--with-matlab=${EBROOTMATLAB} "
+
+test_cmd = 'cd tests && make -j 4 m/deterministic_simulations'
 
-# this still takes quite too long:
-# runtest = 'meson test --num-processes 3'
-# This take around 40 mins or so:
-runtest = 'meson test --num-processes 3 --suite deterministic_simulations '
+sanity_check_commands = ['dynare++ --version', 'dynare++ --help']
 
 sanity_check_paths = {
-    'files': ['bin/dynare-preprocessor'],
-    'dirs': ['lib/dynare'],
+    'files': ['bin/dynare++', 'bin/dynare-preprocessor'],
+    'dirs': ['lib/dynare', 'share'],
 }
 
 moduleclass = 'math'

Updated software Dynare-6.0-foss-2023b-MATLAB-2023b.eb

Diff against Dynare-5.5-foss-2022b-MATLAB-2022b-r5.eb

easybuild/easyconfigs/d/Dynare/Dynare-5.5-foss-2022b-MATLAB-2022b-r5.eb

diff --git a/easybuild/easyconfigs/d/Dynare/Dynare-5.5-foss-2022b-MATLAB-2022b-r5.eb b/easybuild/easyconfigs/d/Dynare/Dynare-6.0-foss-2023b-MATLAB-2023b.eb
index f55ed62c12..bfa5266f2e 100644
--- a/easybuild/easyconfigs/d/Dynare/Dynare-5.5-foss-2022b-MATLAB-2022b-r5.eb
+++ b/easybuild/easyconfigs/d/Dynare/Dynare-6.0-foss-2023b-MATLAB-2023b.eb
@@ -2,14 +2,13 @@
 # Changing the local_mlver string will load a different MATLAB version
 # Author: J. Sassmannshausen (Imperial College London/UK)
 
-easyblock = 'ConfigureMake'
+easyblock = 'MesonNinja'
 
 name = 'Dynare'
-version = '5.5'
-local_mlver = '2022b-r5'
+version = '6.0'
+local_mlver = '2023b'
 versionsuffix = '-MATLAB-%s' % local_mlver
 
-
 homepage = 'https://www.dynare.org'
 description = """Dynare is a software platform for handling a wide class of economic models,
 in particular dynamic stochastic general equilibrium (DSGE) and overlapping generations (OLG)
@@ -20,41 +19,46 @@ differently: on one extreme, models where agents perfectly anticipate the future
 other extreme, models where agents have limited rationality or imperfect knowledge of the
 state of the economy and, hence, form their expectations through a learning process."""
 
-toolchain = {'name': 'foss', 'version': '2022b'}
+toolchain = {'name': 'foss', 'version': '2023b'}
 
 source_urls = ['https://www.dynare.org/release/source']
 sources = ['%(namelower)s-%(version)s.tar.xz']
-checksums = ['11deae32997e79e500a9802c6408067749485ea7ef3c08bbf24141f2b0e00326']
+patches = ['%(name)s-%(version)s-pthread.patch']
+checksums = [
+    {'dynare-6.0.tar.xz': '52460046d44776d936986f52649f9e48966b07e414a864d83531d43e568ab682'},
+    {'Dynare-6.0-pthread.patch': '20d8537456d1febea1dbefc7edc2ed36fc63d7ce4cdfcd865b52453b870d6116'},
+]
 
 builddependencies = [
     ('gawk', '5.3.0'),
     ('Bison', '3.8.2'),
     ('flex', '2.6.4'),
-    ('Boost', '1.81.0'),
+    ('Boost', '1.83.0'),
+    ('Meson', '1.2.3'),
+    ('Ninja', '1.11.1'),
+    ('pkgconf', '2.0.3'),
 ]
 
 dependencies = [
     ('x13as', '1-1-b60'),
-    ('MATIO', '1.5.23'),
+    ('MATIO', '1.5.26'),
     ('GSL', '2.7'),
     ('Szip', '2.1.1'),
     ('SLICOT', '5.9'),
     ('MATLAB', local_mlver, '', SYSTEM),
 ]
 
-preconfigopts = 'CXXFLAGS="$CXXFLAGS -static-libstdc++" ; '
-
-configopts = "--disable-doc --disable-octave --with-blas='-lflexiblas' "
-configopts += "--with-lapack='-lflexiblas' "
-configopts += "--with-matlab=${EBROOTMATLAB} "
-
-test_cmd = 'cd tests && make -j 4 m/deterministic_simulations'
+preconfigopts = 'export MATLABROOT=${EBROOTMATLAB} && module del MATLAB && ml; '
+configopts = "-Dprefer_static=true -Dmatlab_path=${MATLABROOT} -Dbuildtype=release "
 
-sanity_check_commands = ['dynare++ --version', 'dynare++ --help']
+# this still takes quite too long:
+# runtest = 'meson test --num-processes 3'
+# This take around 40 mins or so:
+runtest = 'meson test --num-processes 3 --suite deterministic_simulations '
 
 sanity_check_paths = {
-    'files': ['bin/dynare++', 'bin/dynare-preprocessor'],
-    'dirs': ['lib/dynare', 'share'],
+    'files': ['bin/dynare-preprocessor'],
+    'dirs': ['lib/dynare'],
 }
 
 moduleclass = 'math'

@akesandgren
Copy link
Copy Markdown
Contributor

@sassy-crick Looks like a bunch of trailing whitespaces here too

@sassy-crick
Copy link
Copy Markdown
Collaborator Author

How do we address this:

Found 2 variants of 'MATLAB' dependency in easyconfigs using '2022b' toolchain generation
* version: 2022b-r5; versionsuffix:  as dep for {'LIBSVM-MATLAB-3.30-GCCcore-11.3.0-MATLAB-2022b-r5.eb'}
  * version: 2022b; versionsuffix:  as dep for {'Dynare-5.5-foss-2022b-MATLAB-2022b.eb'}

One of them is the r5 release, the other on the initial one.

@akesandgren
Copy link
Copy Markdown
Contributor

Since -r5 is already used as a dependency the easy way out is to use that version in Dynare too, at least for the PR to be merged.
You can of course still use the default MATLAB one locally.

@sassy-crick
Copy link
Copy Markdown
Collaborator Author

Since -r5 is already used as a dependency the easy way out is to use that version in Dynare too, at least for the PR to be merged. You can of course still use the default MATLAB one locally.

Good idea. I have used the latest version of MATLAB which is merged in EasyBuild for both EasyConfig files. I have moved MATLAB as a dependency, rather than a builddependency, for Dynare-6.0-foss-2023b-MATLAB-2023b.eb. Please have a close look again.
@akesandgren : Do you have MATLAB so you can do an independent build? We currently don't have the 2022 version installed on our cluster but that is a minor problem.

('MATLAB', local_mlver, '', SYSTEM),
]

preconfigopts = 'export MATLABROOT=${EBROOTMATLAB} && module del MATLAB && ml; '
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why this? and you must not use "ml" since there is no guarantee that all module systems actually have that, only module is safe.
In the older version you aren't deleting the MATLAB module, so why here?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are correct. That was me not understanding something at the time. I have changed that now, thanks for pointing that out.

@sassy-crick
Copy link
Copy Markdown
Collaborator Author

Test result

Successfully installed /rds/general/user/jsassman/home/easybuild/dynare-matlab/pr/Dynare-6.0-foss-2023b-MATLAB-2023b.eb

Overview of tested easyconfigs (in order)

  • SUCCESS Dynare-6.0-foss-2023b-MATLAB-2023b.eb

Time info

  • start: Wed, 17 Dec 2025 00:34:03 +0000 (UTC)
  • end: Wed, 17 Dec 2025 00:46:33 +0000 (UTC)

EasyBuild info

  • easybuild-framework version: 5.1.2
  • easybuild-easyblocks version: 5.1.2
  • command line:
eb --robot --download-timeout=100 --hooks=/rds/easybuild/hooks/cx3-phase2-hooks.py --rebuild Dynare-6.0-foss-2023b-MATLAB-2023b.eb

Full test report can be found here

@sassy-crick sassy-crick changed the title {math}[foss/2023b] Dynare v6.0, Dynare v5.5 w/ MATLAB 2022b, MATLAB 2023a_Update_3, ... {math}[foss/2023b] Dynare v6.0w/ MATLAB 2023a_Update_3 Dec 17, 2025
@sassy-crick sassy-crick changed the title {math}[foss/2023b] Dynare v6.0w/ MATLAB 2023a_Update_3 {math}[foss/2023b] Dynare v6.0w/ MATLAB 2023b Dec 18, 2025
Comment thread easybuild/easyconfigs/d/Dynare/Dynare-6.0-foss-2023b-MATLAB-2023b.eb Outdated
@sassy-crick
Copy link
Copy Markdown
Collaborator Author

Test report can be found here

@akesandgren akesandgren changed the title {math}[foss/2023b] Dynare v6.0w/ MATLAB 2023b {math}[foss/2023b] Dynare v6.0w/ MATLAB 2024b Feb 16, 2026
@akesandgren
Copy link
Copy Markdown
Contributor

Test report by @akesandgren
SUCCESS
Build succeeded for 1 out of 1 (total: 19 mins 54 secs) (1 easyconfigs in total)
b-cn1611.hpc2n.umu.se - Linux Ubuntu 22.04, x86_64, AMD EPYC 7313 16-Core Processor, 1 x NVIDIA NVIDIA A100 80GB PCIe, 580.126.09, Python 3.10.12
See https://gist.github.com/akesandgren/ae9e2ceb7a8ba1dc11cd0676eb39a8e1 for a full test report.

Copy link
Copy Markdown
Contributor

@akesandgren akesandgren left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@akesandgren akesandgren added this to the release after 5.2.1 milestone Feb 17, 2026
@akesandgren
Copy link
Copy Markdown
Contributor

Going in, thanks @sassy-crick!

@akesandgren akesandgren merged commit 1c5f4fb into easybuilders:develop Feb 17, 2026
5 checks passed
@sassy-crick sassy-crick deleted the 20240214201638_new_pr_Dynare60 branch March 5, 2026 22:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants