Chapter 7. Sanitization of the source

Table of Contents

7.1. Fix with Files-Excluded
7.2. Fix with debian/rules clean
7.3. Fix with extend-diff-ignore
7.4. Fix with tar-ignore
7.5. Fix with git clean -dfx

There are a few cases which require to sanitize the source to prevent contaminating the generated Debian source package.

以下几种方法均可避免引入不必要的内容。

This is suitable for avoiding non DFSG contents in the upstream source tarball.

  • debian/copyright 文件中的 Files-Excluded 一节中列出需要移除的文件。
  • debian/watch 文件中列出下载上游源码包(tarball)所使用的 URL。
  • 运行 uscan 命令以下载新的上游源码包(tarball)。

    • Alternatively, use the gbp import-orig --uscan --pristine-tar command.
  • mk-origtargz invoked from uscan removes excluded files from the upstream tarball and repack it as a clean tarball.
  • 最后得到 tarball 的版本编号会附加一个额外的后缀 +dfsg

See COPYRIGHT FILE EXAMPLES in mk-origtargz(1).

This is suitable for avoiding auto-generated files and removes them in the debian/rules clean target

[Note]Note

The debian/rules clean target is called before the dpkg-source --build command by the dpkg-buildpackage command and the dpkg-source --build command ignores removed files.

This is for the non-native Debian package.

The problem of extraneous diffs can be fixed by ignoring changes made to parts of the source tree by adding the extend-diff-ignore=…​ line in the debian/source/options file.

debian/source/options to exclude the config.sub, config.guess and Makefile files: 

# Don't store changes on autogenerated files
extend-diff-ignore = "(^|/)(config\.sub|config\.guess|Makefile)$"

[Note]Note

即使您无法删除文件,这种做法总可以正常工作。您无需在每次构建之前手动删除文件并手动进行恢复。

[Tip]Tip

如果您转而使用 debian/source/local-options 文件,您可以在生成的源码包中隐藏该项设置。这种做法在本地非标准版本控制系统和您的打包工作有冲突时可能有用。

This is for the native Debian package.

You can exclude some files in the source tree from the generated tarball by tweaking the file glob by adding the tar-ignore=…​ lines in the debian/source/options or debian/source/local-options files.

[Note]Note

If, for example, the source package of a native package needs files with the file extension .o as a part of the test data, the setting in Section 4.5, “devscripts setup” is too aggressive. You can work around this problem by dropping the -I option for DEBUILD_DPKG_BUILDPACKAGE_OPTS in Section 4.5, “devscripts setup” while adding the tar-ignore=…​ lines in the debian/source/local-options file for each package.

The problem of extraneous contents in the second build can be avoided by restoring the source tree by committing the source tree to the Git repository before the first build.

您可以在第二次构建软件包之前恢复最初的源码树。例如:

 $ git reset --hard
 $ git clean -dfx

This works because the dpkg-source command ignores the contents of the typical VCS files in the source tree with the DEBUILD_DPKG_BUILDPACKAGE_OPTS setting in `"Section 4.5, “devscripts setup”`".

[Tip]Tip

If the source tree is not managed by a VCS, you should run git init; git add -A .; git commit before the first build.