我在一个源码包中有一个带有 DOS 风格行尾的文件*.orig.tar.xz
,我需要在构建 Debian 软件包之前先给它打补丁3.0 (quilt)
。我的补丁目前是 Unix 风格的行尾。
我们可以检查文件,发现补丁有 29 个 unix 风格的行尾,而源文件有 5000 个 dos 风格的行尾。
$ dos2unix -i debian/patches/model_icd CONFIG/model_config_file.txt
0 29 0 no_bom text debian/patches/model_icd
5000 0 0 no_bom text CONFIG/model_config_file.txt
构建结果:
$ dpkg-buildpackage
...
dpkg-source --before-build .
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: info: applying model_icd
patching file CONFIG/model_config_file.txt
Hunk #1 FAILED at 1638 (different line endings).
Hunk #2 FAILED at 4997 (different line endings).
2 out of 2 hunks FAILED
dpkg-source: info: the patch has fuzz which is not allowed, or is malformed
dpkg-source: info: if patch 'model_icd' is correctly applied by quilt, use 'quilt refresh' to update it
dpkg-source: info: restoring quilt backup files for model_icd
dpkg-source: error: LC_ALL=C patch -t -F 0 -N -p1 -u -V never -E -b -B .pc/model_icd/ --reject-file=- < debian/patches/model_icd subprocess returned exit status 1
dpkg-buildpackage: error: dpkg-source --before-build . subprocess returned exit status 2
我尝试过的事情:
首先,我只是修改了我的补丁,使用 dos 风格的行尾,但 quilt 删除了它,我得到了相同的结果
$ unix2dos debian/patches/model_icd
$ dos2unix -i debian/patches/model_icd CONFIG/model_config_file.txt
29 0 0 no_bom text debian/patches/model_icd
5000 0 0 no_bom text CONFIG/model_config_file.txt
$ dpkg-buildpackage
...
dpkg-source: info: applying model_icd
(Stripping trailing CRs from patch; use --binary to disable.)
patching file CONFIG/model_config_file.txt
Hunk #1 FAILED at 1638 (different line endings).
Hunk #2 FAILED at 4997 (different line endings).
2 out of 2 hunks FAILED
...
如果我直接测试quilt
,我可以让它与该选项一起工作--binary
:
$ quilt push -a --binary
Applying patch model_icd
patching file CONFIG/model_config_file.txt
Now at patch model_icd
为了让它更自动地工作,我尝试设置QUILT_PATCH_OPTS=
:
$ QUILT_PATCH_OPTS="--binary" quilt push -a
Applying patch model_icd
patching file CONFIG/model_config_file.txt
Now at patch model_icd
接下来,我尝试将其设置为debian/rules
:
export QUILT_PATCH_OPTS="--binary"
%:
dh $@
但这不会被直接dpkg-source
使用patch
,而不是quilt
接下来,我尝试通过在文件中设置此标志来欺骗它patches/series
。 dpkg-source(1)
建议不要这样做,这表明这是可能的。
# debian/patches/series
model_icd --binary
但这仍然不起作用。
我尝试寻找source/options
一些东西,并且我一直在阅读维护者指南,但我没有在任何地方看到这方面的内容。