xbps-0.7.0 (?) * xbps-repo(8): implemented the 'find-files' target to print which packages own a file, link, directory, etc. Analogue to the one implemented in xbps-bin(8). Works for local and remote repository, fetching info on-the-fly. * xbps-bin(8): added -F flag for the remove target. Unless it's set, packages that are dependencies of other installed packages won't be removed. This flag overrides this behaviour and forces the package removal. * xbps-{bin,repo}(8): indent uniformly all lines while listing packages in xbps-bin or while searching for packages in xbps-repo. * xbps-repo(8): while searching for packages also try to find strings in the short description object. * xbps-{bin,repo}(8): added -d arg to enable debugging output to stderr. * While updating packages, obsolete directories are also removed when necessary. This helped to remove some empty dirs for python 2.6 > 2.7 update, just to mention a real example. * Cleaned up the API. Still not finished and there's a long way to have this finished and ready for public consumption. * xbps-dgraph: new utility to generate graphviz' dot(1) graphs for package metadata properties, such as dependencies, reverse dependencies, etc. Extracts the info from installed package metadata plist files. * Performance improvements in libxbps and all utilities, by avoiding unnecessary access(2) and chdir(2) calls while executing the INSTALL/REMOVE scripts at pre/post (de)install time. * Fixed some memleaks on libxbps found while working on the xbps-dgraph utility. xbps-0.6.2 (2010-10-31): * libxbps: xbps_repository_unregister(): in remote repositories, also remove the pkg index file and its directory. * libxbps: xbps_get_pkg_index_plist(): fixed a memleak. * xbps-bin(8): modify the 'list' target to accept an optional argument to list packages in the specified state, so that you can list packages that need to be purged, configured and broken (will be used in the future). * xbps-bin(8): added a new target 'find-files' to find which installed package(s) own a file. Exact matches "/bin/mount" or patterns "/usr/lib/libb[ao]b\*" can be specified. * When updating a package and removing obsolete files, don't forget to remove those directories if they were empty. xbps-0.6.1 (2010-10-23): * When replacing a package that is going to be updated in the transaction do not remove it, just overwrite its files and continue. The updated package will find that old files didn't match the SHA256 hash and will skip them. This solves the issue of new package updates requiring new dependencies with files that were previously stored in the old version. For example gtk+-2.20 containing gdk-pixbuf, and gtk+-2.22 requiring gdk-pixbuf externally. xbps-0.6.0 (2010-06-03): * Synced libfetch code with NetBSD pkgsrc, updated to 2.31. * libxbps: improved xbps_get_file_hash() to mmap(2) rather than read(2) the file we have to process. With mmap'ed files the hash can be processed 5x faster than before, or even more in some cases. * libxbps: switch to OpenSSL SHA256 implementation and remove the one previously used. It's faster and OpenSSL is required for libfetch so there is not point in using it. * Added strlcpy() and strlcat() from OpenBSD. Use them if they weren't found by the configure script on the system. * Added a configure script that emulates GNU autoconf but simplified, to simplify customization for build options, flags, etc. xbps-0.5.2.2 (2010-05-18): * libxbps: do not forget to reset a variable to 0 when removing obsolete files that are unexistent or its hash didn't match. xbps-0.5.2.1 (2010-05-18): * Due to human error, last fix in 0.5.2 was completely wrong and the INSTALL/REMOVE scripts were simply empty so ENOENT was returned, clearly this is expected and shouldn't be ignored. xbps-0.5.2 (2010-05-18): * libxbps: while running INSTALL/REMOVE scripts, do not fail if a script returns ENOENT but the script exists; that means the script did not match the expected action on its switch statement and the fact can be simply ignored. * libxbps: while upgrading packages and searching for obsolete files, do not remove the files that did not match previous SHA256 hash. Also, only remove obsolete dangling symlinks. * xbps-repo(8): fixed the 'genindex' target to not return error if any package is already registered in the index. * xbps-repo(8): improved the 'search' target to also match substrings in package/version tuples. xbps-0.5.1 (2010-05-12): * Fixed build issues in RHEL5, Ubuntu and others distributions. * libxbps: changed the epoch component in version strings to the ':' character to be differentiated from '-' in pkgname, and '_' in revision. * xbps-bin(8): added a new target 'show-orphans' that list all package orphans currently installed. * Removed asciidoc build dependency, simply use the troff manpages. xbps-0.5.0 (2010-05-01): * xbps-repo(8): fixed the 'search' target to also match patterns against its description, and not only from the package/version tuple. * Cleaned up the code by using the LLVM's clang static analyzer, found two possible NULL pointer dereferences in error branches and dead code. * xbps-bin(8): added new flag '-p' for the 'remove' and 'autoremove' targets, to also purge the package(s) after successful removal. * xbps-repo(8): print a warning when registering a repository that has been already added previously. * Add proplib-0.4.1 source and use it in XBPS. This is to avoid an external dependency, so that we depend on the features of the internal library. This also means that proplib is not required anymore. * Added support to read/write gzip compressed plists by default, thanks to proplib-0.4 that gained new functionality. xbps-0.4.1 (2010-02-28): * xbps-bin(8): fixed the install target to work with package names containing multiple '-', thus resulting in incorrect package name. [ https://bugs.launchpad.net/bugs/528212 ] * xbps-bin(8): fixed printing of incorrect message for packages containing the 'preserve' object in its props dictionary. [ https://bugs.launchpad.net/xbps/bugs/528216 ] xbps-0.4 (2010-02-01): * libxbps, xbps-bin(8), xbps-repo(8): redirect all warning and error messages to stderr. * libxbps: changes xbps_yesno() and xbps_noyes() to only accept "yes" or "no" (case insensitive) answers rather than 'y' or 'n', to avoid mistaken answers. * xbps-repo(8): added support to the 'search' target to find exact matches, i.e 'xbps-repo search bash'. * xbps-bin(8) added support to the 'install', 'remove' and 'update' targets to accept any arbitrary number of package names, i.e "xbps-bin install foo blah baz". See https://blueprints.launchpad.net/xbps/+spec/arbitrary-pkgname-args * xbps-bin(8): added support to the 'install' and 'update' targets to accept package patterns, i.e "xbps-bin install 'foo<=3.0'. See https://blueprints.launchpad.net/xbps/+spec/install-pkg-by-pkgmatch * libxbps: fixed some bugs while upgrading essential packages when new package didn't have an INSTALL or REMOVE script and old package had them. * libxbps: fixed some memleaks found by cppcheck and valgrind. * Makefiles reworked to support parallel builds. * libxbps: many exported functions to the API are now internal and not exported, because they were only used internally. The API is still not finished and may be changed without notice. * libxbps: be more strict finding required metadata plist files in binary packages. Now the code checks for the two required plist files to be at index <= 4 and doesn't write any entry to storage until they aren't found. * Added doxygen documentation for the API, enabled with BUILD_API_DOCS. * libxbps: synced libfetch code with NetBSD's pkgsrc, updated to 2.30. * xbps-bin(8): when downloading binary packages, it now sets default libfetch cache connection limits, thus reusing connections to the same host. * xbps-uhelper: the 'fetch' target now accepts an arbitrary number of arguments, and sets default libfetch cache connection limits. * xbps-bin(8): enable -f option for the 'purge' and 'remove' targets. If set, files will be removed even if its hash doesn't match for the 'remove' target, and configuration files for the 'purge' target. * libxbps: if updating a package, always overwrite files while unpacking; compare old and new files to remove obsoletes if necessary. This makes the "essential" object in package dictionary unnecessary, because all packages are treated as they were essential.