Includes the following change:
* 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.
* 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.
Changes included in this set:
* Added strlcat() and strlcpy() from OpenBSD, always use them if the
system does not have them built in.
* Changed an array of PATH_MAX size allocated in the stack, to a dynamically
allocated buffer from heap. This should reduce memory usage a bit.
* Simplify code that implemented a homegrown realpath(3) implementation,
simply use realpath(3).
* If compiler supports -fstack-protector, build all code with
-D_FORTIFY_SOURCE=2 and --param ssp-buffer-size=1 so that all
buffers are protected.
* 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.
commit b2975842aba26df9b9885ff56b2ff182eda06152
Author: Juan RP <xtraeme@gmail.com>
Date: Thu Apr 29 18:23:15 2010 +0200
Remove some dead code found by the LLVM's clang static analyzer.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100429162412-gq0on6wybpoaazgg
commit 72e03f757660ed295f81315d871e51abe22df9dd
Author: Juan RP <xtraeme@gmail.com>
Date: Wed Apr 21 05:07:53 2010 +0200
Add a cast that fixes a warning in the new zlib code.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100421030905-ixl5tj2to573xnxz
* 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.
That means that from now, XBPS will be able to write compressed gzip
plist files for all metadata related work. This will vastly reduce
bandwidth required for fetching remote repo's pkg index file and
binary packages.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100420122238-zcb85rudt9p34e10
This helps to catch upgrade problems and simplifies some parts of the code.
Bumped XBPS_RELVER because xbps_remove_pkg() has been changed.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100128150850-gcs93su38t6moydn
if its hash doesn't match for the remove and purge targets respectively.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100125070948-841kw2r4knz2793e
xbps_fetch_cache_connection() if 0 is passed as argument.
xbps-bin: enable fetch cached connection when downloading binpkgs.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100124153156-4updprik11nwi7c1
- use printf to print commands rather than echo, which it may not have
support for escape sequences (-e).
- Remove DESTDIR from SBINDIR, MANDIR, LIBDIR and INCLUDEDIR so that
you can override it.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100124125958-8mscedj5ntf288jd
doxygen and graphviz are required. It's disabled by default, use
the BUILD_API_DOCS make(1) argument to enable it.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100123013719-pkk3a3823cx09v8l
- Don't write any archive entry to disk unless the package metadata
plist files are found.
- Always check for the package metadata plist files in the first 4
entries, if they aren't found stop the unpacking... invalid archive.
- Don't check for removing INSTALL/REMOVE scripts on each iteration when
extracting, just check it once before the loop.
- Add doxygen comments and related stuff.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100122225639-wameh8ls94bkm68h
once that 4 entries are checked for the plist file.
Processing 6 entries is too much, we can be sure that plist file will
always be in the first 4 entries.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100122225433-u440x01bf8io3vd3
Some changes were made to the API when making the documentation:
- A few exported functions are now hidden, because they were only used
internally in the library.
- A few exported symbols were renamed to document them better than
previously.
- Cosmetic changes all along the way, as well as some fixes here and there.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100121021019-onbsivlrhdb7t3ou
* A package failed to be upgraded properly if current pkg contained
INSTALL/REMOVE scripts, while the new one didn't have any of them.
Fixed this by always removing current scripts if they exist.
* Essential pkgs are never removed (they are replaced) so the pre remove
action target was never called, now it all works properly.
Bumped XBPS_RELVER because I consider these bugs so important.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100118184932-pdsb0djvf0swylm3
check that it wasn't added before.
This change fixes and endless loop while doing the following:
$ xbps-bin install libXext libX11
where libX11 is a dependency of libXext and was already queued.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100114125713-o9vxzayz1tnhlt96
https://blueprints.launchpad.net/xbps/+spec/install-pkg-by-pkgmatch
The implementation works as expected, it was easier that I thought.
Bump XBPS_RELVER because the API was changed slightly.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100114011431-xv5q6bgahm6v9dbq
joerg@netbsd libfetch-2.27:
The connection sharing didn't handle the case of active transfers
correctly and tried to close the connection in that case (PR 42607).
Correctly check if there is a transfer going on and just leave the
connection alone in that case.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20100111192421-5fddbsek3ayi9wm8
found after processing 6 entries from the archive.
This to detect non-valid XBPS binary packages.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20091207062422-fnwx9n0miq1nwadt
A new function has been created, xbps_remove_pkg_files() that accepts
a dictionary internalized from files.plist and a key to remove
links, dirs, files and conf_files.
As result of this, now when purging a package those directories that
were used in configuration files will also be removed if they are empty.
Bump XBPS_RELVER to 20091207.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20091207053006-egw65u6y1jcuraje
to not remove files in removal or upgrades.
Bump XBPS_RELVER to 20091202.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20091202053103-uby6hwu313pieafa
- Use an array of strings to store the pkgdeps.
- While adding a missing pkgdep, check if it's already in the queue and
new required version is greater, in that case replace with new one.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20091129021735-5dqfucofny8slks2
Now it looks like:
$ xbps-repo show xbps-devel
Fetching info from: /storage/xbps/packages
Filename: xbps-devel-20091128.i686.xbps (size: 69K)
SHA256: 2c54a61fbd128097692edc19a7c17bfb10d93b3f055b04171cd1e4d97cde79df
Compression type: xz
Package: xbps-devel
Installed size: 216K
Maintainer: Juan RP [xtraeme@gmail.com]
Architecture: i686
Version: 20091128
Description: The XBPS package system (development branch)
The XBPS package system. A new, fast, from scratch and simple
binary package manager. This packages includes code from a development
branch available from https://launchpad.net/xbps
$
--HG--
extra : convert_revision : xtraeme%40gmail.com-20091128051134-qzqqnwd76tcxgxb0
libxbps:
* Added xbps_set_cachedir() and xbps_get_cachedir(). By default it's
set to /var/cache/xbps if not specified and it's always relative
to the root directory.
* Move mkpath() code from sync_remote_pkgidc.c into its own file mkpath.c
to use it in another parts of the code.
* Added xbps_get_binpkg_local_path(), that returns the local path to
a binary package file, stored in cachedir or local repo.
* Remote pkg index files are now stored directly in metadir/repodir,
skipping the arch directory because binpkgs are now in cachedir.
xbps-bin:
* Added -c flag to set the cachedir.
* Check sha256 hashes in the download stage so that it can check
a downloaded binpkg immediately once is stored.
* If a binpkg doesn't match the hash it will be refetched.
Bump XBPS_RELVER to 20091128.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20091128013841-kkcvk07lsqdr26w8
libxbps:
- Moved repolist code to lib/repository_pool.c.
- Renamed xbps_{prepare,release}_repolist_data() to
xbps_repository_pool_{init,release} respectively.
- Moved regpkgdb dict code to lib/regpkgs_dictionary.c.
- Renamed xbps_{prepare,release}_regpkgdb_dict() to
xbps_regpkgs_dictionary_{init,release} respectively.
- Use a global reference count for repository_pool and regpkgs_dictionary,
this gives a substantial performance gain while looking for dependencies
in repository pool, among other things.
- Make xbps_find_pkg_* functions return errno and use it to detect
for spurious errors in code using them.
- Add code to detect when a dependency is already unpacked.
xbps-bin:
- Do not set pkg state to unpacked in the transaction, it's set already
while a package is unpacked.
- While installing or updating packages, it now knows when a dependency
is already unpacked and shows it as "unconfigured".
Bump XBPS_RELVER to 20091126.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20091126022250-uu8x0fa86l4scb5x
from an url into a new function, xbps_get_pkg_plist_dict_from_url.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20091125025258-dnq0lstx67xj6w8t
This function will fetch a requested plist file in a binary
package matching its 'pkgname' object by searching in repository pool.
This works in any kind of repository, local and remote. Some code
was Taken from NetBSD's pkg_install HEAD. Oh, and it's on-the-fly!
doesn't need to download the binpkg first!
--HG--
extra : convert_revision : xtraeme%40gmail.com-20091125020936-7uf2ncrf1692c5hz
As consequence of this, remove xbps_callback_array_iter_in_repolist().
Nowadays to iter over the repository pool we have a SIMPLEQ, this
allowed to simplify the code and remove some now unneeed stuff.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20091124104704-oyvrmb3tmd59w4e7
Improved xbps-repo sync/add and xbps-fetch to print informative
messages when a transfer was not necessary because local/remote size
and/or mtime matched.
--HG--
extra : convert_revision : xtraeme%40gmail.com-20091124050326-owez7140fdxwepuk
checked for any spurious error, this should make the core more safer :-)
--HG--
extra : convert_revision : xtraeme%40gmail.com-20091123094651-5prw0bkqmt3y8h23