Problem/Motivation
Drupal 9 is EOL as of November 1st 2023. Mark any contributed project releases that are only Drupal 9 compatible unsupported before end of January 2024.
Will Drupal 7 releases be affected?
No, Drupal 7 is still supported by the community until January 5, 2025.
What about releases compatible with both Drupal 9 and Drupal 10?
Releases compatible with both Drupal 9 and Drupal 10 will not be affected.
Will my project page itself be affected?
No, we will not be marking whole projects unsupported, just the D9-only compatible releases.
How do I make a release of my project compatible with Drupal10?
Check for your issue queue for project update bot patches. Use upgrade status for a full scan of compatibility. The best of course is if you have a test suite in the project that can make sure of compatibility.
Once done, go to your project page on www.drupal.org, click “Administer releases” and mark the release series as supported.
How do I update Automated Testing for my project?
We recommend reviewing the Automated Testing tab linked at the top of your Project Page. The option to test against Drupal 9 will soon be removed, and if you were only testing against Drupal 9, you will want to make sure you have testing for Drupal 10 correctly enabled. DrupalCI will be disabled in 2024, so now is the time to adopt Gitlab CI. See
https://www.drupal.org/docs/develop/git/using-gitlab-to-contribute-to-dr... →
Remaining tasks
Perform this bulk update once cleared by security team and core stakeholders.
Implementation (TODO: update to Drupal 9)
Query for auditing in-use core_version_requirement
s:
SELECT DISTINCT pcc.core_version_requirement FROM project_release_supported_versions prsv INNER JOIN node n ON n.nid = prsv.nid AND n.status = 1 AND n.type != 'project_core' INNER JOIN field_data_field_release_category fdf_rc ON fdf_rc.entity_id = prsv.latest_release AND fdf_rc.field_release_category_value = 'current' INNER JOIN project_composer_component pcc ON pcc.release_nid = fdf_rc.entity_id AND pcc.component_role = 'primary' WHERE supported = 1 GROUP BY prsv.nid, prsv.branch;
+--------------------------+
| core_version_requirement |
+--------------------------+
| ^9.3 |
| ^8.8.6 || ^9 |
| ^8.7.10 || ^9 |
| ^8.8.2 || ^9 |
| ^9 |
| ^8 || ^9 |
| ^9.2 |
| ^8.7.7 || ^9.0 |
| ^8.9 || ^9 |
| ^8.7.7 || ^9 |
| ^9 || ^10 |
| ^8.9.11 || ^9.0.10 |
| |
| ^8.9 || ^9.1 |
| ^8 || ^9|| ^10 |
| ^8.8 || ^9 |
| ^8.7.12 || ^9 |
| ^8 || ^9 || ^10 |
| ~9 |
| ~8 |
| ^8.9 || ^9.0 |
| ^8.5 || ^9 |
| ^8.8.4 |
| ^8.8 || ^9.0 |
| ^8 | ^9 |
| ^8.8.0 || ^9.0 |
| ^8.8.6 || ^9.0.0 |
| ~8.9.1 || ^9 |
| ~9.0.0 |
| ^9.1 |
| ^8.7 || ^9 |
| ^8.8.4 || ^9.0 |
| ^8.8.3 || ^9 |
| ^8.4 || ^9 |
| ^9.1.0-alpha1 |
| ^8.0 || ^9.0 |
| ^8.8.0 || ^9.0.0 |
| ^8.8.4 || ^9 |
| ^8.8 |
| ^8 ||^9 |
| 9.x |
| 8.x || ^9 |
| ^8.0 || ^9 |
| ^8.9.0 || ^9 |
| ^8.7.7 || ^8.8 || ^9 |
| ^8.7.7 || ^9 |
| 8.x || 9.x |
| ^8.6 || ^9 |
| ^8.8.0 |
| ^8.7.12 || ^9.0 |
| ^8 |
| ^8.8 || ^9 || ^10 |
| ^8.8.0 || ^9 |
| ^8.7.7 |
| ^8.8 ||^9 |
| ^8.8.1 || ^9 |
| ^9.0 |
| ^9.2 || ^10 |
| ^8.7.7 ||^9 |
| ^8 || 9 |
| ^8.8 || ~9.0 |
| ^8.8.3 || ^9.0 |
| ~8.8 || ^9 |
| ^8.8 | ^9 |
| ^8.8 || 9 |
| ^8.9.0 || ^9.0 |
| ^8.9 || ^9 |
| ^8.9|^9.0 |
| ^8|| ^9 |
| ^8 |^9 |
| ^9. |
| ^8|^9 |
| ^8.9 || ^9.2 |
| ^8.8|| ^9 |
+--------------------------+
Query for supported release series on published projects, that are “current” (semver or 8.x- prefix), where the primary component has a core version requirement that’s empty or a known “8-only” constraint from the list above:
SELECT n.nid, n.title, prsv.branch FROM project_release_supported_versions prsv INNER JOIN node n ON n.nid = prsv.nid AND n.status = 1 AND n.type != 'project_core' INNER JOIN field_data_field_release_category fdf_rc ON fdf_rc.entity_id = prsv.latest_release AND fdf_rc.field_release_category_value = 'current' INNER JOIN project_composer_component pcc ON pcc.release_nid = fdf_rc.entity_id AND pcc.component_role = 'primary' WHERE supported = 1 AND pcc.core_version_requirement IN ('', '^8.8', '^8', '^8.7.7', '^8.8.4', '^8.8.0', '~8') GROUP BY prsv.nid, prsv.branch;
Query for admin releases maintainers of those projects:
SET group_concat_max_len = 1000000; SELECT u.name, u.mail, group_concat(DISTINCT concat(n.title, ' ', prsv.branch, '*') SEPARATOR ', ') project_branches, group_concat(DISTINCT concat('https://www.drupal.org/', ua.alias) SEPARATOR ', ') project_urls FROM project_release_supported_versions prsv INNER JOIN node n ON n.nid = prsv.nid AND n.status = 1 AND n.type != 'project_core' INNER JOIN field_data_field_release_category fdf_rc ON fdf_rc.entity_id = prsv.latest_release AND fdf_rc.field_release_category_value = 'current' INNER JOIN project_composer_component pcc ON pcc.release_nid = fdf_rc.entity_id AND pcc.component_role = 'primary' INNER JOIN url_alias ua ON ua.source = concat('node/', n.nid) INNER JOIN project_release_project_maintainer prpm ON prpm.nid = n.nid AND prpm.administer_releases = 1 INNER JOIN users u ON u.uid = prpm.uid AND u.status = 1 WHERE supported = 1 AND pcc.core_version_requirement IN ('', '^8.8', '^8', '^8.7.7', '^8.8.4', '^8.8.0', '~8') GROUP BY u.uid;
Query for making the update:
UPDATE project_release_supported_versions prsv INNER JOIN node n ON n.nid = prsv.nid AND n.status = 1 AND n.type != 'project_core' INNER JOIN field_data_field_release_category fdf_rc ON fdf_rc.entity_id = prsv.latest_release AND fdf_rc.field_release_category_value = 'current' INNER JOIN project_composer_component pcc ON pcc.release_nid = fdf_rc.entity_id AND pcc.component_role = 'primary' SET prsv.supported = 0, prsv.recommended = 0 WHERE prsv.supported = 1 AND pcc.core_version_requirement IN ('', '^8.8', '^8', '^8.7.7', '^8.8.4', '^8.8.0', '~8');
TRUNCATE cache_project_release_download_table;