我正在尝试在启动板中构建舒适的有声读物。
我从 GitHub 导入了源分支(master),并且有一个包含该debian/
目录的不同分支(deb-packaging-juno)。master 分支没有debian
目录。我想在构建期间将debian/
目录从deb-packaging-juno
分支复制到master
分支中。
我创建了以下包装配方。
# 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
我的包装配方有什么错误以及如何解决?
虽然我无法以这种方式复制 debian 目录,但我找到了一个替代方法,将分支合并到 master。
当前
deb-packaging-juno
目录无法合并到主目录,因为它们来自同一个库,并且存在合并冲突(但是,这可能与复制目录失败无关,如问题中所述)。我创建了一个名为包含 debian 目录的新孤立分支(这样就不会有共同的历史记录)
deb-dir
,并且我可以使用以下配方将其复制到 master 中。错误是您在该
nest-part
行中使用了错误的分支名称。(第一个参数nest-part
是一个名称,可用于在替换变量中引用配方的那部分,而不是 Git 分支名称。)虽然错误消息不是最清楚的,但您可以通过查看构建日志中的这一行:574660454b66b1c1fd22e72c0ac2d1041e0a4b4d
是分支上的当前提交master
,并且该错误消息准确地说是debian
该提交引用的树中没有目录。您应该改为编写以下内容,当我在本地对其进行测试时,这似乎可以正常工作:
或者您可能想为第一个参数使用不同的名称
nest-part
以减少混淆: