У меня есть следующая файловая структура:
----- STRUCTURE
main/
├── recipes/
├── folder1/
├── folder2/
| └── files/
| ├── file1.json
| └── file2.json
└── recipe.bb
----- ORIGINAL_RECIPE
SRC_URI = "<git-repo1>;protocol=ssh;branch=master; \
file://folder2/files
"
SRCREV = "<commit-hash>"
PV = "0.1.2+git${SRCPV}"
recipe.bb извлекает репозиторий в папку 1, настраивает проект этого репо, и этот проект использует показанные там файлы *.json. На данный момент работает, без проблем.
Теперь я хочу переместить все, включая файлы/папку, в новый репозиторий, а также выполнить проверку с помощью bitbake. Я пробовал два следующих метода:
1: Отредактируйте recipe.bb для проверки обоих репозиториев и попробуйте использовать параметр subdir в SRC_URI:
----- STRUCTURE
main/
├── recipes/
├── folder1/
├── folder2/
└── recipe.bb
----- EDITED_RECIPE
SRC_URI = "<git-repo1>;protocol=ssh;branch=master;name=repo1 \
<git-repo2>;protocol=ssh;branch=main;name=repo2;subdir=folder2/ \
"
SRCREV_FORMAT = "repo1_repo2"
SRCREV_repo1 = "<commit-hash>"
SRCREV_repo2 = "<commit-hash>"
PV = "0.1.2+git${SRCPV}"
2 Создайте новый рецепт внутри папки2, который выполняет только проверку нового репо.
----- STRUCTURE
main/
├── recipes/
├── folder1/
├── folder2/
| └── newrecipe.bb
└── recipe.bb
----- NEW_RECIPE
SRC_URI = "<git-repo2>;protocol=ssh;branch=main;"
SRCREV = "<commit-hash>"
PV = "1"
Забавно, но с обоими подходами у меня в основном один и тот же результат, с некоторыми отличиями:
Ошибка в подходе 1: ОШИБКА: проект-0.1.2<git-repo1hash_repo2hash>-r1 do_configure: выполнение '/workdir/../project/0.1.2<git-repo1hash_repo2hash>-r1/temp/run.do_configure.835' не удалось с кодом выхода 1: Ошибка CMake: исходный каталог "/workdir/.../project/0.1.2<git-repo1hash_repo2hash>-r1/git" не содержит CMakeLists.txt.
Ошибка в подходе 2: ОШИБКА: проект-1-r1 do_configure: выполнение '/workdir/.../project/1-r1/temp/run.do_configure.835' не удалось с кодом выхода 1: Ошибка CMake: исходный каталог "/workdir/.../project/1-r1/git" не содержит CMakeLists.txt.
Файл CMake должен исходить из исходного репо1, но по какой-то причине мне кажется, что проверка репо2 после перезаписи репо1. Потому что, когда я захожу в папку workdir/.../temp, в обоих подходах этот путь содержит только то, что было извлечено из repo2, и ничего из repo1.
Может быть, я совершенно ошибаюсь в этом, и есть действительно простой способ добиться того, что я пытаюсь сделать? Любая обратная связь будет оценена, спасибо!





После долгого чтения, поиска и тестирования я нашел способ добиться этого, я публикую свой окончательный рецепт на тот случай, если кто-то столкнется с тем же вариантом использования проверки нескольких репозиториев, вы можете использовать параметр "destuffix" в SRC_URI для достижения этот:
----- EDITED_RECIPE
SRC_URI = "git://<git-repo1>;protocol=ssh;branch=master;name=repo1 \
git://<git-repo2>;protocol=ssh;branch=main;name=repo2;destsuffix=files \
"
SRCREV_repo1 = "<commit-hash>"
SRCREV_repo2 = "<commit-hash>"
SRCREV_FORMAT = "repo1_repo2"
PV = "0.1.2+git${SRCPV}"
S = "${WORKDIR}/git"
При этом в WORKDIR будет:
${WORKDIR}/git <- С содержимым git-repo1
и
${WORKDIR}/files <- С содержимым git-repo2