Stejně jako při vydání verze Drupal 9 je nyní i pro Drupal 10 třeba aktualizovat kompatibilitu modulů. Dost často to může být i změna jen na jednom řádku v info.yml souboru. Jenže pokud maintainer modulu nevydá novou verzi, pomocí composeru modul nelze nainstalovat. A případné patche se aplikují až po instalaci, která ale neproběhne.
To nám právě umožní nástroj composer-drupal-lenient, který v zásadě změní obsah info.yml s definicí podporovaného jádra na ^8 || ^9 || ^10. Změna proběhne jen pro instalaci pomocí composer, reálně v soboru na disku bude původní hodnota, např. ^8 || ^9.
Instalace module trim nepodporované verze
https://www.drupal.org/project/trim
Máme modul trim, který je kompatibilní jen s verzí Drupal 8 a Drupal 9.
![trim module releases 33trim module releases](https://webeek.cz/sites/default/files/2023-01/58/trim%20module%20releases.png)
Instalace v Drupal 10 neproběhne:
composer require 'drupal/trim:^1.0'
![trim composer install problem 33trim composer install problem](https://webeek.cz/sites/default/files/2023-01/58/trim%20composer%20install%20problem.png)
Ale již existuje patch, který to řeší "Automated Drupal 10 compatibility fixes" https://www.drupal.org/project/trim/issues/3290139
Je opravdu jednoduchý
-core: 8.x
-core_version_requirement: ^8 || ^9
+core_version_requirement: ^8 || ^9 || ^10
Ale jak ho automaticky nainstalovat?
1) Instalace composer-drupal-lenient
https://github.com/mglaman/composer-drupal-lenient
Instalace není nic složitého. Nainstalujeme balíček
composer require mglaman/composer-drupal-lenient
a potom pomocí jednoduchého příkazu
composer config --merge --json extra.drupal-lenient.allowed-list '["drupal/trim"]'
si upravíme composer.json. Takže během dalšího pokusu se přechodně nahradí core_version_requirement a modul se tak úspěšně stáhne.
![trim composer install 33trim composer install](https://webeek.cz/sites/default/files/2023-01/58/trim%20composer%20install.png)
Tím ale naše práce nekončí, protože modul (soubory) máme sice stažený, ale s původním obsahem souboru trim.info.yml
![trim not compatible 33trim not compatible](https://webeek.cz/sites/default/files/2023-01/58/trim%20not%20compatible.png)
2) Instalace composer-patches
https://github.com/cweagans/composer-patches
Tento balíček nám umožní automaticky aplikovat vybrané patche pro naše moduly. Instalace opět není složitá:
composer require cweagans/composer-patches
Pak je třeba si příslušně upravit composer.json, přidat si tam sekci patches se jménem modulu a cestou k patch souboru.
![trim composer patch 33trim composer patch](https://webeek.cz/sites/default/files/2023-01/58/trim%20composer%20patch.png)
Jak to ale, že instalace opět skončí neúspěchem?
![cant apply patch 33cant apply patch](https://webeek.cz/sites/default/files/2023-01/58/cant%20apply%20patch.png)
Je to dané tím, že patche se vytvářejí vždy na poslední vývojovou verzi. Takže tu si musíme nainstalovat.
composer require 'drupal/trim:1.x-dev@dev'
![all done 33all done](https://webeek.cz/sites/default/files/2023-01/58/all%20done.png)
Vše se již zdárně stáhlo a automaticky opatchovalo, zbývá už jen modul povolit.
![trim not compatible 33trim not compatible](https://webeek.cz/sites/default/files/2023-01/58/trim%20not%20compatible.png)
Závěrem
Možná to napoprvé vypadá složitě, ale v zásadě po instalaci composer-drupal-lenient a composer-patches máme hotovo. Pokud narazíme na modul, který ještě nemá Drupal 10 verzi, ale již existuje patch, který potřebnou kompatibilitu přináší, stačí si ho dát na seznam composer-drupal-lenient a definovat příslušný patch. O zbytek se composer postará sám.