Re: e2fsprogs as Essential: yes?
In 2011 Steve Langasek proposed dropping Essential: yes from e2fsprogs.
On Sat, Mar 26, 2011 at 11:47:08AM -0700, Steve Langasek wrote:
> Currently the e2fsprogs package is marked Essential: yes in the archive. Is
> this a historical holdover? I believe e2fsprogs used to ship /sbin/fsck,
> but since 2009 (i.e., util-linux (>= 2.15~rc1-1), which e2fsprogs has a
> pre-depends on), this has been provided by util-linux instead.
>
> The remaining programs provided by e2fsprogs are all specific to the ext*
> family of filesystems, so I don't think meet the definition of Essential any
> longer - their presence is certainly important if you have an ext[234]
> filesystem, but while this is the default, you can have systems that don't
> use ext* at all, which makes e2fsprogs no more essential in nature than the
> other per-filesystem fsck tools.
>
> Now that the transition to util-linux is done in a stable release, is it
> time for us to drop the Essential: yes flag from e2fsprogs? This will
> benefit those targetting embedded systems that don't use ext, where the
> package will be dead weight; the risk of any packages assuming availability
> of these e2fs-specific interfaces without a dependency is quite low; and
> we're at the right point in the cycle to make changes to the Essential set,
> where we have time to deal with any unexpected fallout.
Since then we have fully transitioned to systemd and init has become
non-essential. The issue around pulling e2fsprogs into essential via
logsave has thus solved itself.
I think we should revisit this proposal now that it becomes practical.
To get us going, I have come up with a plan:
1) Analyze which packages would need dependencies on e2fsprogs.
2) File a bug against lintian to stop complaining about e2fsprogs
dependencies.
3) MBF those packages that need an e2fsprogs dependency.
4) Drop Essential: yes from e2fsprogs.
So I thought, "how hard can it be?" All we need to do is grep the
archive for those tools and add those dependencies. So I unpacked sid
main amd64 and grepped[1] each and every file (potentially decompressing
gzip) for those e2fsprogs. The results[2] are 5666 occurrences in 1250
binary packages. From there, I started looking[3] into the actual uses
and filtered common non-uses such as documentation, debug symbols,
kernel images, locales and other stuff. I manually checked the remaining
packages and thus went down[4] to 318 occurrences in 133 binary
packages. Thus I arrive at the final dd-list (attached) for an MBF. We
can now say that our package lists will increase by less than 1.5kb
uncompressed if we make e2fsprogs non-essential. In comparison, the
average binary package weighs 767 bytes. I believe that the method used
is mostly free from false negatives (by looking for bare program names
in each and every file) and has a manageable number of false positives.
I think we can check off the analysis part. How about proceeding with
the lintian bug and the MBF now? Did I miss anything?
Again, we are at the right point in the cycle to handle unexpected
fallout. :)
Helmut
[1] Attached e2fsprogsimport.py + the software behind
https://dedup.debian.net/
[2] http://subdivi.de/~helmut/e2fsprogsimport.result.xz
[3] Attached e2fsprogsanalyze.py
[4] http://subdivi.de/~helmut/e2fsprogsanalyze.result.xz
#!/usr/bin/python3
import argparse
from contextlib import closing
import logging
import multiprocessing
try:
import queue
except ImportError:
import Queue as queue
import sys
try:
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
import yaml
import zlib
from debian import deb822
from debian.debian_support import version_compare
from dedup.compression import GzipDecompressor
from dedup.debpkg import DebExtractor, decodetarname
from dedup.filemagic import FileDigester
from dedup.hashing import DecompressedHash, hash_file, SuppressingHash
from dedup.utils import open_compressed_mirror_url
class E2fsprogsAnalyzer:
"""Search for words in a stream of bytes.
@ivar found: is a set of discovered words
"""
def __init__(self, words):
"""
@param words: an iterable object yielding bytes
"""
self.found = set()
self.missing = set(words)
self.overlap = max(map(len, words)) - 1
self.buff = b""
def update(self, data):
self.buff += data
for word in tuple(self.missing):
if word in self.buff:
self.found.add(word)
self.missing.discard(word)
self.buff = self.buff[-self.overlap:]
def hexdigest(self):
return self.found
def copy(self):
new = E2fsprogsAnalyzer(self.missing)
new.found = self.found.copy()
new.overlap = self.overlap
new.buff = self.buff
return new
def make_tuple(*args):
return args
class MultiDigest(object):
def __init__(self, *digesters, postproc=make_tuple):
self.digesters = digesters
self.postproc = postproc
def update(self, buff):
for digester in self.digesters:
digester.update(buff)
def hexdigest(self):
return self.postproc(*(digester.hexdigest()
for digester in self.digesters))
def copy(self):
return MultiDigest(*(digester.copy() for digester in self.digesters),
postproc=self.postproc)
def make_e2fsprogs_analyzer():
programs = set(b"""badblocks chattr debugfs dumpe2fs e2freefrag e2fsck
e2image e2label e2undo e4crypt e4defrag filefrag fsck.ext2
fsck.ext3 fsck.ext4 logsave lsattr mke2fs mkfs.ext2
mkfs.ext3 mkfs.ext4 mklost+found resize2fs
tune2fs""".split())
def postproc(found, magicguess):
return (set(f.decode("ascii") for f in found), magicguess)
return MultiDigest(E2fsprogsAnalyzer(programs), FileDigester(),
postproc=postproc)
def make_compressed_e2fsprogs_analyzer():
d = make_e2fsprogs_analyzer()
zd = SuppressingHash(DecompressedHash(GzipDecompressor(), d.copy()),
(ValueError, zlib.error))
def postproc(zh, h):
if zh:
return zh + (True,)
return h + (False,)
return MultiDigest(zd, d, postproc=postproc)
class ProcessingFinished(Exception):
pass
class E2fsprogsExtractor(DebExtractor):
def __init__(self):
DebExtractor.__init__(self)
self.files = dict()
def handle_control_member(self, name, content):
a = make_e2fsprogs_analyzer()
a.update(content)
found, magicguess = a.hexdigest()
if found:
self.files["DEBIAN/%s" % name] = (found, magicguess, False)
def handle_data_tar(self, tarfileobj):
for elem in tarfileobj:
if not elem.isreg():
continue
try:
name = decodetarname(elem.name)
except UnicodeDecodeError:
logging.warning("skipping filename with encoding error %r",
elem.name)
continue # skip files with non-utf8 encoding for now
a = make_compressed_e2fsprogs_analyzer()
hash_file(a, tarfileobj.extractfile(elem))
found, magicguess, compressed = a.hexdigest()
if found:
self.files[name] = (found, magicguess, compressed)
raise ProcessingFinished
def process_one_package(item):
pkg, url = item
try:
extractor = E2fsprogsExtractor()
with closing(urlopen(url)) as pkgfile:
try:
extractor.process(pkgfile)
except ProcessingFinished:
pass
return (pkg, extractor.files)
except:
logging.exception("while processing %s", pkg)
return (pkg, {})
def consume_items(dct):
while True:
try:
yield dct.popitem()
except KeyError:
break
def bounded_imap_unordered(bound, pool, function, iterable):
iterable = iter(iterable)
results = queue.Queue()
outstanding = 0
while iterable or outstanding:
if iterable:
for elem in iterable:
pool.apply_async(function, (elem,), callback=results.put)
outstanding += 1
if outstanding >= bound or not results.empty():
break
else:
iterable = None
if outstanding:
yield results.get()
outstanding -= 1
def main():
logging.basicConfig(level=logging.DEBUG)
parser = argparse.ArgumentParser()
parser.add_argument("-m", "--mirror", action="store",
default="http://httpredir.debian.org/debian",
help="Debian mirror to use")
args = parser.parse_args()
pkgs = dict()
url = "%s/dists/sid/main/binary-amd64/Packages" % args.mirror
with closing(open_compressed_mirror_url(url)) as pkglist:
for pkg in deb822.Packages.iter_paragraphs(pkglist):
try:
otherver = pkgs[pkg["package"]]["version"]
except KeyError:
pass
else:
if version_compare(otherver, pkg["version"]) < 0:
continue
pkgs[pkg["package"]] = dict(
version=pkg["version"],
filename=pkg["filename"])
pool = multiprocessing.Pool()
iterator = bounded_imap_unordered(32, pool, process_one_package,
((pkg, "%s/%s" % (args.mirror, meta["filename"]))
for pkg, meta in consume_items(pkgs)))
iterator = (dict(package=pkg,
files=dict((filename, dict(programs=sorted(programs),
magic=magicguess,
compressed=compressed))
for filename, (programs, magicguess, compressed)
in files.items()))
for (pkg, files) in iterator)
yaml.safe_dump_all(iterator, stream=sys.stdout)
if __name__ == '__main__':
main()
#!/usr/bin/python3
import sys
import yaml
manually_checked = {
"0xffff": "error message",
"actiona": "filesystem type list",
"alfred": "/sys/kernel/debug",
"alliance": "vlogsavelofig",
"amavisd-new": "nosuchattr",
"apitrace": "searchattributed",
"apitrace-gui": "searchattributed",
"apparmor-utils": "classifies tools from many packages",
"ardentryst": "python function name",
"argonaut-quota": "ldap_searchattribute",
"aufs-dkms": "#include <linux/debugfs.h>",
"augeas-lenses": "filesystem type list and mke2fs.conf",
"awesome-extra": "README.md",
"bacula-fd": "filesystem type list",
"bash-completion": "bash completions",
"batctl": "/sys/kernel/debug",
"bibledit-gtk-data": "html documentation",
"blktrace": "mountdebugfs and /sys/kernel/debug",
"blogliterately": "syntax highlighting",
"bluefish-data": "matchattr",
"borgbackup": "Python source comment",
"boxer-data": "package list including e2fsck-static",
"bpfcc-lua": "/sys/kernel/debug",
"brotli": "searchattributed",
"bup": "error messages and Python source comments",
"burp": "filesystem type list",
"busybox": "implements mke2fs",
"busybox-static": "implements mke2fs",
"calamares": "README.md",
"carettah": "syntax highlighting",
"chromium": "searchattributed",
"chromium-driver": "searchattributed",
"chromium-shell": "searchattributed",
"cinder-volume": "mmlsattr and mmchattr",
"coccinella": "value2label",
"context": "scratchattribute",
"coreutils": "filesystem type list",
"cpmtools": "cpmchattr",
"crash": "error message",
"crda": "C source comment",
"criu": "filesystem type list",
"cruft-common": "whitelist /etc/e2fsck.conf",
"cylc": "syntax highlighting",
"debian-cd": "package list including e2fsck-static",
"debtags": "tag database includes e2fsprogs",
"dfc": "filesystem type list",
"diamond": "/sys/kernel/debug",
"dict-de-en": "hochattraktiv",
"dict-freedict-deu-swe": "chattrum",
"dlm-controld": "error message",
"doconce": "title2label",
"dolibarr": "type2label",
"dotlrn": "Sprachattribute",
"doublecmd-gtk": "filesystem type list",
"doublecmd-qt": "filesystem type list",
"dovecot-core": "filesystem type list",
"dstat": "filesystem type list",
"dwarves": "/sys/kernel/debug",
"ecl": "ecl_chattrib",
"eficas": "foreachattr",
"eggdrop": "chattr irc command",
"eggdrop-data": "chattr irc command",
"elektra-tests": "filesystem type list",
"elvish": "mismatchattrScriptTypebad",
"emacs25": "filesystem type list",
"emacs25-lucid": "filesystem type list",
"erlang-base": "name2label",
"erlang-base-hipe": "name2label",
"erlang-src": "name2labels",
"ext4magic": "error message",
"facter": "actually uses lsattr on AIX",
"fdutils": "mbadblocks",
"fillets-ng-data": "game dialoges about chattr",
"findutils": "filesystem type list",
"fio": "e4defrag engine",
"firefox": "searchattributed",
"firefox-esr": "searchattributed",
"fish-common": "shell complestion for badblocks",
"fortunes": "jokes about chattr",
"fortunes-fr": "jokes about e2fsck",
"fortunes-it": "jokes about chattr",
"fortunes-mario": "jokes about chattr",
"fortunes-pl": "jokes about chattr",
"foxeye": "matchattr and internal chattr command",
"fpc-source-3.0.2": "variable name",
"freecol": "schattrein",
"fuse2fs": "error messages",
"gauche": "scheme variable name",
"gb": "protocolsattribute",
"gcc-5-source": "e2fsck_pass1 and changelog",
"gcc-6-source": "changelog",
"gcc-7-source": "changelog",
"gcl": "*chattrib",
"gfio": "engines/e4defrag.c",
"gfs2-utils": "/sys/kernel/debug",
"gitit": "syntax highlighting",
"gitlab": "filesystem type list",
"gnat-gps": "*_dialogsave_*",
"gnucash": "error message",
"gnulib": "filesystem type list",
"golang-github-aanand-compose-file-dev": "mtab like test output",
"golang-github-denverdino-aliyungo-dev": "modifyvswitchattribute",
"golang-github-opencontainers-runc-dev": "mtab like test output",
"golang-github-shirou-gopsutil-dev": "filesystem type list",
"golang-github-snapcore-snapd-dev": "go source comment",
"grc": "syntax highlighting",
"grr-server": "filesystem type list and mtab like test output",
"h2o": "searchattributed",
"hfsutils-tcltk": "tcl variable",
"hhvm": "searchattributed",
"highlight-common": "syntax highlighting",
"hostapd": "/sys/kernel/debug",
"hunspell-hu": "harminchattrilli?",
"idlestat": "/sys/kernel/debug",
"installation-report": "$logsavedir and a comment about debugfs",
"intel-gpu-tools": "/sys/kernel/debug",
"ircd-ircu": "chattr.tab.c and ircd_chattr.h",
"jfsutils": "jfs_debugfs",
"kate-data": "matchattr and syntax highlighting",
"kdelibs5-data": "woordenschattrainer",
"kdf": "filesystem type list",
"kernelshark": "/sys/kernel/debug",
"ketm": "badblocks.bmp",
"kexec-tools": "/sys/kernel/debug",
"kfloppy": "mke2fs documentation",
"kleopatra": "_ZNK4Kleo17DNAttributeMapper10name2labelERK7QString",
"kodi-pvr-vuplus": "e2imageversion",
"konversation-data": "chattrum and jokes about chattr",
"ktap": "#include <linux/debugfs.h>",
"laptop-mode-tools": "/sys/kernel/debug",
"latencytop": "/sys/kernel/debug",
"lazarus-ide-1.8": "liseventlogsavetofile",
"lazarus-ide-gtk2-1.8": "liseventlogsavetofile",
"lazarus-ide-qt5-1.8": "liseventlogsavetofile",
"lcl-nogui-1.8": "liseventlogsavetofile",
"lcl-utils-1.8": "liseventlogsavetofile",
"lcov": "/sys/kernel/debug",
"ldap-account-manager": "matchattrs",
"libalglib-dev": "C struct members",
"libbg1-dev": "debugfsys",
"libbio-graphics-perl": "feature2label and type2label",
"libblockdev-dev": "html and gir documentation",
"libcamitk4-doc": "m_5fdecimalsattribute",
"libconfig-model-perl": "fstab parser",
"libelektra4": "filesystem type list",
"libexodusii-dev": "elsattrb and elsattrib_name",
"libexodusii5": "elsattrb and elsattrib_name",
"libio-aio-perl": "filesystem type list",
"libghc-highlighting-kate-dev": "syntax highlighting",
"libghc-highlighting-kate-prof": "syntax highlighting",
"libghc-skylighting-dev": "syntax highlighting",
"libghc-skylighting-prof": "syntax highlighting",
"libgs9": "gs_attachattributrescolorspace",
"libgtksourceview2.0-common": "syntax highlighting",
"libgtksourceview-3.0-common": "syntax highlighting",
"libkf5akonadi-dev": "persistentsearchattribute",
"libkf5libkleo-dev": "name2label",
"libkf5libkleo5": "_ZNK4Kleo17DNAttributeMapper10name2labelERK7QString",
"libkf5coreaddons-data": "woordenschattrainer",
"libkleo4": "_ZNK4Kleo17DNAttributeMapper10name2labelERK7QString",
"liblinux-prctl-perl": "pod comments",
"libmailutils-dev": "chattr_msg",
"libmailutils5": "chattr_msg",
"libmonoboehm-2.0-1": "filesystem type list",
"libmonoboehm-2.0-dev": "filesystem type list",
"libmonosgen-2.0-1": "filesystem type list",
"libmonosgen-2.0-dev": "filesystem type list",
"libmount-dev": "filesystem type list",
"libmount1": "filesystem type list",
"libnet-imap-perl": "fetchattrs",
"libodin-dev": "type2label",
"libopenscap8": "filesystem type list",
"libopenzwave1.5": "switchtype2label",
"libpfm4": "/sys/kernel/debug",
"libpfm4-dev": "/sys/kernel/debug",
"libphp-phpmailer": "matchattrs",
"libqt5webenginecore5": "searchattributed",
"libreoffice-common": "srchattributes and searchattrdialog",
"libreoffice-core": "searchattrdialog",
"libsyntax-highlight-engine-kate-perl": "syntax highlighting",
"libsystem-info-perl": "actually uses lsattr on AIX",
"libsystemd0": "error message, chattr-util.c and chattr_fd",
"libterm-extendedcolor-perl": "Perl source comment",
"libvirt-daemon-system": "/sys/kernel/debug",
"libvm-ec2-perl": "runs e2fsprogs over ssh",
"libvtk6.3": "elsattrib_name and elsattrb",
"libwebkit2gtk-4.0-37": "searchattributed",
"libwebkit2gtk-4.0-37-gtk2": "searchattributed",
"libwiredtiger-dev": "__verify_filefrag_add",
"libxgks-dev": "C source symbols",
"libxmlada-schema4.6.2016": "...infoattrDeclsattributeattribu...",
"libxmlada-schema7-dev": "...foattrDeclsattributeattr...",
"linux-grsec-support-4.9.0-2": "aVdebugfs_create_automount",
"linux-headers-4.12.0-2-common": "linux kernel headers",
"linux-headers-4.12.0-2-amd64": "linux kernel headers",
"linux-headers-4.9.0-2-common-grsec": "linux kernel-headers",
"linux-headers-4.9.0-2-grsec-amd64": "linux kernel headers",
"linux-image-4.12.0-2-amd64": "linux kernel",
"linux-image-4.12.0-2-amd64-dbg": "linux kernel debug symbols",
"linux-image-4.9.0-2-grsec-amd64": "linux kernel",
"linux-patch-grsecurity2": "linux kernel source",
"linux-perf-4.12": "/sys/kernel/debug",
"linux-support-4.12.0-2": "aVdebugfs_create_automount",
"logcheck-database": "logcheck patterns",
"lttng-modules-dkms": "#include <linux/debugfs.h> and ChangeLog",
"lxc": "/sys/kernel/debug",
"lxc-tests": "mtab like test output",
"mali-midgard-dkms": "linux kernel extension",
"manaplus": "chattrade",
"manila-common": "command meta data",
"marionnet": "list of lots of binaries",
"mauve": "actually uses lsattr on AIX",
"mc": "ignore_ftp_chattr_errors and filesystem type list",
"mc-data": "syntax highlighting",
"mdadm": "examine-badblocks and error messages",
"mediawiki2latex": "syntax highlighting",
"medit": "syntax highlighting",
"mergerfs": "only package description",
"mercurial": "filesystem type list",
"mercurial-common": "debugfsinfo",
"mlton-compiler": "actually uses lsattr on AIX",
"modem-manager-gui": "contactname2label",
"modsecurity-crs": "patterns matching e2fsck.conf and chattr",
"monitoring-plugins-basic": "filesystem type list",
"mono-runtime-boehm": "filesystem type list",
"mono-runtime-sgen": "filesystem type list",
"mono-utils": "filesystem type list",
"mount": "bash-completion",
"mtools": "mbadblocks",
"munin-plugins-core": "filesystem type list and searchattrs",
"mysqltuner": "actually uses lsattr on AIX",
"nacl-tools": "uses AIX' lsattr",
"neofetch": "actually uses lsattr on AIX",
"netdata": "filesystem type list",
"netwox": "searchattributes",
"nmap-common": "page2images, dblogsave, lua source comment and ldap.searchattrib",
"ocfs2-tools": "debugfs.ocfs2, /sys/kernel/debug and error messages",
"ocfs2-tools-dev": "C source comments",
"ohai": "actually uses lsattr on AIX",
"onboard": "/sys/kernel/debug",
"open-infrastructure-system-build": "shell source comment",
"openacs": "Sprachattribute",
"ovirt-guest-agent": "filesystem type list",
"pandoc": "syntax highlighting",
"pandoc-citeproc": "syntax highlighting",
"paraview": "elsattrb*",
"patat": "syntax highlighting",
"pcp": "error message",
"pcp-testsuite": "/sys/kernel/debug and logs",
"perf-tools-unstable": "/sys/kernel/debug",
"petit": "dmesg output",
"php-geshi": "syntax highlighting",
"php7.0-dev": "actually uses lsattr on AIX",
"php7.1-dev": "actually uses lsattr on AIX",
"phpldapadmin": "matchattrs",
"pidgin": "chattrum",
"piglit": "debugfs_path",
"polari": "documentation",
"postgresql-10": "ldapsearchattribute",
"postgresql-9.6": "ldapsearchattribute",
"postgresql-server-dev-10": "ldapsearchattribute",
"postgresql-server-dev-9.6": "ldapsearchattribute",
"powerdebug": "error message",
"powertop": "/sys/kernel/debug",
"psychopy": "code2label",
"psychtoolbox-3-common": "/sys/kernel/debug",
"python-apipkg": "clsattr",
"python-blockdiag": "node2image",
"python-breezy.tests": "chattr Python function",
"python-brotli": "searchattributed",
"python-bzrlib.tests": "chattr Python function",
"python-cinder": "mmlsattr and mmchattr",
"python-colander": "clsattrs",
"python-fs": "debugfs Python module and chattr Python function",
"python-impacket": "rpc_m_invalid_srchattr",
"python-kde4-dev": "persistentsearchattribute",
"python-ldaptor": "*_nosuchattr",
"python-paramiko": "chattr method stubs",
"python-plumbum": "__plumbum_switchattr_dict__",
"python-sphinxcontrib.actdiag": "node2image",
"python-sphinxcontrib.blockdiag": "node2image",
"python-sphinxcontrib.nwdiag": "node2image",
"python-sphinxcontrib.seqdiag": "node2image",
"python-sprox": "name2label",
"python-toscawidgets": "name2label",
"python-twisted-core": "nosuchattrib",
"python-x2go": "chattr Python function",
"python3-apipkg": "clsattr",
"python3-blockdiag": "node2image",
"python3-brotli": "searchattributed",
"python3-colander": "clsattr",
"python3-paramiko": "chattr method stubs",
"python3-plumbum": "__plumbum_switchattr_dict__",
"python3-sphinxcontrib.actdiag": "node2image",
"python3-sphinxcontrib.blockdiag": "node2image",
"python3-sphinxcontrib.nwdiag": "node2image",
"python3-sphinxcontrib.seqdiag": "node2image",
"python3-twisted": "nosuchattrib",
"qtcreator-data": "syntax highlighting",
"r-bioc-multtest": "sample2label",
"racket-common": "relsattrs",
"rasdaemon": "/sys/kernel/debug",
"reiser4progs": "debugfs.reiser4",
"rex": "pod documentation",
"rhn-client-tools": "Python source comments",
"rmlint": "filesystem type list",
"roundcube-plugins": "*lchattr",
"rr": "searchattributed",
"rt-tests": "/sys/kernel/debug",
"ruby-dnsruby": "name2labels",
"ruby-fog-aliyun": "modifyvswitchattribute",
"sash": "implements lsattr and chattr",
"seekwatcher": "/sys/kernel/debug",
"selinux-policy-dev": "kernel_.*_debugfs and debugfs_t",
"selinux-policy-src": "selinux policy",
"sftpcloudfs": "Python method chattr",
"shtool": "actually uses lsattr on AIX",
"simplesamlphp": "searchattributes",
"sitesummary": "filesystem type list",
"sitesummary-nodes": "filesystem type list",
"skylighting": "syntax highlighting",
"snakemake": "node2label",
"strace": "format string",
"system-tools-backends": "mountdebugfs",
"systemd-container": "chattr_fd",
"systemtap-common": "/sys/kernel/debug",
"systemtap-runtime": "/sys/kernel/debug",
"taglog": "default filename of SaveAsFilename",
"testdisk": "error message",
"testdisk-dbg": "debug symbols",
"texlive-binaries": "searchattributed",
"texlive-pictures": "magichattrue",
"thunderbird": "searchattributed",
"tiger": "documentation, comments and filesystem type list",
"tortoisehg": "_enable2label",
"toxiproxy-cli": "mismatchattributes",
"trace-cmd": "/sys/kernel/debug",
"trans-de-en": "hochattraktiv",
"typespeed": "word list",
"ulatencyd": "/sys/kernel/debug",
"undertaker": "/sys/kernel/debug",
"urlscan": "searchattr",
"user-mode-linux": "kernel error messages and symbols",
"util-linux": "filesystem type list and --badblocks option",
"wims": "jokes about chattr",
"wuzz": "...-dialogsave-...",
"xenomai-kernel-source": "debug filesystem",
"xjadeo": "filesystem type list",
"xscreensaver-screensaver-bsod": "playing back fsck",
"xserver-xorg-video-intel": "/sys/kernel/debug",
"xymon-client": "actually uses lsattr on AIX",
"wpasupplicant": "/sys/kernel/debug",
"znc-tcl": "matchattr",
"zsh-common": "madblocks and tune2fs completions",
}
def main():
for doc in yaml.safe_load_all(stream=sys.stdin):
for filename, matches in doc["files"].items():
ignore = None
if filename.startswith("./usr/share/doc/"):
ignore = "documentation"
elif filename.startswith("./usr/share/") \
and "/locale/" in filename \
and filename.endswith(".mo") \
and matches["magic"].startswith("GNU message catalog"):
ignore = "locale"
elif filename.startswith("./usr/share/libreoffice/help/"):
ignore = "libreoffice help files"
elif filename.startswith("./usr/share/man/") \
and matches["compressed"]:
ignore = "manual page"
elif filename.startswith("./usr/lib/debug/.build-id/") \
and matches["magic"].startswith("ELF "):
ignore = "debug symbols"
elif filename.startswith("./usr/share/info/") and \
matches["compressed"]:
ignore = "info page"
elif filename.startswith("./usr/share/hunspell/") \
and filename.endswith(".dic"):
ignore = "myspell dictionary"
elif filename.startswith("./usr/lib/libreoffice/share/config/soffice.cfg/cui/ui/res/") \
and filename.endswith(".zip"):
ignore = "libreoffice translation"
elif filename.startswith("./usr/share/debian-reference/"):
ignore = "debian-reference"
elif filename.startswith("./usr/lib/debian-installer/images/"):
ignore = "debian-installer images"
elif filename.startswith("./usr/share/help/") \
and not matches["compressed"] \
and matches["magic"] == "XML document text":
ignore = "xml help file"
elif filename.endswith("/config.guess") \
and matches["programs"] == ["lsattr"] \
and not matches["compressed"] \
and matches["magic"] == "POSIX shell script, ASCII text executable":
ignore = "config.guess"
elif filename == "DEBIAN/md5sums":
ignore = filename
elif filename.endswith(".po") \
and not matches["compressed"] \
and matches["magic"].startswith(("GNU gettext message catalogue",
"UTF-8 Unicode text")):
ignore = ".po file"
elif '/modules/' in filename \
and '/kernel/' in filename \
and filename.endswith(".ko") \
and not matches["compressed"] \
and matches["magic"].startswith("ELF "):
ignore = "linux kernel module"
elif filename.endswith(".html") \
and matches["magic"].startswith("HTML document"):
ignore = "html"
elif doc["package"] in ("e2fsprogs", "e2fslibs", "e2fslibs-dev",
"e2fsck-static"):
ignore = "e2fsprogs itself"
elif doc["package"].startswith("linux-libc-dev"):
ignore = "linux-libc-dev"
else:
try:
ignore = manually_checked[doc["package"]]
except KeyError:
pass
print("%s %s %s %s (%s %s)%s" %
("ignore" if ignore else "check",
doc["package"],
filename,
",".join(matches["programs"]),
"compressed" if matches["compressed"] else "plain",
matches["magic"],
" because " + ignore if ignore else ""))
if __name__ == '__main__':
main()
Aaron M. Ucko <ucko@debian.org>
gbrowse (U)
Adam Conrad <adconrad@0c3.net>
initramfs-tools (U)
Adrian Vondendriesch <adrian.vondendriesch@credativ.de>
resource-agents (U)
Alejandro Garrido Mota <garridomota@gmail.com>
libsys-filesystem-perl (U)
Alexander Wirt <formorer@debian.org>
grml-debootstrap (U)
Andreas B. Mundt <andi@debian.org>
debian-lan-config (U)
Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
havp (U)
Andreas Henriksson <andreas@fatal.se>
libblockdev (U)
Andreas Tille <andreas@an3as.eu>
manila (U)
Andreas Tille <tille@debian.org>
gbrowse (U)
Andrew Lee (æ??å?¥ç§?) <ajqlee@debian.org>
obs-build (U)
Andriy Senkovych <jolly_roger@itblog.org.ua>
salt (U)
Anibal Monsalve Salazar <anibal@debian.org>
gparted (U)
xfsprogs (U)
Ansgar Burchardt <ansgar@debian.org>
libsys-filesystem-perl (U)
Anthony Prades <toony.debian@chezouam.net>
cyrus-imapd (U)
Antonio Radici <antonio@debian.org>
cfengine3
Antonio Terceiro <terceiro@debian.org>
cloud-utils (U)
ruby-specinfra (U)
Apollon Oikonomopoulos <apoikos@debian.org>
ganeti-instance-debootstrap (U)
Aron Xu <aron@debian.org>
dkms (U)
Aurelien Jarno <aurel32@debian.org>
qemu (U)
Aurélien G�R�ME <ag@roxor.cx>
rsrce (U)
Axel Beckert <abe@debian.org>
xen-tools
Bastian Blank <waldi@debian.org>
cloud-init (U)
linux (U)
lvm2 (U)
Bdale Garbee <bdale@gag.com>
plinth (U)
Ben Hutchings <ben@decadent.org.uk>
initramfs-tools (U)
linux (U)
Benda Xu <heroxbd@gmail.com>
sysvinit (U)
Benjamin Drung <benjamin.drung@profitbricks.com>
salt (U)
Benjamin J. Scott <benscott@nwlink.com>
kvpm
Bernd Schumacher <bernd.schumacher@hpe.com>
bootcd
Carlos Alberto Lopez Perez <clopez@igalia.com>
util-vserver
ChangZhuo Chen (é?³æ??å?¬) <czchen@debian.org>
tomb (U)
Charles Plessy <plessy@debian.org>
cloud-init (U)
euca2ools (U)
gbrowse (U)
Chris AtLee <chris@atlee.ca>
drobo-utils
Chris Grzegorczyk <grze@eucalyptus.com>
euca2ools (U)
Chris Lamb <lamby@debian.org>
diffoscope (U)
installation-birthday
Christian Hofstaedtler <zeha@debian.org>
boot-info-script
grml-debootstrap (U)
Christoph Berg <myon@debian.org>
postgresql-common (U)
resource-agents (U)
Christophe Monniez <christophe.monniez@fccu.be>
recoverdm (U)
ClamAV Team <pkg-clamav-devel@lists.alioth.debian.org>
havp
Corey Bryant <corey.bryant@canonical.com>
tempest (U)
Daniel Jared Dominguez <jared.dominguez@dell.com>
fwupdate (U)
Dave Love <fx@gnu.org>
singularity-container (U)
David Paleino <dapal@debian.org>
dkms (U)
Debian Accessibility Team <pkg-a11y-devel@lists.alioth.debian.org>
edbrowse
Debian buildd-tools Developers <buildd-tools-devel@lists.alioth.debian.org>
sbuild
Debian Cloud Team <cloud-packages@lists.alioth.debian.org>
bootstrap-vz
Debian Cloud Team <debian-cloud@lists.debian.org>
cloud-init
Debian Cyrus Team <pkg-cyrus-imapd-debian-devel@lists.alioth.debian.org>
cyrus-imapd
Debian DNS Packaging <pkg-dns-devel@lists.alioth.debian.org>
dnssec-trigger
Debian Edu Developers <debian-edu@lists.debian.org>
debian-edu-config
Debian EFI <debian-efi@lists.debian.org>
fwupdate
Debian Eucalyptus Maintainers <pkg-eucalyptus-maintainers@lists.alioth.debian.org>
euca2ools
Debian Forensics <forensics-devel@lists.alioth.debian.org>
recoverdm
rkhunter
safecopy
Debian Ganeti Team <pkg-ganeti-devel@lists.alioth.debian.org>
ganeti-instance-debootstrap
Debian Go Packaging Team <pkg-go-maintainers@lists.alioth.debian.org>
nomad (U)
Debian HA Maintainers <debian-ha-maintainers@lists.alioth.debian.org>
resource-agents
Debian kernel team <debian-kernel@lists.debian.org>
initramfs-tools
Debian Kernel Team <debian-kernel@lists.debian.org>
linux
Debian LAN Developers <debian-lan-devel@lists.alioth.debian.org>
debian-lan-config
Debian LAVA team <pkg-linaro-lava-devel@lists.alioth.debian.org>
lava-dispatcher
Debian Libvirt Maintainers <pkg-libvirt-maintainers@lists.alioth.debian.org>
libguestfs
libvirt-sandbox
supermin
virt-manager
Debian Live <debian-live@lists.debian.org>
live-build
Debian LVM Team <pkg-lvm-maintainers@lists.alioth.debian.org>
lvm2
Debian Med Packaging Team <debian-med-packaging@lists.alioth.debian.org>
gbrowse
Debian pbuilder maintenance team <pbuilder-maint@lists.alioth.debian.org>
cowdancer
Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org>
libsys-filesystem-perl
Debian PostgreSQL Maintainers <pkg-postgresql-public@lists.alioth.debian.org>
postgresql-common
Debian Privacy Tools Maintainers <pkg-privacy-maintainers@lists.alioth.debian.org>
tails-installer
Debian QA Group <packages@qa.debian.org>
boxbackup
gfxboot
lxctl
partimage
ploop
Debian QEMU Team <pkg-qemu-devel@lists.alioth.debian.org>
qemu
Debian Ruby Extras Maintainers <pkg-ruby-extras-maintainers@lists.alioth.debian.org>
ruby-specinfra
Debian Salt Team <pkg-salt-team@lists.alioth.debian.org>
salt
Debian Security Tools Packaging Team <pkg-security-team@lists.alioth.debian.org>
tomb
Debian systemd Maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
casync
mkosi
systemd
Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
sysvinit
Debootloaders miBoot Maintainers Team <debootloaders-miboot@lists.alioth.debian.org>
rsrce
Diane Trout <diane@ghic.org>
dnssec-trigger (U)
Dimitri John Ledkov <dimitri.j.ledkov@linux.intel.com>
obs-build (U)
Dmitry Smirnov <onlyjob@debian.org>
nilfs-tools (U)
nomad
Docker Packaging Team <docker-maint@lists.alioth.debian.org>
docker.io (U)
Dustin Kirkland <kirkland@ubuntu.com>
euca2ools (U)
Dynamic Kernel Modules Support Team <pkg-dkms-maint@lists.alioth.debian.org>
dkms
Eric Delaunay <delaunay@debian.org>
scsitools
Etienne Dublé <etienne.duble@gmail.com>
debootstick
Fathi Boudra <fabo@debian.org>
lava-dispatcher (U)
linaro-image-tools (U)
FAUmachine Team <faumachine@potyra.de>
faumachine
Federico Ceratto <federico@debian.org>
plinth (U)
Felipe Sateler <fsateler@debian.org>
casync (U)
mkosi (U)
Felix Zielcke <fzielcke@z-51.de>
reiserfsprogs
Filesystems Group <filesystems-devel@lists.alioth.debian.org>
nilfs-tools
Francesco Paolo Lovergine <frankie@debian.org>
sbuild (U)
Francisco Manuel Garcia Claramonte <francisco@debian.org>
lynis
Franck Joncourt <franck@debian.org>
libsys-filesystem-perl (U)
Francois Marier <francois@debian.org>
rkhunter (U)
Franklin G Mendoza <franklin.g.mendoza@gmail.com>
salt (U)
FreedomBox packaging team <freedombox-pkg-team@lists.alioth.debian.org>
plinth
Frédéric Bonnard <frediz@linux.vnet.ibm.com>
rear
Georges Khaznadar <georgesk@debian.org>
clonezilla
drbl
Gergely Nagy <algernon@balabit.hu>
edbrowse (U)
Giuseppe Iuculano <iuculano@debian.org>
dkms (U)
Gonéri Le Bouder <goneri@debian.org>
fusioninventory-agent
Graziano Obertelli <graziano@eucalyptus.com>
euca2ools (U)
Grml Team <team@grml.org>
grml-debootstrap
Guido Günther <agx@sigxcpu.org>
libguestfs (U)
libvirt-sandbox (U)
virt-manager (U)
Guido Trotter <ultrotter@debian.org>
ganeti-instance-debootstrap (U)
gustavo panizzo <gfa@zumbi.com.ar>
nova (U)
Harlan Lieberman-Berg <hlieberman@debian.org>
ansible
Helge Deller <deller@gmx.de>
palo
Henrique de Moraes Holschuh <hmh@debian.org>
cyrus-imapd (U)
Herbert Parentes Fortes Neto <hpfn@debian.org>
pyparted
Hideki Yamane <henrich@debian.org>
snapper
Hilko Bengen <bengen@debian.org>
libguestfs (U)
supermin (U)
Holger Levsen <holger@debian.org>
debian-edu-config (U)
diffoscope (U)
Héctor Orón MartÃnez <zumbi@debian.org>
obs-build (U)
Iain R. Learmonth <irl@debian.org>
vmdebootstrap (U)
Ian Jackson <ijackson@chiark.greenend.org.uk>
sysvinit (U)
James Clarke <jrtc27@debian.org>
cowdancer (U)
Jan Christoph Nordholz <hesso@pool.math.tu-berlin.de>
autofs (U)
Jean-Michel Kelbert <kelbert@debian.org>
opensvc
Jeremie Koenig <sprite@sprite.fr.eu.org>
rsrce (U)
Joachim Wiedorn <joodebian@joonet.de>
lilo
Joao Eriberto Mota Filho <eriberto@debian.org>
safecopy (U)
Joe Healy <joehealy@gmail.com>
salt (U)
Johannes Schauer <josch@debian.org>
sbuild (U)
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
kvpm (U)
Jonathan Yu <jawnsy@cpan.org>
libsys-filesystem-perl (U)
Jordi Mallach <jordi@debian.org>
lava-dispatcher (U)
Julien Danjou <acid@debian.org>
cloud-init (U)
cloud-utils (U)
KURASHIKI Satoru <lurdan@gmail.com>
ruby-specinfra (U)
Kyo Lee <kyo.lee@eucalyptus.com>
euca2ools (U)
LaMont Jones <lamont@debian.org>
postfix
Lars Wirzenius <liw@liw.fi>
vmdebootstrap (U)
Laurent Léonard <laurent@open-minds.org>
virt-manager (U)
Lee Garrett <debian@rocketjump.eu>
ansible (U)
Linaro Packagers <packages@lists.linaro.org>
linaro-image-tools
Louis Bouchard <louis.bouchard@ubuntu.com>
sosreport
Louis Zuckerman <me@louiszuckerman.com>
glusterfs (U)
Malihe Asemani <ml.asemani@gmail.com>
manila (U)
Marcin Kulisz (kuLa) <debian@kulisz.net>
bootstrap-vz (U)
Marco d'Itri <md@linux.it>
systemd (U)
Marco Nenciarini <mnencia@debian.org>
resolvconf (U)
Mario Limonciello <mario.limonciello@dell.com>
fwupdate (U)
Mario Limonciello <Mario_Limonciello@dell.com>
dkms (U)
Martin Pitt <mpitt@debian.org>
casync (U)
libblockdev (U)
postgresql-common (U)
systemd (U)
udisks2 (U)
Mateusz Å?ukasik <mati75@linuxmint.pl>
spacefm
Mattia Rizzolo <mattia@debian.org>
cowdancer (U)
diffoscope (U)
maximilian attems <maks@debian.org>
initramfs-tools (U)
linux (U)
Mehdi Dogguy <mehdi@debian.org>
singularity-container (U)
Michael Banck <mbanck@debian.org>
sbuild (U)
Michael Biebl <biebl@debian.org>
fsarchiver
systemd (U)
udisks2 (U)
Michael Prokop <mika@debian.org>
fai (U)
grml-debootstrap (U)
initramfs-tools (U)
Michael Tokarev <mjt@tls.msk.ru>
autofs
qemu (U)
Michael Vogt <mvo@debian.org>
ansible (U)
Miguel Landaeta <miguel@miguel.cc>
euca2ools (U)
Miguel Landaeta <nomadium@debian.org>
cloud-init (U)
Mike Gabriel <sunweaver@debian.org>
debian-edu-config (U)
Nathan Scott <nathans@debian.org>
xfsprogs (U)
Neil Williams <codehelp@debian.org>
lava-dispatcher (U)
NeuroDebian Team <team@neuro.debian.net>
singularity-container
Nick Daly <Nick.M.Daly@gmail.com>
plinth (U)
Olivier Sallou <osallou@debian.org>
gbrowse (U)
OndÅ?ej Surý <ondrej@debian.org>
cyrus-imapd (U)
dnssec-trigger (U)
Patrick Matthäi <pmatthaei@debian.org>
glusterfs
Paul Tagliamonte <paultag@debian.org>
docker.io (U)
Peter Eisentraut <petere@debian.org>
postgresql-common (U)
Petter Reinholdtsen <pere@debian.org>
debian-edu-config (U)
dkms (U)
plinth (U)
Phillip Susi <psusi@ubuntu.com>
gparted
Pierre Chifflier <pollux@debian.org>
ocsinventory-agent
Piotr Krysiuk <piotras@gmail.com>
rsrce (U)
Piotr Ożarowski <piotr@debian.org>
plinth (U)
PKG OpenStack <openstack-devel@lists.alioth.debian.org>
manila
nova
openstack-debian-images
openstack-trove
puppet-module-swift
python-diskimage-builder
sahara
tempest
Python Applications Packaging Team <python-apps-team@lists.alioth.debian.org>
drobo-utils (U)
Raphaël Hertzog <hertzog@debian.org>
live-build (U)
Reiner Herrmann <reiner@reiner-h.de>
diffoscope (U)
Rene Mayrhofer <rene.mayrhofer@gibraltar.at>
havp (U)
Reproducible builds folks <reproducible-builds@lists.alioth.debian.org>
diffoscope
resolvconf maintainers <resolvconf-devel@lists.alioth.debian.org>
resolvconf
Richard Jones <rjones@redhat.com>
libguestfs (U)
Riku Voipio <riku.voipio@iki.fi>
qemu (U)
RPM packaging team <pkg-rpm-devel@lists.alioth.debian.org>
obs-build
RW Penney <rwpenney@users.sourceforge.net>
cryptmount
Salvatore Bonaccorso <carnil@debian.org>
linux (U)
Samuel Thibault <sthibault@debian.org>
edbrowse (U)
Scott Kitterman <scott@kitterman.com>
havp (U)
postfix (U)
Scott Leggett <scott@sl.id.au>
ruby-specinfra (U)
Sean Whitton <spwhitton@spwhitton.name>
propellor
Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
havp (U)
Senthil Kumaran S (stylesen) <stylesen@gmail.com>
lava-dispatcher (U)
Simon Quigley <tsimonq2@ubuntu.com>
note
Sjoerd Simons <sjoerd@debian.org>
systemd (U)
Stefan Potyra <sistpoty@ubuntu.com>
faumachine (U)
Steffen Moeller <moeller@debian.org>
python-cgcloud
Steve McIntyre <93sam@debian.org>
fwupdate (U)
vmdebootstrap (U)
Sunil Mohan Adapa <sunil@medhas.org>
plinth (U)
Sven Luther <luther@debian.org>
rsrce (U)
Thomas Goirand <zigo@debian.org>
cloud-init (U)
cloud-utils (U)
dtc-xen
manila (U)
nova (U)
openstack-debian-images (U)
openstack-trove (U)
puppet-module-swift (U)
python-diskimage-builder (U)
sahara (U)
tempest (U)
Thomas Hood <jdthood@gmail.com>
resolvconf (U)
Thomas Lange <lange@debian.org>
dracut
fai
Tiago Ilieve <tiago.myhro@gmail.com>
bootstrap-vz (U)
cloud-utils
Tianon Gravi <tianon@debian.org>
docker.io (U)
Tim Potter <tpot@hpe.com>
docker.io
Tzafrir Cohen <tzafrir@debian.org>
mock
plinth (U)
Ulrich Dangel <mru@spamt.net>
grml-debootstrap (U)
Ulrike Uhlig <ulrike@debian.org>
tails-installer (U)
Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
libblockdev
udisks2
Valentin Vidic <Valentin.Vidic@CARNet.hr>
resource-agents (U)
VMDebootstrap List <vmdebootstrap-devel@lists.alioth.debian.org>
vmdebootstrap
Volkmar Sieh <volkmar.sieh@informatik.uni-erlangen.de>
faumachine (U)
William Dauchy <wdauchy@gmail.com>
autofs (U)
Wolfgang Schweer <wschweer@arcor.de>
debian-edu-config (U)
Wolodja Wentland <debian@babilen5.org>
salt (U)
Wookey <wookey@debian.org>
sbuild (U)
XFS Development Team <linux-xfs@vger.kernel.org>
xfsprogs
Ximin Luo <infinity0@debian.org>
diffoscope (U)
Yaroslav Halchenko <debian@onerussian.com>
singularity-container (U)
Reply to: