Копирование каталога debian из другой ветки для сборки в Launchpad

Я пытаюсь собрать Уютную аудиокнигу на панели запуска.

Я импортировал исходную ветку (главную) из 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

В чем заключалась ошибка в моем рецепте упаковки и как ее исправить?

1
задан 5 June 2021 в 09:11

2 ответа

Ошибка заключается в том, что вы использовали неправильное имя ветки в строке 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
1
ответ дан 28 July 2021 в 11:32

Пока я мог не копировать каталог 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
1
ответ дан 28 July 2021 в 11:32

Другие вопросы по тегам:

Похожие вопросы: