xbps/NEWS
Juan RP 870ad18d58 xbps_init() now sets rootdir, cachedir and flags.
That means that the following functions were removed:
	- xbps_set_{cachedir,flags,rootdir}.
	- xbps_get_{cachedir,flags,rootdir}.

With this change fixed an obvious typo that made -c argument to not work,
and now the cache directory is an absolute path not relative to rootdir.
2011-02-21 17:42:47 +01:00

332 lines
14 KiB
Plaintext

xbps-0.8.0 (???):
* xbps-{bin,repo): -c (cachedir) argument now is an absolute path and
not relative to the root directory.
* Fixed finally when a package should replace an installed package, but
at the same time the package to be replaced also needs to be updated
in the transaction. A real example:
- sg3_utils-1.28 is currently installed.
- Installed package udisks-1.0.2_1 depends on sg3_utils-1.28.
- sg3_utils-1.28 has been splitted into libsgutils for 1.31,
and libsgutils-1.31 has "replaces=sg3_utils<1.31".
- udisks-1.0.2_2 depends on libsgutils-1.31.
So now the old sg3_utils-1.28 package will be marked in its transaction
object as "remove" and the new sg3_utils-1.31 package as "update".
Therefore both packages (sg3_utils old/new) will be in the transaction
but one will be removed and the other one updated.
* Fixed a bug that made all registered repositories to fail when the first
one couldn't be internalized in xbps_repository_pool_init().
* Added the concept of package properties in the API. At this moment
only one property is fully working, "virtual". When xbps-bin(8)
sets this property for a package, its virtual package list will be
set in the XBPS_REGPKGDB plist in a package dictionary and the matching
logic will always prefer its virtual packages over the real ones.
You can do wonderful things with this, like always using development
package versions, or simply customize what packages you want to
install rather than the default ones. As a real example, you can now
use the 'xbps-devel' package rather than the stable package version
'xbps' before installing the system and package dependencies will
still be resolved:
"$ xbps-bin set-prop virtual xbps-devel"
"$ xbps-bin install xbps-base-system"
Only packages that have the "provides" object are valid for the
"virtual" property.
* 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 reports a percentage while
unpacking package files if -v not set, otherwise it will list the
current extracted file with its size in bytes.
* 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.
xbps-0.7.3 (2011-01-16):
* Fixed a bug that made libxbps fail to detect properly configuration files.
This made all updates in configuration files to be lost.
* It is now possible to properly build against an external portable proplib
(with pkg-config support) and libfetch.
* Enabled a bunch of compiler warnings in the configure script (if supported
by the compiler), and made symbol visibility dependent of configure tests.
* Added --silent argument to the configure script, hiding compilation
details in the build process (disabled by default).
xbps-0.7.2 (2010-12-28):
* Fixed some memleaks in libxbps and its clients, found by valgrind.
xbps-0.7.1 (2010-12-23):
* xbps-dgraph: fixed small build error on x86 shown in buildbot tests.
* libxbps: xbps_repository_pool_init(): don't loop forever if repository
pkg-index.plist files cannot be internalized.
* libxbps: xbps_fetch_file(): set a 30 seconds timeout for transfers.
* xbps-repo(8): fixed the 'genindex' target for the API changes in 0.7.0.
* xbps-uhelper: fixed the 'unregister' target for the API changes in 0.7.0.
xbps-0.7.0 (2010-12-15):
* 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.
* Fixed a typo in the configure script that broke detection of strlcat(),
reported and patch provided by Min Sik Kim in issue 2.
* 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.