从另一个分支复制 debian 目录以在 Launchpad 中构建

从另一个分支复制 debian 目录以在 Launchpad 中构建

我正在尝试建立舒适启动板中的有声读物。

我已经从 GitHub 导入了源分支 (master),并且有一个包含目录的不同分支 (deb-packaging-juno) debian/。 master 分支没有debian 目录。我想在构建期间将debian/目录从deb-packaging-juno分支复制到分支中。master

我浏览了 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

错误在于您在该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

答案2

虽然我无法通过这种方式复制 debian 目录,但我找到了另一种方法,将分支合并到 master 中。

当前deb-packaging-juno目录无法合并到master,因为它们来自同一个基础,并且存在合并冲突(但这可能与问题中提到的复制目录失败无关)。

我创建了一个名为包含 debian 目录的新孤立分支(这样就不会有共同的历史记录) deb-dir,并且我能够使用以下命令将其复制到 master 中。

# git-build-recipe format 0.4 deb-version {debupstream}-0~{revtime}
lp:cozy master
merge deb-dir lp:cozy deb-dir

相关内容