easybuild-framework icon indicating copy to clipboard operation
easybuild-framework copied to clipboard

Deprecate use of ec['parallel'] and fix updating the template value

Open Flamefire opened this issue 2 years ago • 8 comments

ec['parallel'] currently doubles as an EC option and as the storage for the calculated parallelism set by the EasyBlock. This makes it hard to reason about especially as maxparallel has pretty much the same effect. Also changes to ec['parallel'] done by e.g. easyblocks (or the set_parallel method) are not reflected by the template %(parallel)s

Solution: Introduce a property which on write updates the template and some magic to mirror the effect of the now deprecated ec['parallel']

Additional change I'd like to do: Treat parallel = False (legacy) as maxparallel =1 so cfg.parallel is always a number

See https://github.com/easybuilders/easybuild-framework/pull/3811#issuecomment-911819520 for the motivation

Flamefire avatar Sep 20 '21 15:09 Flamefire

Makes sense in general, but haven't reviewed this in detail yet (I'm wondering whether we can avoid the parallelLegacy part).

@Flamefire Have you looked into the impact that this will have on both easyblocks (where self.cfg['parallel'] is used) and easyconfigs (where any that use parallel = X will basically be broken because of this)?

I have a feeling that the way this is done currently is too "hard" of a change, we should do it in a way that just results in a warning when self.cfg['parallel'] or parallel = X are being used, we shouldn't break anything...

boegel avatar Sep 29 '21 06:09 boegel

I have a feeling that the way this is done currently is too "hard" of a change, we should do it in a way that just results in a warning when self.cfg['parallel'] or parallel = X are being used, we shouldn't break anything...

This PR is exactly that: NOTHING is broken by that. I took exceptionally great care to make sure of that which requires the parallelLegacy part. Without this it is impossible to NOT break stuff, due to the possibility of custom EasyBlocks. To answer your questions:

Have you looked into the impact that this will have on both easyblocks (where self.cfg['parallel'] is used)

This will continue to work as before as that value will be stored in parallelLegacy instead (transparently) and a deprecation warning will be shown which tells you to use self.cfg.parallel instead.

easyconfigs (where any that use parallel = X will basically be broken because of this)?

They will also work exactly as before with a deprecation warning that maxparallel should be used instead but otherwise there is no change as the transition var parallelLegacy is used: https://github.com/easybuilders/easybuild-framework/pull/3842/files#diff-00260ae7a519d5825760f53b067b29fb84a3e0d2649e6a27ace99abaca96d7d1R1819

Flamefire avatar Sep 29 '21 11:09 Flamefire

@boegel What was the issue here? Anything remaining?

Flamefire avatar Jul 26 '22 14:07 Flamefire

@Flamefire: Tests failed in GitHub Actions, see https://github.com/easybuilders/easybuild-framework/actions/runs/2911256624 Last 100 lines of output from first failing test suite run:

== 2022-08-23 14:58:17,847 easyconfig.py:187 DEBUG setting config option sources: value ['%(name)s-%(version)s.tar.gz'] (type: <type 'list'>)
== 2022-08-23 14:58:17,847 easyconfig.py:187 DEBUG setting config option version: value 0.0 (type: <type 'str'>)
== 2022-08-23 14:58:17,847 easyconfig.py:187 DEBUG setting config option description: value Toy C program, 100% toy. (type: <type 'str'>)
== 2022-08-23 14:58:17,847 easyconfig.py:187 DEBUG setting config option checksums: value [['be662daa971a640e40be5c804d9d7d10', '44332000aa33b99ad1e00cbd1a7da769220d74647060a10e807b916d73ea27bc', ('adler32', '0x998410035'), ('crc32', '0x1553842328'), ('md5', 'be662daa971a640e40be5c804d9d7d10'), ('sha1', 'f618096c52244539d0e89867405f573fdb0b55b0'), ('size', 273)]] (type: <type 'list'>)
== 2022-08-23 14:58:17,847 easyconfig.py:187 DEBUG setting config option homepage: value https://easybuilders.github.io/easybuild (type: <type 'str'>)
== 2022-08-23 14:58:17,847 easyconfig.py:187 DEBUG setting config option patches: value ['toy-0.0_fix-silly-typo-in-printf-statement.patch', ('toy-extra.txt', 'toy-0.0')] (type: <type 'list'>)
== 2022-08-23 14:58:17,848 easyconfig.py:187 DEBUG setting config option name: value toy (type: <type 'str'>)
== 2022-08-23 14:58:17,848 easyconfig.py:694 INFO setting easyconfig parameter checksums: value [['be662daa971a640e40be5c804d9d7d10', '44332000aa33b99ad1e00cbd1a7da769220d74647060a10e807b916d73ea27bc', ('adler32', '0x998410035'), ('crc32', '0x1553842328'), ('md5', 'be662daa971a640e40be5c804d9d7d10'), ('sha1', 'f618096c52244539d0e89867405f573fdb0b55b0'), ('size', 273)]] (type: <type 'list'>)
== 2022-08-23 14:58:17,848 easyconfig.py:694 INFO setting easyconfig parameter description: value Toy C program, 100% toy. (type: <type 'str'>)
== 2022-08-23 14:58:17,848 easyconfig.py:694 INFO setting easyconfig parameter exts_list: value ['ls', ('bar', '0.0'), ('barbar', '0.0', {'start_dir': 'src'}), ('toy', '0.0')] (type: <type 'list'>)
== 2022-08-23 14:58:17,848 easyconfig.py:694 INFO setting easyconfig parameter homepage: value https://easybuilders.github.io/easybuild (type: <type 'str'>)
== 2022-08-23 14:58:17,848 easyconfig.py:694 INFO setting easyconfig parameter moduleclass: value tools (type: <type 'str'>)
== 2022-08-23 14:58:17,848 easyconfig.py:694 INFO setting easyconfig parameter name: value toy (type: <type 'str'>)
== 2022-08-23 14:58:17,848 easyconfig.py:694 INFO setting easyconfig parameter patches: value ['toy-0.0_fix-silly-typo-in-printf-statement.patch', ('toy-extra.txt', 'toy-0.0')] (type: <type 'list'>)
== 2022-08-23 14:58:17,848 easyconfig.py:694 INFO setting easyconfig parameter postinstallcmds: value ['echo TOY > %(installdir)s/README'] (type: <type 'list'>)
== 2022-08-23 14:58:17,849 easyconfig.py:694 INFO setting easyconfig parameter sanity_check_commands: value ['barbar', 'toy'] (type: <type 'list'>)
== 2022-08-23 14:58:17,849 easyconfig.py:694 INFO setting easyconfig parameter sanity_check_paths: value {'files': ['bin/barbar', 'bin/toy'], 'dirs': ['bin']} (type: <type 'dict'>)
== 2022-08-23 14:58:17,849 easyconfig.py:694 INFO setting easyconfig parameter sources: value ['%(name)s-%(version)s.tar.gz'] (type: <type 'list'>)
== 2022-08-23 14:58:17,849 easyconfig.py:694 INFO setting easyconfig parameter toolchain: value {'version': 'system', 'name': 'system'} (type: <type 'dict'>)
== 2022-08-23 14:58:17,849 easyconfig.py:694 INFO setting easyconfig parameter version: value 0.0 (type: <type 'str'>)
== 2022-08-23 14:58:17,849 easyconfig.py:760 INFO Parsing dependency specifications...
== 2022-08-23 14:58:17,849 easyconfig.py:1717 INFO Generating template values...
== 2022-08-23 14:58:17,849 templates.py:189 DEBUG config: Raw toy EasyConfig
== 2022-08-23 14:58:17,849 templates.py:216 DEBUG version found in easyconfig is 0.0
== 2022-08-23 14:58:17,850 templates.py:318 DEBUG name: bitbucket_account, config: %(namelower)s
== 2022-08-23 14:58:17,850 templates.py:318 DEBUG name: github_account, config: %(namelower)s
== 2022-08-23 14:58:17,850 templates.py:318 DEBUG name: name, config: toy
== 2022-08-23 14:58:17,850 templates.py:318 DEBUG name: version, config: 0.0
== 2022-08-23 14:58:17,850 templates.py:318 DEBUG name: versionsuffix, config: 
== 2022-08-23 14:58:17,850 templates.py:318 DEBUG name: versionprefix, config: 
== 2022-08-23 14:58:17,850 utilities.py:130 DEBUG Obtained cached toolchain instance for ('system', 'system'): {'full_mod_name': None, 'versionsuffix': '', 'version': 'system', 'toolchain': {'version': '', 'name': 'system'}, 'name': 'system', 'short_mod_name': None, 'hidden': False, 'parsed': True, 'system': True}
== 2022-08-23 14:58:17,851 options.py:63 DEBUG Using toolchain options {'precise': (False, 'High precision'), 'verbose': (False, 'Verbose output'), 'rpath': (True, 'Use RPATH wrappers when --rpath is enabled in EasyBuild configuration'), 'pic': (False, 'Use PIC'), 'static': (False, 'Build static library'), 'optarch': (True, 'Enable architecture optimizations'), 'ieee': (False, 'Adhere to IEEE-754 rules'), 'extra_f90flags': (None, 'Specify extra F90FLAGS options.'), 'vectorize': (None, 'Enable compiler auto-vectorization, default except for noopt and lowopt'), 'veryloose': (False, 'Very loose precision'), 'strict': (False, 'Strict (highest) precision'), 'unroll': (False, 'Unroll loops'), 'extra_cflags': (None, 'Specify extra CFLAGS options.'), 'extra_fflags': (None, 'Specify extra FFLAGS options.'), 'lowopt': (False, 'Low compiler optimizations'), 'shared': (False, 'Build shared library'), 'opt': (False, 'High compiler optimizations'), 'i8': (False, 'Integers are 8 byte integers'), 'extra_cxxflags': (None, 'Specify extra CXXFLAGS options.'), 'loose': (False, 'Loose precision'), 'cstd': (None, 'Specify C standard'), 'extra_fcflags': (None, 'Specify extra FCFLAGS options.'), 'defaultprec': (False, 'Default precision'), 'openmp': (False, 'Enable OpenMP'), 'noopt': (False, 'Disable compiler optimizations'), 'packed-linker-options': (False, 'Pack the linker options as comma separated list'), 'r8': (False, 'Real is 8 byte real'), 'cciscxx': (False, 'Use CC as CXX'), '32bit': (False, 'Compile 32bit target'), 'debug': (False, 'Enable debug'), 'defaultopt': (False, 'Default compiler optimizations')}
== 2022-08-23 14:58:17,851 easyconfig.py:1210 DEBUG Initialized toolchain: {'full_mod_name': None, 'versionsuffix': '', 'version': 'system', 'toolchain': {'version': '', 'name': 'system'}, 'name': 'system', 'short_mod_name': None, 'hidden': False, 'parsed': True, 'system': True} (opts: None)
== 2022-08-23 14:58:17,851 templates.py:189 DEBUG config: Raw toy EasyConfig
== 2022-08-23 14:58:17,851 templates.py:216 DEBUG version found in easyconfig is 0.0
== 2022-08-23 14:58:17,851 templates.py:318 DEBUG name: bitbucket_account, config: %(namelower)s
== 2022-08-23 14:58:17,851 templates.py:318 DEBUG name: github_account, config: %(namelower)s
== 2022-08-23 14:58:17,851 templates.py:318 DEBUG name: name, config: toy
== 2022-08-23 14:58:17,852 templates.py:318 DEBUG name: version, config: 0.0
== 2022-08-23 14:58:17,852 templates.py:318 DEBUG name: versionsuffix, config: 
== 2022-08-23 14:58:17,852 templates.py:318 DEBUG name: versionprefix, config: 
== 2022-08-23 14:58:17,852 easyconfig.py:1736 INFO Template values: arch='x86_64', bitbucket_account='toy', github_account='toy', name='toy', nameletter='t', nameletterlower='t', namelower='toy', toolchain_name='system', toolchain_version='system', version='0.0', version_major='0', version_major_minor='0.0', version_minor='0', versionprefix='', versionsuffix=''
== 2022-08-23 14:58:17,852 easyconfig.py:2655 DEBUG Determining full module name for Raw toy EasyConfig (force_visible: False)
== 2022-08-23 14:58:17,852 easyconfig.py:2632 DEBUG No alternative software name specified to determine module name with
== 2022-08-23 14:58:17,852 utilities.py:102 DEBUG Module name toy/0.0 validated
== 2022-08-23 14:58:17,852 easyconfig.py:2663 DEBUG Obtained valid full module name toy/0.0
== 2022-08-23 14:58:17,852 easyconfig.py:2684 DEBUG Determining short module name for Raw toy EasyConfig (force_visible: False)
== 2022-08-23 14:58:17,853 easyconfig.py:2632 DEBUG No alternative software name specified to determine module name with
== 2022-08-23 14:58:17,853 utilities.py:102 DEBUG Module name toy/0.0 validated
== 2022-08-23 14:58:17,853 easyconfig.py:2686 DEBUG Obtained valid short module name toy/0.0
== 2022-08-23 14:58:17,853 mns.py:169 DEBUG Checking whether 'toy/0.0' is a module name for software with name 'toy' via regex ^toy(/\S+)?$: True
== 2022-08-23 14:58:17,853 easyconfig.py:2696 DEBUG Determining module subdir for Raw toy EasyConfig
== 2022-08-23 14:58:17,853 easyconfig.py:2698 DEBUG Obtained subdir 
== 2022-08-23 14:58:17,854 templates.py:189 DEBUG config: {'version': '0.0', 'name': 'toy'}
== 2022-08-23 14:58:17,854 templates.py:216 DEBUG version found in easyconfig is 0.0
== 2022-08-23 14:58:17,854 templates.py:318 DEBUG name: name, config: toy
== 2022-08-23 14:58:17,854 templates.py:318 DEBUG name: version, config: 0.0
== 2022-08-23 14:58:17,854 easyconfig.py:592 DEBUG Extending list of known easyconfig parameters with: make_module options
== 2022-08-23 14:58:17,854 easyconfig.py:602 DEBUG Easyconfig parameter make_module already known, not overwriting
== 2022-08-23 14:58:17,855 easyconfig.py:602 DEBUG Easyconfig parameter options already known, not overwriting
== 2022-08-23 14:58:17,855 easyconfig.py:608 DEBUG Updated list of mandatory easyconfig parameters: ['name', 'version', 'homepage', 'description', 'toolchain']
== 2022-08-23 14:58:17,855 environment.py:91 INFO Environment variable TOY set to toy-0.0 (previous value: 'toy-0.0')
== 2022-08-23 14:58:17,855 easyblock.py:2715 DEBUG Installing extension toy with class EB_toy (from easybuild.easyblocks.toy)
== 2022-08-23 14:58:17,855 modules.py:812 DEBUG Current MODULEPATH: /tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/tmpv7G9Z1/modules/all:/tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/eb-oluOfx/eb-5xq3ui/tmpMk6Ive/all:/tmp/runner/9bd1da1bceb088888b04946560954faf9441f43b/lib/python2.7/site-packages/test/framework/modules
== 2022-08-23 14:58:17,855 modules.py:822 DEBUG Changing LD_LIBRARY_PATH from '/tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/tmpv7G9Z1/software/toy/0.0/lib:/opt/hostedtoolcache/Python/2.7.18/x64/lib' to '/opt/hostedtoolcache/Python/2.7.18/x64/lib' in environment for module command
== 2022-08-23 14:58:17,855 modules.py:826 DEBUG Running module command '/home/runner/lmod/7.8.22/libexec/lmod python --terse list' from /tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/tmp7WsS_c/toy/0.0/system-system/toy-0.0
== 2022-08-23 14:58:17,904 modules.py:833 DEBUG Output of module command '/home/runner/lmod/7.8.22/libexec/lmod python --terse list': stdout: os.environ["__LMOD_REF_COUNT_MODULEPATH"] = "/tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/tmpv7G9Z1/modules/all:1;/tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/eb-oluOfx/eb-5xq3ui/tmpMk6Ive/all:1;/tmp/runner/9bd1da1bceb088888b04946560954faf9441f43b/lib/python2.7/site-packages/test/framework/modules:1";
os.environ["MODULEPATH"] = "/tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/tmpv7G9Z1/modules/all:/tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/eb-oluOfx/eb-5xq3ui/tmpMk6Ive/all:/tmp/runner/9bd1da1bceb088888b04946560954faf9441f43b/lib/python2.7/site-packages/test/framework/modules";
os.environ["_ModuleTable001_"] = "X01vZHVsZVRhYmxlXz17WyJNVHZlcnNpb24iXT0zLFsiY19yZWJ1aWxkVGltZSJdPWZhbHNlLFsiY19zaG9ydFRpbWUiXT1mYWxzZSxkZXB0aFQ9e30sZmFtaWx5PXt9LG1UPXt0b3k9e1siZm4iXT0iL3RtcC9lYi1jdUdKTmUvZWItQWZ1ekk3L2ViLXNwUHdycC9lYi1vbHVPZngvZWItNXhxM3VpL3RtcE1rNkl2ZS9hbGwvdG95LzAuMC5sdWEiLFsiZnVsbE5hbWUiXT0idG95LzAuMCIsWyJsb2FkT3JkZXIiXT0xLHByb3BUPXt9LFsic3RhY2tEZXB0aCJdPTAsWyJzdGF0dXMiXT0iYWN0aXZlIixbInVzZXJOYW1lIl09InRveS8wLjAiLH0sfSxtcGF0aEE9eyIvdG1wL2ViLWN1R0pOZS9lYi1BZnV6STcvZWItc3BQd3JwL3RtcHY3RzlaMS9tb2R1bGVzL2FsbCIsIi90bXAvZWIt";
os.environ["_ModuleTable002_"] = "Y3VHSk5lL2ViLUFmdXpJNy9lYi1zcFB3cnAvZWItb2x1T2Z4L2ViLTV4cTN1aS90bXBNazZJdmUvYWxsIiwiL3RtcC9ydW5uZXIvOWJkMWRhMWJjZWIwODg4ODhiMDQ5NDY1NjA5NTRmYWY5NDQxZjQzYi9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvdGVzdC9mcmFtZXdvcmsvbW9kdWxlcyIsfSxbInN5c3RlbUJhc2VNUEFUSCJdPSIvdG1wL3J1bm5lci85YmQxZGExYmNlYjA4ODg4OGIwNDk0NjU2MDk1NGZhZjk0NDFmNDNiL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy90ZXN0L2ZyYW1ld29yay9tb2R1bGVzIix9";
os.environ["_ModuleTable_Sz_"] = "2";
; stderr: toy/0.0

== 2022-08-23 14:58:17,905 modules.py:1375 DEBUG Output found in stdout, seems like '/home/runner/lmod/7.8.22/libexec/lmod python --terse list' ran fine
== 2022-08-23 14:58:17,905 easyblock.py:1766 DEBUG List of loaded modules: [{'default': None, 'mod_name': 'toy/0.0'}]
== 2022-08-23 14:58:17,905 build_log.py:126 WARNING Experimental functionality. Behaviour might change/be removed later: installing extensions in parallel
== 2022-08-23 14:58:17,905 easyblock.py:1846 INFO Installing extensions in parallel...
== 2022-08-23 14:58:17,905 easyblock.py:1852 DEBUG List of names of all extensions: ['ls', 'bar', 'barbar', 'toy']
== 2022-08-23 14:58:17,906 fancylogger.py:276 WARNING DEPRECATED (since v5.0) functionality used: Easyconfig parameter 'parallel' is deprecated, use 'maxparallel' or the parallel property instead.; see http://easybuild.readthedocs.org/en/latest/Deprecated-functionality.html for more information
== 2022-08-23 14:58:17,907 build_log.py:169 ERROR EasyBuild crashed with an error (at easybuild/base/exceptions.py:124 in __init__): DEPRECATED (since v5.0) functionality used: Easyconfig parameter 'parallel' is deprecated, use 'maxparallel' or the parallel property instead.; see http://easybuild.readthedocs.org/en/latest/Deprecated-functionality.html for more information (at easybuild/tools/py2vs3/py2.py:63 in raise_with_traceback)
== 2022-08-23 14:58:17,907 build_log.py:265 INFO ... (took < 1 sec)
== 2022-08-23 14:58:17,908 config.py:662 DEBUG software install path as specified by 'installpath' and 'subdir_software': /tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/tmpv7G9Z1/software
== 2022-08-23 14:58:17,908 filetools.py:2014 INFO Removing lock /tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/tmpv7G9Z1/software/.locks/_tmp_eb-cuGJNe_eb-AfuzI7_eb-spPwrp_tmpv7G9Z1_software_toy_0.0.lock...
== 2022-08-23 14:58:17,908 filetools.py:382 INFO Path /tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/tmpv7G9Z1/software/.locks/_tmp_eb-cuGJNe_eb-AfuzI7_eb-spPwrp_tmpv7G9Z1_software_toy_0.0.lock successfully removed.
== 2022-08-23 14:58:17,908 filetools.py:2018 INFO Lock removed: /tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/tmpv7G9Z1/software/.locks/_tmp_eb-cuGJNe_eb-AfuzI7_eb-spPwrp_tmpv7G9Z1_software_toy_0.0.lock
== 2022-08-23 14:58:17,908 easyblock.py:4101 WARNING build failed (first 300 chars): DEPRECATED (since v5.0) functionality used: Easyconfig parameter 'parallel' is deprecated, use 'maxparallel' or the parallel property instead.; see http://easybuild.readthedocs.org/en/latest/Deprecated-functionality.html for more information
== 2022-08-23 14:58:17,908 easyblock.py:318 INFO Closing log for application name toy version 0.0
== 2022-08-23 14:58:17,909 build_log.py:265 INFO FAILED: Installation ended unsuccessfully (build directory: /tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/tmp7WsS_c/toy/0.0/system-system): build failed (first 300 chars): DEPRECATED (since v5.0) functionality used: Easyconfig parameter 'parallel' is deprecated, use 'maxparallel' or the parallel property instead.; see http://easybuild.readthedocs.org/en/latest/Deprecated-functionality.html for more information (took 0 secs)
== 2022-08-23 14:58:17,909 build_log.py:265 INFO Results of the build can be found in the log file(s) /tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/eb-oluOfx/eb-5xq3ui/easybuild-toy-0.0-20220823.145817.PxbbP.log
== 2022-08-23 14:58:17,910 build_log.py:169 ERROR EasyBuild crashed with an error (at easybuild/base/exceptions.py:124 in __init__): build failed (first 300 chars): DEPRECATED (since v5.0) functionality used: Easyconfig parameter 'parallel' is deprecated, use 'maxparallel' or the parallel property instead.; see http://easybuild.readthedocs.org/en/latest/Deprecated-functionality.html for more information (at easybuild/main.py:131 in build_and_install_software)
== 2022-08-23 14:58:17,910 filetools.py:1932 DEBUG Not creating existing path /tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/eb-oluOfx/eb-5xq3ui
== 2022-08-23 14:58:17,911 build_log.py:169 ERROR EasyBuild crashed with an error (at easybuild/base/exceptions.py:124 in __init__): Build of /tmp/eb-cuGJNe/eb-AfuzI7/eb-spPwrp/test.eb failed (err: "build failed (first 300 chars): DEPRECATED (since v5.0) functionality used: Easyconfig parameter 'parallel' is deprecated, use 'maxparallel' or the parallel property instead.; see http://easybuild.readthedocs.org/en/latest/Deprecated-functionality.html for more information") (at easybuild/main.py:169 in build_and_install_software)
'

----------------------------------------------------------------------
Ran 811 tests in 887.934s

FAILED (failures=1)
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 you me acting stupid), or submit a pull request to https://github.com/boegel/boegelbot fix the problem.

boegelbot avatar Aug 23 '22 15:08 boegelbot

Finally all green.

Flamefire avatar Sep 06 '22 14:09 Flamefire

@boegel ping on this

akesandgren avatar Feb 13 '23 07:02 akesandgren

Rebased.

Flamefire avatar May 11 '23 07:05 Flamefire

@boegel This is also something relevant for 5.0 where a deprecation period would be nice

Flamefire avatar Dec 07 '23 12:12 Flamefire

@boegel *ping

Flamefire avatar Apr 25 '24 12:04 Flamefire