Friday, May 27, 2011

XBPS 0.8.1 released

A new (minor) version has been released with the following changes:

  • xbps-bin(8)/xbps-repo(8): more meaningful messages when a package couldn't be found in the show, show-deps and show-files targets, rather than exiting silently with only the error return value.
  • Added three new objects for the package props.plist metadata file to specify homepage, license and build date.
  • Minor improvements to the generation of API documentation. 
Please visit http://code.google.com/p/xbps for more information.

Tuesday, May 24, 2011

XBPS 0.8.0 released

After 4 months of active development, a new major release of XBPS has been released: say hello to the 0.8.0 version. Here's the list of changes:

  • xbps-bin(8): added -A and -M options, for setting package install reason to automatic or manual. Obviously both cannot be used togeter.
  • xbps-{bin,repo}(8): -c (cachedir) argument now is an absolute path and   not relative to the root directory.
  • Fixed a bug that made all registered repositories to fail when the first one couldn't be internalized in xbps_repository_pool_init().
  •  Moved the "replaces" handling logic into the API. But instead of removing any package, the packages that should be replaced are added into the transaction dictionary and marked as "remove". The frontend is responsible to install, update, configure and remove all packages by using the properties set in the transaction dictionary.
  • xbps-dgraph: now parses the "provides" object in the package properties  metadata plist file for packages providing virtual packages.
  • xbps-bin(8): added -R option for the "remove" target, to recursively remove packages that were installed automatically by the package(s) that we want to remove, and no other package currently depends on. This is much like the remove and autoremove targets together, i.e "xbps-bin -yp remove foo && xbps-bin -yp autoremove".
  • xbps-bin(8): added -D option to only show the URLs to download the binary packages required by the "install", "update" and "autoupdate" targets.
  • xbps-bin(8): make the list target (without arguments) only show packages that are fully installed. Previously packages in unpacked state were also shown.
  • Added support for virtual packages. A virtual package is one that doesn't exist in the repository, but other packages can provide it. A new array in the package properties dictionary has been added to specify which virtual packages the package supports. As an example, the `rsyslog' package provides the virtual package `syslog-daemon-0'. Other packages can depend in `syslog-daemon>=0' and `rsyslog' will satisfy the dependency.
  • Merged the `progress_callback' branch that makes possible to specify a   function callback to update progress while unpacking binary packages  and while fetching files. xbps-bin(8) now lists current extract files with its size in bytes if -v flag is set.
  • Improved package dependency resolution in repositories by using a new function, xbps_repository_pool_find_pkg() that returns a package dictionary found in the first repository registered in the pool. It can also be used to find the newest version found in all registered repositories.
  • Improved package dependency sorting algorithm that uses less memory, it is 60% faster approximately and as bonus sorts all packages in the way  they should be (previously the sorting was a bit different for packages with no run-time dependencies).
  • Many structural changes in the API. Made some stuff private and changed some function arguments in the API, the ABI is not compatible anymore with previous versions... anyway you shouldn't be using libxbps just yet. The API documentation has been modified to stay in sync with reality.
And some more changes I'm probably missing. You can see the full list here:
http://code.google.com/p/xbps/wiki/ReleaseNotes

Enjoy and happy hacking!