Differences between revisions 2 and 5 (spanning 3 versions)
Revision 2 as of 2023-10-14 02:13:32
Size: 6082
Editor: PaulWise
Comment: add linux-libre deblob
Revision 5 as of 2023-11-23 05:05:05
Size: 6250
Editor: PaulWise
Comment: update lintian tag urls
Deletions are marked like this. Additions are marked like this.
Line 16: Line 16:
 * Lintian detects prebuilt [[https://sources.debian.org/src/lintian/unstable/tags/s/source-contains-prebuilt-binary.tag|binaries]], [[https://sources.debian.org/src/lintian/unstable/tags/s/source-contains-prebuilt-doxygen-documentation.tag|doxygen documentation]], [[https://sources.debian.org/src/lintian/unstable/tags/s/source-contains-prebuilt-flash-object.tag|Flash objects]], [[https://sources.debian.org/src/lintian/unstable/tags/s/source-contains-prebuilt-flash-project.tag|Flash projects]], [[https://sources.debian.org/src/lintian/unstable/tags/s/source-contains-prebuilt-java-object.tag|Java objects]], [[https://sources.debian.org/src/lintian/unstable/tags/s/source-contains-prebuilt-javascript-object.tag|JavaScript objects]], [[https://sources.debian.org/src/lintian/unstable/tags/s/source-contains-prebuilt-ms-help-file.tag|Windows documentation]], [[https://sources.debian.org/src/lintian/unstable/tags/s/source-contains-prebuilt-pandoc-documentation.tag|pandoc documentation]], [[https://sources.debian.org/src/lintian/unstable/tags/s/source-contains-prebuilt-python-object.tag|Python objects]], [[https://sources.debian.org/src/lintian/unstable/tags/s/source-contains-prebuilt-silverlight-object.tag|Silverlight objects]], [[https://sources.debian.org/src/lintian/unstable/tags/s/source-contains-prebuilt-sphinx-documentation.tag|sphinx documentation]], [[https://sources.debian.org/src/lintian/unstable/tags/s/source-contains-prebuilt-wasm-binary.tag|WASM binaries]], [[https://sources.debian.org/src/lintian/unstable/tags/s/source-contains-prebuilt-windows-binary.tag|Windows binaries]] and [[https://sources.debian.org/src/lintian/unstable/tags/s/source-contains-prebuilt-yapp-parser.tag|Parse::Yapp parsers]].  * Lintian detects prebuilt [[https://udd.debian.org/lintian-tag.cgi?tag=source-contains-prebuilt-binary|binaries]], [[https://udd.debian.org/lintian-tag.cgi?tag=source-contains-prebuilt-doxygen-documentation|doxygen documentation]], [[https://udd.debian.org/lintian-tag.cgi?tag=source-contains-prebuilt-flash-object|Flash objects]], [[https://udd.debian.org/lintian-tag.cgi?tag=source-contains-prebuilt-flash-project|Flash projects]], [[https://udd.debian.org/lintian-tag.cgi?tag=source-contains-prebuilt-java-object|Java objects]], [[https://udd.debian.org/lintian-tag.cgi?tag=source-contains-prebuilt-javascript-object|JavaScript objects]], [[https://udd.debian.org/lintian-tag.cgi?tag=source-contains-prebuilt-ms-help-file|Windows documentation]], [[https://udd.debian.org/lintian-tag.cgi?tag=source-contains-prebuilt-pandoc-documentation|pandoc documentation]], [[https://udd.debian.org/lintian-tag.cgi?tag=source-contains-prebuilt-python-object|Python objects]], [[https://udd.debian.org/lintian-tag.cgi?tag=source-contains-prebuilt-silverlight-object|Silverlight objects]], [[https://udd.debian.org/lintian-tag.cgi?tag=source-contains-prebuilt-sphinx-documentation|sphinx documentation]], [[https://udd.debian.org/lintian-tag.cgi?tag=source-contains-prebuilt-wasm-binary|WASM binaries]], [[https://udd.debian.org/lintian-tag.cgi?tag=source-contains-prebuilt-windows-binary|Windows binaries]] and [[https://udd.debian.org/lintian-tag.cgi?tag=source-contains-prebuilt-yapp-parser|Parse::Yapp parsers]].
Line 20: Line 20:
 * [[https://github.com/nexB/scancode-toolkit|scancode-toolkit]] [[https://github.com/nexB/scancode-toolkit/blob/develop/src/summarycode/generated.py|detects strings indicative of generated files]]
 * [[https://metacpan.org/pod/App::Licensecheck|licensecheck]] detects via [[https://metacpan.org/pod/Regexp::Pattern::License|Regexp::Pattern::License]] strings indicative of generated files

The Debian Free Software Guidelines (DFSG) state in item 2 that for Debian packages, The program must include source code and the FTP-masters interpret this as requiring source for all packages.

Auto-generated prebuilt files should be removed from the upstream VCS and source tarballs. Upstream might want to only add prebuilt files to binary packages or bundle the prebuilt files into a single but separate source tarball. Once upstream has fixed the issue, the Debian package can then be updated to the fixed version. If upstream refuse to remove the prebuilt files, then Debian should either repack the upstream tarball using Files-Excluded (if there is a DFSG or size issue) or remove the files in debian/rules clean and very early in debian/rules build, so that they are always built from source and there is no chance of the prebuilt versions being used by the build process.

There may be some exceptions to this:

  • autotools files should probably be removed from the upstream VCS but kept in the upstream tarball since autotools is meant to be used this way, but the Debian package should rebuild the generated autotools files using autoreconf. Modern debhelper compat versions will do this automatically.
  • If the prebuilt files take multiple weeks to build or require specialised hardware to build, then it is acceptable for Debian to use the prebuilt files, as long as they are reproducibly buildable within Debian main using only the declared build dependencies, they only occur in a separate upstream tarball and the debian/rules has a target to remove and force rebuild of the prebuilt files.

There is not yet any manual tracking of packages that embed prebuilt files (including unused ones).

No wiki pages mention lists of prebuilt files yet.

There are several tools for detecting prebuilt files:

The Debian Sources website collects hashes and ctags of all Debian source code and allows searching for specific hashes and ctags, which may be useful for detecting specific prebuilt files in multiple source packages.

If you have a prebuilt file with some unique string you can likely find other copies using the Debian code search site or external code search engines such as searchcode and GitHub.

If a prebuilt file has a fairly unique name or extension, you can often find copies of that file by searching the contents of Debian source packages using apt-file:

apt-file search -I dsc somefile
apt-file search -I dsc -x '\.o$'

Some Debian folks keep track of prebuilt files they found via usertags:

Fonts team

See also