Problem/Motivation
Track the work to make External Entities Drupal 12 ready. The Project Update Bot pass (#3598057: Automated Drupal 12 compatibility fixes for external_entities 3.0.x-dev) landed the rector auto-fixes; the rest is manual, split into children so each MR stays reviewable. On real Drupal 12.0-dev the module already installs and the full Unit + Kernel suite is green - what's left is deprecation cleanup.
Proposed resolution
Land the child issues, then flag the module Drupal 12 compatible
- #3617254: Enable next-major (Drupal 12) testing in GitLab CI - Turn on the next-major (D12) job in GitLab CI (OPT_IN_TEST_NEXT_MAJOR + lenient allow-list for dbxschema) so we actually get D12 results on MRs. Landed first.
- #3617196: Order local_tasks_alter after field_ui and drop hook_module_implements_alter - Hooks: move the field_ui local-tasks ordering onto the hook with OrderAfter(['field_ui']) and drop the dead hook_module_implements_alter (its #[LegacyModuleImplementsAlter] is gone in D12). Floor goes to ^11.2.
- #3617202: Use PHP attributes instead of annotations for plugin definitions - Plugin and config-entity annotations => PHP attributes: the five plugin types, external_entity_type, and the submodule Views / ExternalFile plugins.
- #3617205: Add native return types and fix remaining PHP 8.5 deprecations - Native return types across base classes, plugins and managers, plus array_key_exists(null), #[LegacyRequirementsHook], and the cross-version xnttsql test tweak.
- #3617305: External entity fields don't render on Drupal 12 - Fix the D12 regression where external entity fields don't render on the canonical page (5 functional tests, green on D11).
- #3617932: Fix PHPUnit 12 "no expectations configured" mock notices and incomplete tests - PHPUnit 12 test cleanup: createMock() => createStub() where there are no expectations (and #[AllowMockObjectsWithoutExpectations] where a real mock is needed), plus finish the 3 incomplete tests, so next-major goes fully green.
Remaining tasks
- Land the children.
- Then set core_version_requirement: ^11.2 || ^12 in every .info.yml (main module + submodules) and mark the module Drupal 12 compatible.
User interface changes
API changes
Data model changes
Issue fork external_entities-3617199
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #2
velmir_taky commentedComment #3
velmir_taky commentedComment #4
velmir_taky commentedComment #5
velmir_taky commentedComment #6
guignonvWe may need to indicate what changed in class method prototypes (mostly return types) in DEVELOPMENT.md to simplify external plugin upgrades.
Comment #8
velmir_taky commentedLast piece of the plan: set core_version_requirement to ^11.2 || ^12 in all the info.yml files (main, submodules and the test module) and added a short DEVELOPMENT.md section about the return types the base classes got, so anyone with custom plugins knows what to update.
That's #6, thanks @guignonv.
All six children are in, so this closes it.
eslint/phpcs/phpstan are failing, but that's pre-existing on 3.1.x - this only touches info.yml and DEVELOPMENT.md, no php/js. I'll clean those up in separate issues.
Comment #10
velmir_taky commentedMerged!