diff --git a/buildpack/core/runtime.py b/buildpack/core/runtime.py index 99396f049..c6e047f83 100644 --- a/buildpack/core/runtime.py +++ b/buildpack/core/runtime.py @@ -33,25 +33,26 @@ def is_version_implemented(version): return bool(version.major >= 6) +def is_version_extended_supported(version): + # See https://docs.mendix.com/support/#extended-support + return bool(version.major == 8 and version.minor == 24) + + def is_version_supported(version): # Support for the latest three major versions: # https://docs.mendix.com/releasenotes/studio-pro/lts-mts - return bool(version.major >= 7) + return bool(version.major >= 9) def is_version_maintained(version): # LTS / MTS versions: https://docs.mendix.com/releasenotes/studio-pro/lts-mts - if version.major == 8 and version.minor == 18: + if version.major == 8 and version.minor == 24: return True if version.major == 9 and version.minor == 24: return True - if version.major == 10 and version.minor == 6: - return True - if version.major == 10 and version.minor == 12: - return True - if version.major == 10 and version.minor == 18: + if version.major == 10 and version.minor == 24: return True - if version.major == 10 and version.minor == 21: + if version.major == 11: return True return False diff --git a/buildpack/stage.py b/buildpack/stage.py index d1ce2f442..2f37be179 100755 --- a/buildpack/stage.py +++ b/buildpack/stage.py @@ -74,7 +74,15 @@ def preflight_check(version): raise NotImplementedError( "Mendix [{version.major}] is not supported by this buildpack" ) - if not runtime.is_version_supported(version): + if runtime.is_version_extended_supported(version): + logging.warning( + "Mendix [%s] is in Extended Support " + "(https://docs.mendix.com/support/#extended-support)." + "Please use a supported Mendix version " + "(https://docs.mendix.com/releasenotes/studio-pro/lts-mts).", + version.major, + ) + elif not runtime.is_version_supported(version): logging.warning( "Mendix [%s] is end-of-support. Please use a supported Mendix version " "(https://docs.mendix.com/releasenotes/studio-pro/lts-mts).", diff --git a/lib/m2ee/config.py b/lib/m2ee/config.py index 46e44347f..9483f922d 100644 --- a/lib/m2ee/config.py +++ b/lib/m2ee/config.py @@ -465,7 +465,8 @@ def get_default_dotm2ee_directory(self): logger.debug(traceback.format_exc()) logger.critical( - "Directory %s does not exist, and cannot be " "created!" + "Directory %s does not exist, and cannot be " "created!", + dotm2ee ) logger.critical( "If you do not want to use .m2ee in your home " diff --git a/requirements.in b/requirements.in index 737cf86b6..edee2e58f 100644 --- a/requirements.in +++ b/requirements.in @@ -1,11 +1,11 @@ backoff==2.2.1 certifi==2024.8.30 -cryptography==43.0.3 +cryptography==46.0.5 distro==1.9.0 httplib2==0.22.0 -jinja2==3.1.4 +jinja2==3.1.6 omegaconf==2.3.0 psycopg2-binary==2.9.10 pyyaml==6.0.2 -requests==2.32.3 -urllib3==2.2.3 +requests==2.32.5 +urllib3==2.6.3 diff --git a/requirements.txt b/requirements.txt index cf445dc2d..91b30ca73 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with Python 3.10 # by the following command: # -# pip-compile --strip-extras requirements.in +# pip-compile --cert=None --client-cert=None --index-url=None --pip-args=None --strip-extras requirements.in # antlr4-python3-runtime==4.9.3 # via omegaconf @@ -12,11 +12,11 @@ certifi==2024.8.30 # via # -r requirements.in # requests -cffi==1.14.4 +cffi==2.0.0 # via cryptography charset-normalizer==2.0.3 # via requests -cryptography==43.0.3 +cryptography==46.0.5 # via -r requirements.in distro==1.9.0 # via -r requirements.in @@ -24,7 +24,7 @@ httplib2==0.22.0 # via -r requirements.in idna==3.10 # via requests -jinja2==3.1.4 +jinja2==3.1.6 # via -r requirements.in markupsafe==2.0.1 # via jinja2 @@ -40,8 +40,10 @@ pyyaml==6.0.2 # via # -r requirements.in # omegaconf -requests==2.32.3 +requests==2.32.5 # via -r requirements.in +typing-extensions==4.15.0 + # via cryptography urllib3==2.6.3 # via # -r requirements.in diff --git a/tests/unit/test_deprecations.py b/tests/unit/test_deprecations.py index 03179d214..e6fad55dc 100644 --- a/tests/unit/test_deprecations.py +++ b/tests/unit/test_deprecations.py @@ -5,9 +5,10 @@ # Current supported / maintained versions # (https://docs.mendix.com/releasenotes/studio-pro/lts-mts): -# - Mendix 7: 7.23.x (LTS) -# - Mendix 8: 8.18.x (LTS) -# - Mendix 9: 9.6.x (MTS), 9.12.x (MTS), 9.18.x (MTS), 9.24.x (LTS) +# - Mendix 8: 8.18.x (Extended Support until July 2026) +# - Mendix 9: 9.24.x (LTS) +# - Mendix 10: 10.24.x (LTS) +# - Mendix 11: 11.x until 11.6 (MTS) is released (December 2025) class TestCaseMxImplemented(TestCase): @@ -22,8 +23,16 @@ class TestCaseMxSupported(TestCase): def test_mx6_not_supported(self): assert not runtime.is_version_supported(MXVersion("6.2")) - def test_mx7_supported(self): - assert runtime.is_version_supported(MXVersion("7.16")) + def test_mx11_supported(self): + assert runtime.is_version_supported(MXVersion("11.6")) + + +class TestCaseMxExtendedSupported(TestCase): + def test_mx7_not_extended_supported(self): + assert not runtime.is_version_extended_supported(MXVersion("7.2")) + + def test_mx8_extended_supported(self): + assert runtime.is_version_extended_supported(MXVersion("8.24")) class TestCaseMxMaintained(TestCase): @@ -31,9 +40,6 @@ def test_mx7_not_maintained(self): assert not runtime.is_version_maintained(MXVersion("7.23.1")) assert not runtime.is_version_maintained(MXVersion("7.16")) - def test_mx8_maintained(self): - assert runtime.is_version_maintained(MXVersion("8.18.1")) - def test_mx8_not_maintained(self): assert not runtime.is_version_maintained(MXVersion("8.17")) @@ -46,10 +52,10 @@ def test_mx9_not_maintained(self): assert not runtime.is_version_maintained(MXVersion("9.12.1")) def test_mx10_maintained(self): - assert runtime.is_version_maintained(MXVersion("10.6.1")) - assert runtime.is_version_maintained(MXVersion("10.12.1")) - assert runtime.is_version_maintained(MXVersion("10.18.1")) - assert runtime.is_version_maintained(MXVersion("10.21.1")) + assert runtime.is_version_maintained(MXVersion("10.24.1")) def test_mx10_not_maintained(self): assert not runtime.is_version_maintained(MXVersion("10.5.1")) + + def test_mx11_maintained(self): + assert runtime.is_version_maintained(MXVersion("11.5.1"))