Notes on free softwares with ignore capabilites
- apkdiff :
How it works : apkdiff is used to check the reproduciblity of Signal app (https://github.com/WhisperSystems/Signal-Android/wiki/Reproducible-Builds)
What it ignores: apkfiff ignores three types of files from .apk packages
- CERT.SF - signature file
- CERT.RSA - the real signature file with certificate
- MANIFEST.MF - manifest file
How it ignores: apkdiff ignores files by default with no external option to ignore files. apkdiff contains static list of files to be ignored.
Interface : No interface (By default)
Applicability to diffoscope : If diffoscope wants to ignore complete files from package then creating separate list of files which needs to be ignored can be used like apkdiff does. If there's any option in diffoscope which deals with ignoring a complete file(by default ignoring certain files) can be done by the way apkdiff did.
- URL : https://github.com/openSUSE/build-compare
- How it works: pkg-diff is used for comparing two rpm packages.
- What it ignores:
- binary dump of TeX
- Metafont formats
- Files containing timestamps
- LibreOffice log file
- How it ignores: pkg-diff ignores stuff by default. It uses
sedto do that.
- Interface : No interface (By default)
- Applicability to diffoscope: No. Because it uses
sedwhich modifies files on runtime.
- URL: http://git.gag.com/?p=debian/tar;a=tree
- How it works: Tar stores and extracts files from a tape or disk archive. For more info please refer
- What it ignores: Tar has different options for ignoring stuff.
``Options for ignoring stuff (source: man tar):``
--exclude=PATTERN : exclude files, given as a PATTERN --exclude-backups : exclude backup and lock files --exclude-caches : exclude contents of directories containing CACHEDIR.TAG, except for the tag file itself --exclude-caches-all : exclude directories containing CACHEDIR.TAG --exclude-caches-under : exclude everything under directories containing CACHEDIR.TAG --exclude-tag=FILE : exclude contents of directories containing FILE, except for FILE itself --exclude-tag-all=FILE : exclude directories containing FILE --exclude-tag-under=FILE : exclude everything under directories containing FILE --exclude-vcs : exclude version control system directories
How it ignores: e.g. After invoking --exclude-vcs. It creates a list of temp files and vcs ignore files. It ignores the files present in list(or array). Sample implementation: http://git.gag.com/?p=debian/tar;a=blob;f=src/exclist.c;h=f6e88532789536ea0871055d92219e9d5bbc9e26;hb=HEAD#l302 Similarly implementation of othe options can be found in
Applicability to diffoscope: tar has good interfaces for dealing with different tasks. Diffoscope can take some inspiration from these options. In case of Diffoscope options could be written as:
--hide='*.debug' : For hiding(ignoring) debug symbols. --hide-timestamps='mtimes/gzip-metadata/latex' : For hiding(ignoring) different timestamps --hide-section='particular-section' : For hiding(ignoring) particular section of .buildinfo file.
Note: There could be many other possible combinations based on use cases.