github sahib/rmlint v2.11.0
2.11.0 Evolving Echidna

2 hours ago

Fixed

  • Do not --backup-rename special output paths like /dev/null (see issue #763)
  • Fix json UTF-encoding issues (see issues #463 and #464)
  • Fix rmlint --gui ignoring manual tagging of originals (see issue #385)
  • Fix various bugs in --replay mode (see issue #383)
  • Fix bug if --treemerge used in combination with --algorithm=SHA1
  • Fix broken rmlint.py script after adding of part_of_directory types
  • Don't disable fiemap when gettext is disabled
  • Various fixes aimed at improving mac osx compatibility
  • Avoid generating rmlint.sh or other output files for rmlint --dedupe or ``rmlint --is-reflink`
  • Fix possible compile problems scons' default CC flags are non-functional
  • Fix GUI failing to start with pygobject >= 3.56
  • Make SSE4.2 runtime dispatch works on Clang builds.
  • FreeBSD: rmlint.sh's RMLINT_BINARY= entry.
  • Fix --honour-dir-layout/-j when filenames and content are the sames, just not
    at the same place.
  • Add a protection against -D XOR cancellation

Added

  • Implement --hash-uniques option to generate full checksums of unique files too.
  • Implement --hash-unmatched option, similar to --hash-uniques but only for size twins.
  • Implement --rank-by f option to rank originals by directory full path
  • Can now atomically clone from original to its hardlink via rmlint --dedupe
  • Option -c json:traversed to include list of fully-traversed dirs in json output
  • Option --ignore-bad-paths to not abort run if one or more bad paths passed
  • Exit code 12 for rmlint --is-reflink: inline extents.
  • FreeBSD: support for xattr checksum cache (#800).
  • BLAKE3 and its 512-bit extension
  • xxHash3-128 digest: still ultra-fast with less collision risks than the 64-bit variant.
  • ,d flag to --size to skip directories by st_size.
  • Tests: new markers for tests with special needs (reflink, xattr, manpage).
  • scons --show-config shows features and build in one run.
  • Build target test understands a new SCons variable: PYTEST_ARGS.
  • For packagers: build targets install-cli and install-gui, handy for split-packaging.
    Note that the GUI still depends on the CLI.
  • For packagers: environement variable SOURCE_DATE_EPOCH is honoured.
  • For packagers: environement variables PYTHONHASHSEED, PYTHONPATH,
    and DEB_PYTHON_INSTALL_LAYOUT are honoured for the GUI.
  • On Debian, without PREFIX= and DEB_PYTHON_INSTALL_LAYOUT,
    scons install-gui installs to /usr/local/lib/python3.YY/dist-packages.
  • CFLAGS and LDFLAGS from the environment are now appending to our flags,
    so that they could override ours.
  • Build no longer strip at link time unless explicitly asked with STRIP=1 (or =yes, =true).
  • Japanese translation

Changed

  • Option --dedupe option parsing changed. See rmlint --dedupe -h for more.
    Previously:
    rmlint --dedupe [--dedupe-xattr] [--dedupe-readonly] [-v] [-V] <src> <dest>
    Now:
    rmlint --dedupe [--xattr] [--readonly] [--followlinks] [--inline-extents] [-v] [-V] <src> <dest>
  • Made json-glib a hard dependency
  • Improved progress reporting ETA algorithm when large number of small files remaining to scan
  • Small files (<4k) are now generally ignored for reflinking / cloning options since They
    are typically stored as inline extents
  • container: provide images for building, running and testing
  • short option -U now refers to --hash-unmatched instead of --write-unfinished.
  • Treat paths beyond PATH_MAX as a hard error instead of truncating them
  • -g --progress and -G --no-progress do not clear outputs anymore (#582).
  • rmlint.sh sets -eu by default (#469).
  • The generated rmlint.py minimum supported Python is now 3.9
  • GUI: the minimum supported Python version is now 3.12
  • GUI: the minimum supported Gtk version is now 3.22
  • GUI: remove hard Rsvg dependency.
  • The minimum supported Glib version is now 2.74
  • The default installation prefix is now /usr/local.
  • The build system supports PREFIX=, DESTDIR= and LIBDIR= variables
    instead of the old --prefix, --actualprefix and --libdir options.
    Note that DESTDIR= is not equivalent to --actualprefix.
  • Shredder's GSettings schema is now io.github.sahib.rmlint.Shredder
    instead of org.gnome.Shredder — Shredder is not a GNOME project. The
    application ID and the GResource prefix changed as well accordingly.
    Shredder will therefore starts from its defaults, but the old values can be
    read using: dconf dump /org/gnome/Shredder/.

Removed

  • --dedupe-xattr. Use --dedupe --xattr
  • --dedupe-readonly. Use --dedupe --readonly
  • Build target config. Use scons --show-config -n.
  • Dropped support for Python 2.

Don't miss a new rmlint release

NewReleases is sending notifications on new releases.