Я пытаюсь собрать Уютную аудиокнигу на панели запуска.
Я импортировал исходную ветку (главную) из GitHub, и есть другая ветка (deb-Packing-juno), содержащая каталог debian /
. В главной ветке нет каталога debian
.
Я хочу скопировать каталог debian /
из deb-Packing-juno
переходят в главную ветвь
во время сборки.
Я просмотрел справочную страницу Launchpad , чтобы найти рецепты, а также этот ответ .
Я создал следующий рецепт упаковки .
# git-build-recipe format 0.4 deb-version {debupstream}-0~{revtime}
lp:cozy master
nest-part deb-packaging-juno lp:cozy debian debian master
Но пакет не может быть собран в Launchpad со следующей ошибкой сборки. Вот полный журнал сборки .
Traceback (most recent call last):
File "/usr/bin/git-build-recipe", line 11, in <module>
load_entry_point('git-build-recipe==0.1', 'console_scripts', 'git-build-recipe')()
File "/usr/lib/python3/dist-packages/gitbuildrecipe/main.py", line 110, in main
build_tree(base_branch, working_directory)
File "/usr/lib/python3/dist-packages/gitbuildrecipe/recipe.py", line 489, in build_tree
_build_inner_tree(base_branch, target_path)
File "/usr/lib/python3/dist-packages/gitbuildrecipe/recipe.py", line 413, in _build_inner_tree
instruction.apply(target_path)
File "/usr/lib/python3/dist-packages/gitbuildrecipe/recipe.py", line 567, in apply
target_subdir=self.target_subdir)
File "/usr/lib/python3/dist-packages/gitbuildrecipe/recipe.py", line 400, in nest_part_branch
child_branch.commit + ":" + subpath)
File "/usr/lib/python3/dist-packages/gitbuildrecipe/recipe.py", line 662, in git_call
**kwargs)
File "/usr/lib/python3.6/subprocess.py", line 356, in check_output
**kwargs).stdout
File "/usr/lib/python3.6/subprocess.py", line 438, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['git', '-C', '/home/buildd/build-RECIPEBRANCHBUILD-2811196/chroot-autobuild/home/buildd/work/tree/recipe', 'read-tree', '--prefix', 'debian', '-u', '574660454b66b1c1fd22e72c0ac2d1041e0a4b4d:debian']' returned non-zero exit status 128.
RUN: /usr/share/launchpad-buildd/bin/in-target scan-for-processes --backend=chroot --series=hirsute --arch=amd64 RECIPEBRANCHBUILD-2811196
Scanning for processes to kill in build RECIPEBRANCHBUILD-2811196
В чем заключалась ошибка в моем рецепте упаковки и как ее исправить?
Ошибка заключается в том, что вы использовали неправильное имя ветки в строке nest-part
. (Первый аргумент nest-part
- это имя, которое можно использовать для ссылки на эту часть рецепта в переменных подстановки, а не имя ветки Git.) Хотя сообщение об ошибке не самое ясное. когда-либо, вы можете определить это, посмотрев на эту строку в журнале сборки:
fatal: Not a valid object name 574660454b66b1c1fd22e72c0ac2d1041e0a4b4d:debian
574660454b66b1c1fd22e72c0ac2d1041e0a4b4d
- это текущая фиксация в ветке master
, и это сообщение об ошибке точно говорит, что нет каталог debian
в дереве, на который ссылается этот коммит.
Вместо этого вам следовало написать следующее, которое, похоже, работает должным образом, когда я тестирую его локально:
# git-build-recipe format 0.4 deb-version {debupstream}-1~{revtime}
lp:cozy master
nest-part deb-packaging-juno lp:cozy debian debian deb-packaging-juno
Или, возможно, вы можете захотеть использовать другое имя для первого аргумента nest-part
для уменьшения путаницы:
# git-build-recipe format 0.4 deb-version {debupstream}-1~{revtime}
lp:cozy master
nest-part packaging lp:cozy debian debian deb-packaging-juno
Пока я мог не копировать каталог debian таким образом, я нашел альтернативу, чтобы объединить ветку в master.
Текущий каталог deb-Packing-juno
не может быть объединен с главным каталогом, потому что они были из одной базы, и возникли конфликты слияния (однако, это, вероятно, не связано с ошибкой при копировании каталога , как упоминалось в вопросе).
Я создал новую сиротскую ветку (чтобы не было общей истории) с именем deb-dir
, содержащую каталог debian, и я могу скопировать ее в мастер с помощью следующего рецепта.
# git-build-recipe format 0.4 deb-version {debupstream}-0~{revtime}
lp:cozy master
merge deb-dir lp:cozy deb-dir