XBPS 0.42 is out

A new XBPS stable version has been released: 0.42. This is a major release that contains some new features and multiple bugfixes.

Release notes:

  • xbps-reconfigure(8): new option -i, --ignore to ignore packages while performing configuration of all packages with -a, --all. Fixes #67.

  • xbps-{install,query}: fix alignment in the column output mode when pkgname is shorter than 4 chars. Fixes #71.

  • xbps.d(5): new manual page detailing the configuration settings.

  • xbps-dgraph(8): added support to generate dependency graphs, repository mode, prints results to stdout, supports most of the options available in other utils, etc. This is now a first class utility.

  • xbps-{install,query}: added new option (-M, --memory-sync) to fetch and store remote repository data in memory. That means that synchronizing the repository archives with xbps-install -S is now completely optional. This also means that xbps-query(8) may be used by any user without the need to be the superuser to synchronize the repository archives.

  • xbps-{install,query}: added new option (-i, --ignore-conf-repos) to ignore repositories defined in configuration files (xbps.d). Only repos specified by the command line will be used (--repository).

  • Implemented issue #69 (No way to set globally a custom architecture) A new configuration keyword “architecture” has been added to override the native machine architecture (uname -m).

  • Fixed issue #68 "xbps_binpkg_arch() asserts if arch contains a dash".

  • xbps-query(8): added --cat=FILE mode to print FILE stored in a binary package to stdout. This works exactly as the --files mode: if the matching binary package is not available in the cachedir, xbps will establish a network connection to the target repository to get the contents of FILE on the fly.

  • Get rid of repodata index-files, that contained all pkg files of a repository in the archive. That file was so huge that increased the repository archive size by 8x. That means that xbps-query -Ro will now make N parallel connections to the remote server to inspect the binary packages remotely; if the binary package is in cachedir, no network connection to the remote server will be established. This reduces the size of the main x86_64 repository (4000 packages) to 700KB, compared to 4.5MB previously.

  • xbps-create(8): fixed issue #64xbps-create(8) incorrect installed-size with hardlinks”.

  • Added a new configuration keyword bestmatching, which expects true or false and disabled by default. If enabled the pkg with the greatest version available in all registered repositories will be choosen, rather than the first package matching the expression. This keyword can be set in a configuration file.

  • xbps-rindex(8): added -d/--debug option.

  • utils: the -C/--config option now expects a path to a directory storing configuration files; if first character is not '/' it will be treated as relative to rootdir.

  • <sysconfdir>/xbps/xbps.conf is not longer installed, in fact there are no files installed anymore to sysconfdir. The xbps.conf file with everything commented out is now installed to <sharedir>/xbps.d/xbps.conf just as example.

  • Replaced config/system {preserve,repo,virtualpkg}.d directories with a single xbps.d directory that may contain configuration files of all kinds: general options, repositories, virtual packages, and preserved files. By default set to <sysconfdir>/xbps.d and <sharedir>/xbps.d:

    • /usr/local/etc/xbps.d <- configuration directory
    • /usr/local/share/xbps.d <- system configuration directory

      Files bearing the same filename in the configuration directory override those available in the system configuration directory.

  • Virtual packages are now collected directly from pkgdb, that means that installed packages do not need to have a virtualpkg configuration file in the system virtualpkg.d directory.

  • xbps-{install,remove}: implemented a column/wide output mode as requested in #63. If the terminal has enough columns it will use this and falling back to the previous mode otherwise.

  • libxbps: replaces the internal redundant dependency sorting step that was made in xbps_transaction_prepare() with a simple implementation that fixes 2 bugs and makes xbps 2x faster to resolve dependencies.

    Packages that don't have `provides` obj but were declared as virtual packages, were not detected correctly and lead me to rewrite this code.
  • Fixed issue #62 (Dup replaced pkgs in transaction).

  • If removing a package and euid==0 do not check for file owner, being root means that all files can be removed properly. This fixes package removal when some files were not owned by root, rather by a system account.

  • Fixed 65 issues found by Coverity scan. Defect density is now below 0.30 per 1000 lines of code.

  • Use atomic builtins if supported by the compiler in our portableproplib copy to handle object reference counting. This should be cheaper than using a mutex.

  • The manpages are now fully compliant with mdoc; thanks to mandoc -Wall.

  • Added support to run the testsuite in place, without the need to perform installation; use make check to run it.

Please report issues at https://github.com/voidlinux/xbps/issues.