Dear Rok,
On 14/08/2020 09:11, Rok Žitko wrote:
Hi,
I’d like to understand the policy behind the
“test_dep_versions_per_toolchain_generation” test. I am maintaining the
easyconfig files for TRIQS library and applications. Library and each
application is a separate easyconfig. Furthermore, the update cycle of
applications and libraries is not fully in sync, thus an updated
application has the most recent library version as a dependency. Due to
a complex dependency situation in the legacy version of the code (Python
2, but modern C++), we would like to keep using the specific version of
the toolchain (foss/2019a) for this major version even for updates. What
is the best way to handle this situation? Should the TRIQS library
version be part of the version suffix? As in:
easyblock = 'CMakeMake'
name = 'TRIQS-cthyb'
version = '2.2.1'
versionsuffix = '-TRIQS-2.2.3-Python-%(pyver)s’
This fails the mentioned test, however, cf.
https://github.com/easybuilders/easybuild-easyconfigs/pull/11101
Please advise!
That test helps us to avoid that we introduce easyconfig files that
require different version of dependencies within the same "generation"
of easyconfig files.
For example, we stick to a single version of Boost to ensure that all
modules installed with a 2019b toolchain are compatible with each other
(all use the same Boost version, if they depend on it).
There are exceptions to this however. One notable one is Python, where
we do allow using a Python 2 and Python 3 version to be used as
dependency within the same generation of easyconfigs (there are other
more obscure exceptions too).
We allow diverging from this rule for a specific set of software, if
there are good reason for it. It seems like TRIQS falls in that
category, and since TRIQS is not a common dependency for other stuff,
it's fine to diverge from this rule since it is unlikely that it will
affect many other easyconfigs (that would be very different for a
commonly used dependency as Boost, for example).
So, to make the tests happy, you should add TRIQS as an exception in the
'check_dep_vars' function in test/easyconfigs/easyconfigs.py .
One way would be to add the TRIQS library version in the versionsuffix,
and add it to this list of software for which we allow divering from
this rule as long as it's indicated through the versionsuffix, but
perhaps that's overkill in this context?
I would add TRIQS as an exception as long as it's only used as a
dependency for TRIQS applications, which is sort of similar to what we
do with Boost and Boost.Python already (see [1]), so it shouldn't be
difficult to add similar logic for TRIQS.
Do let us know if you need any help with this!
regards,
Kenneth
[1]
https://github.com/easybuilders/easybuild-easyconfigs/blob/25656dcc8e946f4f71d979afb683f5a3fae854da/test/easyconfigs/easyconfigs.py#L198-L205
Kind regards,
Rok