Глава 7. Sanitization of the source

Содержание

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.

There are several methods to avoid inclusion of undesirable contents.

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

  • Укажите список файлов для удаления в строке Files-Excluded файла debian/copyright.
  • Укажите URL для загрузки tar-архива основной ветки в файле debian/watch.
  • Запустите команду uscan для загрузки нового tar-архива основной ветки.

    • 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.
  • Получившийся tar-архив будет иметь версию с дополнительным суффиком +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

[Примечание]Примечание

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)$"

[Примечание]Примечание

Этот подход работает всегда, даже если вы не можете удалить файл. Поэтому он позволяет вам не делать резервную копию неизменённого файла только для того, чтобы восстановить его для выполнения следующей сборки.

[Подсказка]Подсказка

Если используется файл 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.

[Примечание]Примечание

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 «Раздел 4.5, «devscripts setup»» is too aggressive. You can work around this problem by dropping the -I option for DEBUILD_DPKG_BUILDPACKAGE_OPTS in «Раздел 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 `"Раздел 4.5, «devscripts setup»`".

[Подсказка]Подсказка

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