Как поставить на Drupal 9 Composer-ом модули под 8ку?

Аватар пользователя VasyOK VasyOK 6 июля в 14:09

Есть некоторые D8 модули, которые работают с D9, но не имеют официальных D9 релизов. Как их поставить Композером?

Например https://www.drupal.org/project/toolbar_themes/
https://www.drupal.org/files/issues/2020-06-06/toolbar_themes.1.x-dev.re... - единственное, что делает патч, это добавляет 9 версию в совместимые.

Комментарии

Аватар пользователя ivnish ivnish 6 июля в 14:12

Самый простой способ - это скачать модуль вручную, положить в папку modules/custom и внести нужные изменения. После этого нужно капать на мозги мейнтейнерам модуля, чтобы они поскорее приняли патчи и желательно выпустили новый релиз. После этого модуль нужно удалить из custom и установить с помощью composer

Аватар пользователя VasyOK VasyOK 6 июля в 14:21

да, так и делал: в custom - ложил
но допустим модуль требует установки через Composer.
я правда таких не знаю.

Аватар пользователя marassa marassa 6 июля в 15:23
1

Буквально вчера читал: https://www.drupal.org/docs/develop/git/using-git-to-contribute-to-drupa...
Идея в том, что drupal.org теперь позволяет для каждого патча создать issue fork - то есть полную версию кода модуля с уже включенным патчем. Этот код может быть вытянут композером с git.drupal.org. Осталось только сказать композеру, чтобы он брал этот модуль не из обычного репозитория drupal, а с git'а. В общем, там всё написано. Идея красивая, но сам не пробовал.

Аватар пользователя charOFF charOFF 6 июля в 17:40

Еще можно использовать алиас в composer.json
например
"drupal/core": "^9.0.0"
заменить на
"drupal/core": "9.2.0 as 8.9.16"
если модули действительно совместимые с d9

Аватар пользователя VasyOK VasyOK 10 июля в 18:40

Это корневой composer.json? Там:

 "require": {
        "composer/installers": "^1.9",
        "cweagans/composer-patches": "^1.7",
        "drupal/core-composer-scaffold": "^9.2",
        "drupal/core-project-message": "^9.2",
        "drupal/core-recommended": "^9.2"
    },
    "require-dev": {
        "drupal/core-dev": "^9.2"
    },

"drupal/core-recommended": "^9.2 as 8.9.16" - не получается

Аватар пользователя charOFF charOFF 10 июля в 22:59

тут придется указать точную версию и при дальнейшем обновлении менять вручную.
Т.е. не "^9.2 as 8.9.16", а "9.2.0 as 8.9.16"

Аватар пользователя ivnish ivnish 9 июля в 11:23

Я ждал этого коммента. Попробуй-ка установить модуль на Д9 без директивы core_version_requirement. Composer сразу тебя на фиг пошлет. А чтобы применить патч, модуль как минимум сначала должен скачать и установиться

Аватар пользователя voviko voviko 10 июля в 10:05

не, не пошлёт, если подход найти.
composer create-project drupal/recommended-project:8.9.2 toolbar_themes8

composer require cweagans/composer-patches

"extra": {
        "enable-patching": true,
        "patches": {
            "drupal/toolbar_themes": {
                "#3149099 Support drupal 9": "https://www.drupal.org/files/issues/2020-06-06/toolbar_themes.1.x-dev.re...
            }
        },

composer require 'drupal/toolbar_themes:1.x-dev@dev'

Аватар пользователя VasyOK VasyOK 10 июля в 18:44

Чисто ради своего образования попробовал.

После
composer require 'drupal/toolbar_themes:1.x-dev@dev'

Пишет:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - drupal/toolbar_themes dev-1.x requires drupal/core ^8 -> found drupal/core[8.0.0-beta6, ..., 8.9.x-dev] but the package is fixed to 9.2.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
    - drupal/toolbar_themes 1.x-dev is an alias of drupal/toolbar_themes dev-1.x and thus requires it to be installed too.
    - Root composer.json requires drupal/toolbar_themes 1.x-dev@dev -> satisfiable by drupal/toolbar_themes[1.x-dev (alias of dev-1.x)].

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.