xbps/NEWS
2019-06-17 20:32:20 +02:00

2532 lines
104 KiB
Plaintext

xbps-0.54 (???):
* xbps now auto-updates reverse dependencies of target pkgs, while
installing or updating any of them, without the need to perform a
system update (xbps-install -u). [xtraeme]
* xbps now auto-updates itself when there's a new version available
in repos while installing or updating any pkg, as well as
its reverse dependencies. [xtraeme]
* xbps now supports multiple compression formats for repodata
and binary packages, including: gzip, bzip2, lz4, xz and zstd. [xtraeme]
* xbps-rindex(1): the default compression format for repository data has
been switched to ztd (previously zlib). [xtraeme]
* xbps-create(1): new `--compression` formats: lz4 and zstd, defaults to xz. [xtraeme]
* xbps-rindex(1): added `--compression` option, to mimic xbps-create(1). [xtraeme]
* xbps-query(1): `--fulldeptree [-R] -x` has been fixed and improved vastly,
50x faster in the worst scenario. This fixes the infamous `kde5` issue. [xtraeme]
* xbps-query(1): `[-R] -X` (revdeps mode) has been fixed to fail
gracefully if a dependency cannot be resolved. [xtraeme]
* xbps-query(1): `[-R] -X` (revdeps mode) is now way faster.
50x faster in the worst scenario. [xtraeme]
* xbps-remove(1): `-R` (recursive mode) is now way faster. [xtraeme]
* xbps-remove(1): `-O` (orphans mode) is now way faster. [xtraeme]
* xbps-fetch(1): new utility replacing "xbps-uhelper fetch". [xtraeme]
* xbps-digest(1): new utility replacing "xbps-uhelper digest". [xtraeme]
* xbps-alternatives(1): multiple improvements, all known bugs were fixed. [xtraeme]
* Sync with portableproplib-0.6.8. [xtraeme]
* Fixed building with alternative C compilers: pcc and tcc. [xtraeme]
* configure: added `enable-rpath` to set rpath in executables to `$ORIGIN/../lib`,
which makes xbps relocatable. [xtraeme]
* libxbps/fetch: Add happy eyeballs (RFC6555/RFC8305).
xbps now to connects to ipv6 and ipv4 addresses in a short interval and use the
first established connection.
* xbps now has a new configuration option `ignorepkg`, which allows to ignore
specified packages from being installed as dependency. [duncaen]
* xbps-pkgdb(1): new check for alternative symlinks. [duncaen]
* xbps now doesn't delete symlinks a user created in place of files which
are marked as config files.It will always extracts the configuration file
with the `.new-$pkgver` suffix instead. [duncaen]
* xbps-checkvers(1): new `--manual` flag to only check specified templates.
* xbps-checkvers(1): new `--format` flag to change the output format.
xbps-0.53 (2018-07-30):
* xbps-rindex(1): fix possible stagedata deadlock. (@Gottox)
* xbps-create(1): Allow file paths longer than 128 characters. (@Gottox)
* libxbps: share workload more efficient between threads and avoid idling
threads. (@Gottox)
* xbps-rindex(1): By default xbps-rindex will not check hashes while cleaning.
To enable the old behavior the user can supply the --hashcheck flag.
(@Gottox)
xbps-0.52 (2018-04-30):
* xbps-checkvers(1): avoid infinite loops while checking revers by @ebfe #250
* libxbps: refuse to unpack absolute paths by @ebfe #247
* libxbps: verify that package version in repodata and the package metadata
matches by @ebfe #246
* xbps-rindex(1): better support for large files by @ebfe #245
* xbps-uunshare(1), xbps-uchroot(1): support relative chroot paths by
@Duncaen #207
* libxbps: Default umask for internal plists by @Duncaen #234
* Fixes for GCC 7 by @AgustinCB #254
* Fixed some random memleaks by @duncaen #206
* xbps-query(1): added --list-repolock-pkgs for consistency with other
modes #202
* libfetch: send http proxy authorization header before a secure
connection to the target is initialized. fixed by Enno Boland
reported by pulux in #185
* libxbps: avoid mmap in cases where the mmaped file can fill up the address
space on 32bit causing out of memory errors. Patches provided by Enno
Boland in #183, reported by Christian Neukirchen in #182. See
https://github.com/voidlinux/xbps/pull/183 and
https://github.com/voidlinux/xbps/pull/182
* xbps-create(1): accept -c/--changelog to set the changelog property of the
package
* xbps-query(1): fix segfault in -Ro with HTTPS repositories.
Fixes #167. See https://github.com/voidlinux/xbps/issues/167
* xbps-uhelper: the 'arch' target now supports the XBPS_ARCH
and XBPS_TARGET_ARCH environmental variables to override the
resulting architecture.
* portableproplib: merged two fixes from NetBSD CVS HEAD.
* xbps-create(1): this now creates reproducible pkgs when the file
contents do not change. Implemented by Enno Boland (@Gottox).
* xbps.d(5): the 'virtualpkg' keyword can now be used to map any pkg
to another, even if there's an existing real package. Example:
virtualpkg=wifi-firmware:base-system
Any request to the `wifi-firmware` pkg will be resolved to the
`base-system` pkg.
* libxbps: fixed some missing or incorrect printf format arguments
found by using __attribute__((format,printf). Patch provided by
Michael Gehring in #148. See https://github.com/voidlinux/xbps/issues/148
* libxbps: ignore updates for packages that have held dependencies.
Fixes #143. See https://github.com/voidlinux/xbps/issues/143
* xbps-install(1): in dry-run mode, do not stop after processing a package
that is already up-to-date. Fixes #145.
See https://github.com/voidlinux/xbps/issues/145
* libxbps: package INSTALL/REMOVE scripts do not need to be executables
anymore because they are executed with "/bin/sh" directly. That means
"/tmp" can be mounted as "noexec". Fixed #149 correctly.
See https://github.com/voidlinux/xbps/issues/149
* xbps-query(1): fix a bug where the output of -o became mixed up
when running on multiple cores.
* xbps-rindex: changes introducing inconsistent shlib dependencies will be
moved to a stage area and moved to the main repo once all inconsistencies
are resolved. Implemented by Enno Boland (@Gottox).
* libxbps: if a local repository is opened also include the stage area.
xbps-0.51 (2015-12-12):
* zsh completion: added -U/--unpack-only support for xbps-install(1).
* libxbps: initialize locale to be able to unpack UTF-8 encoded
packages files correctly with the musl C library.
* alternatives: preserve current order while updating packages.
* alternatives: always create the directory where the symlink is stored,
in case this does not exist yet.
* libxbps: another bugfix for conflicts: do not take into account packages
that are on hold mode.
xbps-0.50 (2015-11-10):
* libxbps: another bugfix for conflicts; do not take into account conflicts
in installed pkgs when the same pkg is in the transaction.
* xbps-alternatives(1): symlinks are now always created relative to the
rootdir of the target file. Implemented by Enno Boland (@Gottox).
* libxbps: fixed a bug in package conflicts: ignore conflicts for packages
that are going to be removed.
* xbps-alternatives(1): dangling symlinks are now supported, because the
target directory is always created.
* Updated zsh completions, by Steve Prybylski.
* xbps-checkvers(1): Joey Gouly fixed bug #120
(https://github.com/voidlinux/xbps/issues/120).
* libxbps: when configuring all packages ignore internal xbps objects of pkgdb.
Fixes an assertion with `xbps-reconfigure -a`.
* alternatives: really make relative symlinks this time.
xbps-0.49 (2015-10-31):
* alternatives: relative symlinks are now supported. Contributed
by Joey Guly in #126 (https://github.com/voidlinux/xbps/issues/126).
* xbps-alternatives(1): -g <grp> -l now works. To only print all alternatives
associated with this group.
* xbps-remove(1): this now will print the messages from alternatives.
* alternatives: do not register duplicate alternative groups. Happened when
reinstalling a package with alternatives.
xbps-0.48 (2015-10-30):
* xbps-alternatives(1): new utility to list or set alternatives provided by
packages. This effectively implements a functional alternatives framework
to switch easily a default provider via symbolic links.
* xbps-{install,reconfigure,remove}(1): do not log to console when the
syslog option (xbps.d(5)) is enabled. Messages are send to stderr/stdout,
so that logging to the console duplicates them. Close #123
https://github.com/voidlinux/xbps/issues/123
* xbps-fbulk(1): now comes with a manual page for the section 1.
* libxbps: implemented reverse conflicts. That means that just a single pkg
needs to set conflicts to be effective, rather than all involved pkgs.
* libxbps: with -M (--memory-sync opt of xbps-{install,query}) only process
remote repositories, not local ones.
* libfetch: merge some features from FreeBSD:
- Supports HTTP/1.1 308 redirect.
- SSLv2 HTTPS connections are forbidden by default.
- SSL/TLS HTTPS client certificate validation.
- Fixes for user/password encoding, misc.
Client certificate validation uses the default CA path (/etc/ssl/certs)
and some environment variables override its behaviour:
- SSL_CA_CERT_FILE: path to the CA file.
- SSL_CA_CERT_PATH: path to the CA path (defaults to /etc/ssl/certs)
- SSL_NO_VERIFY_PEER: disable certificate verification.
- SSL_NO_VERIFY_HOSTNAME: disable certificate hostname verification.
* lixbps: use a sane umask if the pkgdb file needs to created for the first
time. Thanks to Wolfgang Draxinger (https://github.com/voidlinux/xbps/pull/108).
* xbps-install(1): -n/--dry-run mode now also prints "installed_size" and
"filename-size" objects as 5th and 6th argument, respectively.
This implements #109 (https://github.com/voidlinux/xbps/issues/109).
* libxbps: fixed another issue when replacing an existing pkg with a virtual
pkg, and there's an update for the original pkg in the transaction.
Fixes #116 (https://github.com/voidlinux/xbps/issues/116).
* libxbps: the rpool functions now set errno to ENOENT when the target
pkg cannot be found in registered repos.
* libxbps: fix a bug where broken reverse dependencies would be detected
before detecting packages that need to be replaced in transaction.
* xbps-query(1): fail if unused arguments are supplied.
* libxbps: relative cachedir set via xbps.d(5) now work correctly.
Fixes #117 (https://github.com/voidlinux/xbps/issues/117)
* xbps-create(1): --compression now accepts "none" to not use any
compression format.
* xbps-create(1): it is now able to generate identical packages when its
content does not differ. This is the first part required to the
"100% reproducible builds" goal.
* xbps-create(1): do not add a build-date property to packages.
* xbps-rindex(1): use mtime of file instead of the build-date field in the
package to set build-date in the repo index.
* libxbps: when using verbose mode (-v) also print pkgs that are being
added to the transaction, this way we can know what pkg(s) are blocking
a transaction when there are unresolved (reverse)dependencies.
* libxbps: improved messages when reverse dependencies in a transaction
are not satistfied. Close #113 (https://github.com/voidlinux/xbps/issues/113).
After
-----
$ xbps-install -un
re2-2015.07.01_1 (update) breaks installed pkg `chromium-44.0.2403.155_1'
Transaction aborted due to unresolved dependencies.
$
Before
------
$ xbps-install -un
chromium-44.0.2403.155_1 broken, needs `re2-2015.07.01_1'
Transaction aborted due to unresolved dependencies.
$
* Multiple minor issues found by Coverity scan were fixed.
* xbps-checkvers(1): fixed an endless loop while processing templates containing
extra alphanumeric characters in the `reverts' object. Added a new testcase
to verify its correctness.
xbps-0.47 (2015-07-18):
* When executing pkg configuration, override the umask with sane defaults.
Otherwise files might be created with undesired permissions.
Fixes #106 (https://github.com/voidlinux/xbps/issues/106)
* libxbps: when resuming a file transfer (.part file exists), check if the
requested offset matches the remote file size, and if that's true,
just rename the file to finish it. The HTTP server might return a 413
return code to tell us that range is not satisfiable.
xbps-0.46 (2015-06-24):
* xbps-*: all utilities are now using getopt_long() rather than getopt()
to avoid the differences with glibc and musl when handling arguments.
Thanks to Chris M. Branon for #103.
* xbps_transaction_prepare(): do not release the transaction dictionary
if it returns ENOSPC, we need it to have access to this data to print
required/free space. Fixes #101 ((https://github.com/voidlinux/xbps/issues/101)
* xbps-uchroot(1): now handles SIG{INT,TERM,QUIT} signals to clean up the
temporary masterdir if `-t` is set.
* /usr/sbin is now a symlink in void, don't consider it as obsolete and never
remove it even if it was detected as obsolete.
* xbps-rindex(1): use `-s, --sign` to initialize the repository archive
with the required metadata to allow signed packages. Added `-S, --sign-pkg`
to sign a specific package archive. This allows to sign a specific package,
rather than all packages available in that repository.
* If the repository write lock is already taken, sleep for 1 second, rather
than looping endlessly without any timing; this consumed too much CPU time
gratuitously.
* If verifying a pkg signature fails for some reason, i.e: pkg archive is incomplete,
signature file is incomplete, whatever, just remove both files. Let's assume
next time the files are downloaded they will be valid.
xbps-0.45 (2015-06-03):
* xbps-install(1): added -U --unpack-only option, to only unpack packages
in the transaction, skips the configuration phase.
* configure: added `--enable-fulldebug` option to enable extra/expensive
debug output.
* libxbps: fixed a dangling pointer when unpacking configuration files that
are renamed (because they existed), if the unpack callback function is set.
* proplib: extra checks when internalizing plists to avoid NULL pointer
dereferences with broken files.
* Move manual pages of all utilities to the section 1 (user commands).
The xbps utilities can be used by any user so that there's no point
in having them in the section 8 (administraction and privileged commands).
* configure: --sbindir -> --bindir and executables are installed into
<prefix>/bin not <prefix>/sbin anymore.
* xbps-install(1): if there's not enough sufficient free space on rootdir,
print the required size by the transaction and free space.
* libxbps: if a pkg signature file cannot be verified, don't continue processing
other files, stop and return error immediately.
* xbps-remove(1): fixed regression while removing recursively packages, don't remove
all package orphans, this task belongs to -o not -R.
This closes #95 (xbps-remove -R pkg lists/removes orphans):
https://github.com/voidlinux/xbps/issues/95
* xbps-uunshare(1): replaced -D, -H and -S with -b src:dest. This bind mounts
src into dir/dest and allows unlimited mounts.
* xbps-uchroot(1): replaced -D, -H and -S with -b src:dest. This bind mounts
src into dir/dest and allows unlimited mounts.
* configure: added --dbdir to customize path to pkgdb.
* xbps-uchroot(1): added -o option to pass arguments to the tmpfs mount,
as is. See mount(1). Useful to specify a size for the temporary tmpfs
with overlayfs (-O).
* xbps-uchroot(1): added -t option to mount a tmpfs as temporary directory
for overlayfs (-O).
* libxbps: file descriptors are now opened with O_CLOEXEC, to avoid warnings
of leaked file descriptors while running package install/remove scripts.
* xbps-query(1): do not truncate output if stdout is not a tty.
* libfetch: added support for keep-alive connections even if the HTTP server returns
304 (Not Modified). This is a noticable performance improvement for `xbps-install -S`.
* xbps now autoupdates itself when there's a package update.
* xbps-uchroot(1): added -O option to use overlayfs to mount CHROOTDIR in
a temporary directory stored on tmpfs. This needs linux >= 3.18.
* xbps-rindex(1): fixed concurrency issues with -a and -c modes; use a simple
file lock to avoid inconsistent results in generated repodata.
xbps-0.44.1 (2015-03-21):
* libxbps: fixed xbps_get_pkg_fulldeptree() when a pkg depends on itself via
virtual packages. Reported by Duncan Overbrook.
* portableproplib: fixed a regression introduced in 0.44 resulting in EBADF
while internalizing plists.
* xbps-uunshare(1): does not fork and run cmd in the child process anymore,
replaces the execution environment with cmd instead.
* xbps-uunshare(1): do not fail if we cannot disable setgroups; some kernels
might not support it. Found by @cheneukirchen on 3.16.
* xbps-reconfigure(1): added -i/--ignore to usage(), by Christian Neukirchen.
* Updated zsh completions, by Christian Neukirchen.
* xbps-checkvers(1): fixed regression introduced in 0.44 adding packages
manually to the list as arguments.
xbps-0.44 (2015-03-06):
* xbps-uunshare(1): new utility analogue to xbps-uchroot(1), but uses
user namespaces (see user_namespaces(7)) to avoid the need of elevated
privileges.
* xbps-rindex(1): fix -s short option; was omitted in the short options list.
* xbps-pkgdb(1): added a new mode to set in installed packages: "repolock".
If that mode is set with `-m repo(un)lock`, a package will only be updated
if there's an update in the same repository that was used for installing.
This implements #77 (https://github.com/voidlinux/xbps/issues/77)
* libxbps: properly detect when a file has been moved between packages:
if the mtime stored in the pkg metadata does not match the mtime
of the same file stored on disk, don't detect this as an obsolete file.
* xbps-pkgdb(1): this now exits with an error if any test has failed.
* libxbps: while unpacking pkg files that were not modified (sha256 hash matched),
do not forget to also update the file timestamps on disk, to match
what the binary package has stored in the metadata.
* xbps-pkgdb(1): this now checks the modification time of pkg files
(iff the pkg metadata has that information).
* xbps-create(1): modification time of regular files and links is now stored
in the package files metadata, will be used in a future version.
* libxbps: file timestamps stored in binary packages are now restored while
unpacking as regular user.
* xbps-pkgdb(1): this now uses the code from libxbps to check the target file
of symlinks. This fixes some false positives with symlinks.
* xbps-create(1): properly detect target of relative symlinks in some cases.
* libxbps: make sure that symlinks with relative target are detected and removed
properly. Fix #78: https://github.com/voidlinux/xbps/issues/78
* xbps-checkvers(1): this now does not segfault anymore when the source package
does not set required variables (pkgname/version/revision). Added new test
cases to verify its correctness.
* libxbps: globally check for unresolved reverse dependencies before accepting
the transaction. This catches more cases of broken packages due to incompatible
upgrades or unwanted removals. This also implements #46.
https://github.com/voidlinux/xbps/issues/46
* xbps-query(1): in the ownedby mode, do not follow symbolic links and if the
matching file is a symlink print its target file too:
$ xbps-query -o `which whatis`
mdocml-1.13.2_5: /usr/bin/whatis -> /usr/bin/mandoc (link)
* xbps-install(1): add additional actions to the column output: "downgrade"
and "reinstall", as well as current installed version and new version.
Implement https://github.com/voidlinux/xbps/issues/72
* libxbps: add packages on hold mode to the transaction, but just ignore them.
This way those are shown in the xbps-install(1) output and the user really
knows that there's a pending update that is not being applied.
Idea by @chneukirchen.
* libxbps: make sure to remove the pkg metadata file if a pkg upgrade does not
own any file and a dependency replaces it due to moving files between them.
Added two new test cases to verify its correctness.
* xbps-query(1): --regex option now matches EREs in case insensitive mode.
* libxbps: globally check for unresolved shared libraries before accepting
a transaction to make sure there's no broken packages.
* libxbps: abort package unpacking as soon as a file failed
to be written and return a meaningful error; close #74
https://github.com/voidlinux/xbps/issues/74
* Change the xbps utils to just check for the first character when it
asks for confirmation, rather than "yes" or "no". This implements issue #73.
https://github.com/voidlinux/xbps/issues/73
* libxbps: use a sane umask(2) while unpacking package files from
binary packages (see https://github.com/voidlinux/void-packages/issues/835)
* xbps-dgraph(1): the -m/--metadata option (default mode) is now properly
accepted. Regression introduced in 0.42.
* xbps-{install,query}: the --repository argument now works with relative
paths for local repositories. The relative path is always converted to
absolute.
* libxbps: the provides obj (array of strings) now fully expects exact
pkgver strings, such as `foo-1.0_1`. Incomplete components such as
`pkgname` or `pkgname-9` are not accepted anymore.
* libxbps: detection of orphaned pkgs is now 66% faster (and even more in some cases).
This improves the performance of `xbps-remove -R` (recursively remove a pkg
and its dependencies) and `xbps-remove -o` (remove orphaned pkgs) marginally.
* xbps-query(1): only compile the ERE (Extended Regular Expression) once in
the ownedby and search modes. A performance improvement suggested by Christian Neukirchen.
* libxbps: performance improvement for xbps_repo_get_pkg_revdeps(): when finding
the matching pkg, search for it in the current repository, not in the repository
pool.
xbps-0.43.1 (2015-01-05):
* Fixed a regression in virtual packages defined via xbps.d(5) introduced in 0.43.
xbps-0.43 (2014-12-31):
* pcc >= 1.1.0 is now a supported compiler.
* xbps.d(5): the "virtualpkg" keyword now accepts pkgnames in the first component,
to match any virtual package version. Example:
`virtualpkg=foo:bar`
would match any version of the virtual package `foo' to be resolved as `bar'.
* libxbps: when resolving virtual packages in repositories, make sure to initialize
pkgdb to match any virtualpkg declared there. Regression introduced in 0.42.
* configure: build with -fstack-protector-strong if supported by the compiler,
and fallback to -fstack-protector otherwise.
* xbps-pkgdb(1): the `packaged-with` string obj is removed from pkgdb.
Since 0.42 that object is unnecessary and is being obsoleted.
* libfetch: fix races in the cache connection code.
xbps-0.42 (2014-12-22):
* xbps-reconfigure(1): new option -i, --ignore to ignore packages
while performing configuration of all packages with -a, --all.
Fix #67 (https://github.com/voidlinux/xbps/issues/67)
* xbps-{install,query}: fix alignment in the column output mode
when pkgname is shorter than 4 chars. Fix #71 (https://github.com/voidlinux/xbps/issues/71)
* xbps.d(5): new manual page detailing the configuration settings.
* xbps-dgraph(1): 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(1)` 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"
https://github.com/voidlinux/xbps/issues/68
* xbps-query(1): 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 incresed 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(1): fixed issue #64 "xbps-create(1) incorrect installed-size with hardlinks".
https://github.com/voidlinux/xbps/issues/64
* 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(1): 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 (https://github.com/voidlinux/xbps/issues/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); see
https://github.com/voidlinux/xbps/issues/62
* 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.
xbps-0.41 (2014-09-29):
* libxbps: another bugfix while checking required shlibs in
reverse dependencies. Written another test case to verify its
correctness.
* libxbps: rather than checking if user has write permission on
package files for removal, check if the files are owned by the
same user ID. This fixes a new issue where files with only the read
bit set cannot be removed. Added a new test case to verify its
correctness.
* xbps-create(1): xz compressed packages now use default compression
level (-6) rather than max level (-9); max compression level uses
too much memory and it's much slower; by Christian Neukirchen.
* Improvements for xbps bash completions, by Eivind Uggedal.
* A performance improvement for xbps_file_hash(), by Enno Boland.
* Added reverts field to package definitions. If defined, a package will
replace all versions specified in this field even if the installed version is
newer. This is helpful when a broken package is released. The maintainer can
downgrade this package and define a reverts field to the broken version. On
the next update xbps-install will automatically replace the broken release by
the new downgraded release.
* Replace xbps-packages directory by void-packages in xbps-checkvers(1),
xbps-uchroot(1) and others, by Enno Boland.
xbps-0.40 (2014-09-18):
* xbps-install(1): handle xbps_transaction_prepare() returning ENOSPC, to
abort a transaction when there's insufficient disk space on rootdir.
* xbps-query(1): -S/--show mode no longer prints ANSI escape codes if stdout
is not a tty; suggested by @chneukirchen.
* Reduced considerably memory requirement when checking SHA256 hashes on
files. Previous way of allocating heap memory as big as the file being
processed wasn't a great idea.
* xbps-{install,remove}: the post-install/pre-remove messages are now
printed with some guards, i.e:
"=================================================================="
" msg "
"=================================================================="
Without the need to add them manually to the {INSTALL,REMOVE}.msg files in
binary packages.
* Fixed a heap overflow when printing post-install/pre-remove messages.
Noticed by Gottox.
* Updated zsh completion with more properties for xbps-query(1). Contributed
by Christian Neukirchen.
* Updated bash completion with more properties for xbps-query(1). Contributed
by Eivind Uggedal in #58.
xbps-0.39 (2014-09-15):
* Updated bash/zsh completions for >= 0.38 with new features (Contributed by
Eivind Uggedal and Christian Neukirchen respectively).
* xbps-rindex: fix -a/--add mode to create repodata archives with 0664 permissions;
and do not create a new archive if the file cannot be open/locked, error out
instead... otherwise the file lock is ignored.
* A minor build fix for the musl C library.
xbps-0.38 (2014-09-14):
* Disabled best pkg matching code for performance reasons. When installing
or updating a package without any version component, the first repo containing
it wins. Previously the repository with the greatest version won. Use a specific
package expression to match packages in multiple repos, or switch the order
of the repos instead.
* Added bash completion for xbps-*. Contributed by Eivind Uggedal.
* Added zsh completion for xbps-* and xbps-src. Contributed by Christian Neukirchen.
* xbps-query(1): added -s/--search local mode; local pkg queries are now possible.
* pkgdb-0.38 format: the pkgdb plist file now contains all pkg metadata objects
plus the pkgdb specific ones (automatic-install, install-date, metafile-sha256)
with the pkg files list being the exception. The pkgdb code will automatically
convert the pkgdb files to the new format the first time it's accesed.
This effectively implements a two phase upgrade, the first time to upgrade the
pkgdb format and the second one to execute the real operation.
The pkg metadata files stored in metadir (/var/db/xbps) now just contains its
pkg files list objects, everything else is stored in pkgdb. This allows libxbps
to speed up the process of checking for unmet shared libraries, among other things.
* libxbps: added support to check pkg shlib-{provides,requires} objects for
all pkgs in the transaction to be updated. This will make impossible to update a
package to a newer version that contains incompatible shlibs used in its revdeps.
* xbps-rindex(1): -r/--remove-obsoletes is now ~5x faster.
* xbps-remove(1): -O/--clean-cache is now ~10% faster.
* libxbps: xbps_repo_{open,close}() gained an additional argument to acquire/release
a POSIX file lock (see lockf(3)) to serialize write access to the repository
archive. This obsoletes the POSIX named semaphores that were used in xbps-rindex(1),
which only allowed to add/clean a repository per architecture, even if it
wasn't the same local repository!
* libxbps: the fetch code now is able to connect to HTTPS without the need of
/etc/services being available; We don't expect those ports to change anytime!
* xbps-uchroot(1) is now only built on linux, because it's not portable to other
Operating Systems.
* Added support to replace virtual packages when the package to be installed
matches a virtual pkgname, for example:
- nvidia is installed and provides the `libGL` virtual pkgname.
- libGL matches the virtual pkgname and therefore replaces the `nvidia` pkg.
* xbps-query(1): added --fulldeptree long option to print a full dependency
tree for a package; this supersedes -xx which was broken since 0.37.
* xbps-query(1): fix a segfault with -Rf when there's no network connectivity.
Reported by Gottox.
* xbps-uchroot(1): do not remount / unnecessarily; just mount it as private
and nosuid once; this is enough for our use cases.
* xbps-query(1): --show/-S mode now explicitly prints pkg metadata keys
with the bold ANSI escape code.
* xbps-query(1): --search --property now works with <integer> objects, i.e:
$ xbps-query -s '' -p filename-size
* xbps-remove(1): -O/--clean-cache no longer triggers an assertion when the
cache directory is empty.
* Implemented support to preserve existent on-disk files, by always ignoring
the pkg content if the file has been matched. Details here:
https://github.com/voidlinux/xbps/issues/51
The new "preserve" keyword can be used in the xbps configuration file, as well
as for the system and configuration directories:
- <rootdir>/usr/share/xbps/preserve.d
- <rootdir>/etc/xbps/preserve.d
Full path to a file or globbing can be used:
- preserve=/usr/bin/blah
- preserve=/etc/blah/*.conf
* Always preserve files that exist on disk, but are managed by a package.
When such condition ocurrs install the pkg configuration file as `file.new-<version>`.
This fixes GH issue #50 https://github.com/voidlinux/xbps/issues/50.
* Implemented support for post-install and pre-remove messages, as explained
in issue #44 https://github.com/voidlinux/xbps/issues/44.
xbps-create(1) will read the {INSTALL,REMOVE}.msg files and will add its contents
into the `{install,remove}-msg` data objects on its metadata plist file.
* xbps-install(1): added support to list packages that will be downloaded, if those
were available in a remote repository and were not in the cache directory.
* Before accepting a transaction, xbps now checks if there's enough free space
on the target rootdir (on disk) to proceed with the operation. In code terms,
xbps_transaction_prepare() now returns ENOSPC if the size of the transaction
exceeds the size of the free space. Close issue #7.
* When installing or updating packages, now proper statistics are generated
when a binary package from a remote repository exists in the cachedir,
and when a package has the "preserve" property.
* libxbps: return ENXIO and a meaningful error message if a package that is
going to be installed or updated has invalid dependencies, i.e:
$ xbps-install --repository=$HOME/repo -n foo
ERROR: foo-1.0_1: can't guess pkgname for dependency '>=invalid-spec_1'
Package `foo' contains invalid dependencies, exiting.
$
This fixes #43 (xbps-install: unhelpful message for invalid dependency)
submitted by Dominik Honnef.
* libxbps: fixed a new issue with packages that provide/replace the
same virtual package that is going to be replaced. The issue could be
reproduced easily by installing any awk package (gawk, mawk, or nawk),
which are providing/replacing the "awk" virtual package.
* libfetch: synchronized with NetBSD pkgsrc/libfetch.
* libfetch: add support for TLS SNI (Server Name Identification) from NetBSD, with
some minor debug changes. This fixes GH issue #41 (https://github.com/voidlinux/xbps/issues/41).
xbps-0.37 (2014-06-06):
* Enabled syslog logging by default, may be still disabled via xbps.conf.
* Added support for system and configuration virtualpkg directories.
The system virtualpkg directory set to <rootdir>/usr/share/xbps/virtualpkg.d contains
virtualpkg configuration files (.conf/.vpkg) that can be overrided by the admin
in <rootdir>/etc/xbps/virtualpkg.d bearing the same file name.
This obsoletes the "virtualpkgdir" keyword support from the xbps configuration file.
* Added support for system and configuration repository directories, as
explained in GH #39 (https://github.com/voidlinux/xbps/issues/39).
The system repository directory set to <rootdir>/usr/share/xbps/repo.d contains
repository configuration files (.conf) that can be overrided by the admin
in <rootdir>/etc/xbps/repo.d bearing the same file name.
* xbps-create(1): new option `-t, --tags` to specify a list of tags
(categories) the package should be part of. This is just for metadata
purposes and querying packages by tags in the future.
* xbps-install(1): it's possible now to update a single package (if it's already
installed) without using the -u, --update option. This implements
GH #35 (https://github.com/voidlinux/xbps/issues/35).
$ xbps-install [-f] -y foo
- if foo is installed, update it.
- if foo not installed, install it.
- if -f is set, reinstall or downgrade it.
* xbps-query(1): new option (-S, --show) which shows info of a package
installed locally or in a repository with -R. This is the default mode
if no other mode is set; to preserve compatibility with previous versions.
* xbps-query(1): new long option "--regex" that can be used in the
"ownedby (-o, --ownedby)" and "search (-s, --search)" modes to match
Extended Regular Expressions against package properties.
This allows you to find packages by matching EREs in package properties,
for example to find out what packages were built between 2014-05-23 and
2014-05-25:
$ xbps-query --regex -s 2014-05-2[35] -p build-date
...
$
* Imported portable proplib 0.6.4 from https://github.com/xtraeme/portableproplib.
* Fixed a new issue with virtual packages, if a pkg provides a virtual package
that is already installed but with lesser version, do not update to it
unnecessarily (in some cases results in a crash).
* A new object is now recorded in the pkgdb to see the origin repository of
which a package was installed from, i.e:
$ xbps-query --property=repository-origin pkg
...
$
* xbps-remove(1): the -n,--dry-run option does not acquire the pkgdb file lock
anymore, so that any user can use this mode even without write permission to
the target pkgdb.
* xbps-remove(1) -O, --clean-cache is now multithreaded. Gives a performance
boost as the number of threads increases.
* xbps.conf: the keyword "include" now supports file globbing, so that multiple
small configuration files can be included directly, i.e:
include=/etc/xbps/repo.d/*.conf
Contributed by Enno Boland.
* xbps-query(1): fixed a segfault with '-Rf' if pkg is in the repository data
and its binary package does not exist.
xbps-0.36 (2014-04-21):
* libxbps: the dependency solver is now able to detect and ignore invalid
dependencies of a package that are depending on itself, either as real
or virtual packages.
* xbps-uchroot(1): a manual page has been created.
* xbps-install(1): the -n,--dry-run option does not acquire the pkgdb file lock
anymore, so that any user can use this mode even without write permission to
the target pkgdb.
* xbps-query(1): fix a segfault with '-vL' for local unsigned repositories.
* xbps-create(1): new option --compression to specify a compression format;
defaults to xz.
* xbps-checkvers(1): new utility merged from https://github.com/xdave/xbps-src-utils
that is able to check which packages are outdated in the XBPS repositories or
a rootdir by comparing them against a xbps-packages repository.
Written by xdave and improved by myself.
xbps-0.35 (2014-04-01):
* xbps-uchroot: new utility merged from xbps-packages/xbps-src that
bind mounts and chroots to a target directory. This is a setgid binary
that must have correct owner/group to work correctly.
* xbps-rindex(1): fixed a bug while signing repositories in that sometimes
the PEM RSA public key buffer contained unwanted garbage.
* Make sure that required root symlinks in void are never removed or detected
as obsoletes; added new test cases to stress the code works as expected.
xbps-0.34 (2014-03-26):
* xbps-query(1): search mode now accepts -p/--property argument to match patterns
against the stored package object in repositories. Any object stored in the repository
index can be used to be matched against to; the posibilities are countless:
- find out what packages are mantained by a person
- find out what packages are built at a specific date
- find out what packages are linked to a specific shared library
- etc etc etc
* xbps-query(1): in local mode now prints all objects stored on its pkgdb entry
and its metaplist.
* Fix #34 (xbps-uhelper fetch fails to download files from https://alioth.debian.org).
The issue is that this HTTP server returns 406 (Not Acceptable) when the HTTP
header does not contain the "Accept" field (see
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=712261 for more info).
Our libfetch code now always adds "Accept: */*" in the HTTP headers.
* Added some debugging in error paths when performing a transaction.
* Fixed an issue where in a transaction a package with wrong version was being
configured resulting in ENOENT. The configure phase now only uses the package
name to perform the configuration rather than using package name/version tuple.
* Pass another argument to package scripts with the native machine architecture
(uname -m), which can be overrided via XBPS_ARCH environment variable too.
xbps-0.33 (2014-03-11):
* xbps-dgraph: fixed a segfault if rootdir wasn't set:
issue #33: https://github.com/voidlinux/xbps/issues/33
* xbps-uhelper now supports downloading files with a defined destination.
The syntax of fetch is "URI>FILENAME". So if you call
$ xbps-uhelper fetch "http://foobar.com/foo.tar.gz>bar.tar.gz"
the output file will be named "bar.tar.gz". Contributed by
Enno Boland (Gottox).
* Rather than performing a pkgdb write per package being unpacked, configured,
or removed, issue the write only once after the transaction phase has finished.
* While checking file permissions for package files removal, make sure
to not dereference symbolic links, because a symlink might point to
a file in the rootfs, which won't have the same uid/gid.
* Fixed issue #31: https://github.com/voidlinux/xbps/issues/31
* New configuration file format with a custom C parser, simpler
and does not need any additional external dependency. confuse is
not necessary anymore.
* Only allow a single writer to the pkgdb to avoid concurrency issues
when performing multiple write transactions (install, update or remove).
Processes that cannot acquire the lock will get an EAGAIN error.
* Do not continue the transaction if downloading a binpkg/signature file
has failed for some reason, stop and return error immediately.
xbps-0.32 (2014-02-21):
* Fixed a bug in xbps_pkgpattern_name() where a string with some special
chars would result in a crash (reported by Gottox).
* Do the package removal in two phases: the first phase checks the
user has write permission to the entries being removed, if this
succeeds then the package removal is performed.
* xbps-remove(1): -O now also remove obsolete pkg signatures from
cachedir, and ignores pkgs of other architectures.
* xbps-rindex(1): set correct permissions to the POSIX semaphore
by clearing file permission bits before its creation.
xbps-0.31 (2014-02-01):
* xbps-rindex(1): use a POSIX named semaphore in modes that can modify
repository data archive, to avoid concurrency issues.
* libxbps: fixed an issue with errno(3) propagation that lead to
ENOMEM errors when resolving dependencies.
* Removed 0.27 compat from repodata.
* If a repository has been signed previously respect its settings
in repodata (unless there were new changes). This allows us to
accomplish the following:
$ xbps-rindex repo/*.xbps
$ xbps-rindex --sign ... repo
$ xbps-rindex repo/new-pkg.xbps
... and repository is still signed after updating repodata.
API/ABI incompatible changes, you've been warned :-)
* xbps-rindex(1): -c [clean] mode now is fully multithread safe.
* Fixed a double free while downloading binpkgs from remote repositories
(reported by Hanspolo).
xbps-0.30 (2014-01-28):
* Fixed issue #30: https://github.com/voidlinux/xbps/issues/30
* Fixed issue #29: https://github.com/voidlinux/xbps/issues/29
* Fixed issue #28: https://github.com/voidlinux/xbps/issues/28
* When reinstalling a package (or downgrading) also check for obsolete
files and remove them if it's needed.
* When reinstalling a package (or downgrading) make sure to also respect
its installation mode (automatic or manual).
* Fixed a bug where in some cases valid symlinks in a package were not removed
(just dangling symlinks were removed).
xbps-0.29 (2014-01-09):
* Added XBPS_ARCH environment variable to override tha native architecture
(uname(2) machine). This allows us to use "fake" architectures, for example
to use packages built for a different C library.
* Miscellaneous fixes to make XBPS work with the musl C library.
* Fixed issue #27: https://github.com/voidlinux/xbps/issues/27
xbps-0.28 (2014-01-03):
* Implemented Per package RSA signatures, replacing the repository index
signature from 0.27. There's now a `<binpkg>.sig` file with the RSA signature
for any pkg in a repository; the signature files are generated by `xbps-rindex(1)`.
* Implemented on-demand repository access: repositories are registered into
a private queue only on first access and not unconditionally.
* Fixed issue #26: https://github.com/voidlinux/xbps/issues/26
* xbps-query(1): -o (local ownedby mode) does not print directories;
it's unnecessary anyway because xbps never extracts empty directories.
* The `--repository` option in xbps-install(1) and xbps-query(1) now adds
the repositories at the top of the list, rather than overriding the list
specified in a configuration file.
* Fixed issue #25: https://github.com/voidlinux/xbps/issues/25
* Fixed issue #24: https://github.com/voidlinux/xbps/issues/24
xbps-0.27 (2013-11-29):
* libxbps: make sure that base symlinks in the root directory are never removed,
due to /usr switch in Void. This will also be harmless in other systems.
* The testsuite now contains more tests than ever and will be extended as new
issues appear.
* Fixed issue #20: https://github.com/xtraeme/xbps/issues/20
* Fixed issue #19: https://github.com/xtraeme/xbps/issues/19
* Fixed issue #18: https://github.com/xtraeme/xbps/issues/18
* Fixed issue #6: https://github.com/xtraeme/xbps/issues/6
* xbps-rindex(1): also understands the XBPS_PASSPHRASE environmental variable to
supply the passphrase when signing repositories.
* xbps-rindex(1): added -v --verbose option.
* Support for RSA signed repositories. A repository can be signed with your
preferred RSA key (any ssh key works) as follows:
$ xbps-rindex --sign --signedby "foobar <foo@bar>" --privkey /priv/key /path/to/repo
Public keys must be imported before using a remote signed repository thru
the xbps-install(1) utility:
$ xbps-install -S
Starting from now on all remote repositories must be signed and verified.
Local repos do not need to be signed and they will work as before.
xbps-0.26.2 (2013-10-30):
* unpack: apply correctly permissions and mode to existent files if the those files
in the archive are modified compared to what it's currently on disk.
xbps-0.26.1 (2013-10-25):
* xbps-uhelper: added new action "real-version" that only prints the version
of an installed real package in a rootdir, not virtual.
xbps-0.26 (2013-09-25):
* xbps-query(1): the `-D --defrepo' argument has been superseded by
`-R --repository=<url>' argument. (issue #17).
* xbps-install(1): added support to specify multiple repositories with
`--repository=<url>`. For consistency with `xbps-query(1)' use the same
syntax as it were an optional argument. (issue #17).
This overrides the repository list in a configuration file.
* xbps-query(1): added support to specify multiple repositories with
`--repository=<url>`. This also enables repository mode; the argument is
optional and can be used to specify desired repositories. (issue #17).
This overrides the repository list in a configuration file.
* Re-added all metadata package objects to the repository index, this avoids
remote connections when querying packages from remote repositories. This also
speeds up 'xbps-src' when using remote repositories as well.
* A C99 compiler is now required due to the use of for loop initializers.
* Fixed #14 from github: "Removing recursively does not respect manual installation
mode for dependencies". See https://github.com/xtraeme/xbps/issues/14
for more information.
* Removed "PackagesOnHold" from xbps.conf. This has been replaced by a new mode
in xbps-pkgdb(1):
$ xbps-pkgdb -m <hold|unhold> <pkgname>
To list packages that are currently on hold mode use xbps-query(1):
$ xbps-query -H
* On terminals with 0 columns, assume 80. Xen's PV guest running Linux and its
hvc console does report 0 columns/rows.
* libxbps: introduce xbps_{array,pkgdb}_foreach_cb_multi() which are
multithreaded implementations to process N items of an array spawning
1 thread per core. This makes XBPS use threads when possible on
multi-core CPUs.
* libxbps: removed the following unused API functions:
- xbps_pkgdb_foreach_reverse_cb()
- xbps_callback_array_iter_reverse()
- xbps_callback_array_iter_reverse_in_dict()
- xbps_callback_array_iter()
- xbps_callback_array_iter_in_dict()
* xbps-query(1): make -L list all repositories in the configuration file, even
the non working ones and print -1 in them. Closes issue #11 from github.
$ xbps-query -L
-1 /mnt/foo
-1 /blah/foo
2619 /mnt/xbps_builder/host/binpkgs
16 /mnt/xbps_builder/host/binpkgs/nonfree
$
* xbps-query(1): fixed some memleaks in local and repository owned mode.
* xbps-query(1): fix regression in -R, also print repository string object.
* Do not abort transaction if updates for conflicting packages are in
the transaction due to checks of reverse dependencies in virtual packages.
xbps-0.25 (2013-07-05):
* Added support to validate reverse dependencies when updating packages.
Such example would be updating pkg X to 2.0 when an installed package
depends on pkg X < 2.0; abort transaction when such condition is
detected; this also works with virtual packages.
* Dropped requirement of confuse when using the libxbps API.
* Dropped support for external libfetch and proplib; the included copies
are always used unconditionally. libxbps now provides a wrapper for
proplib prefixing all symbols with xbps_ rather than prop_.
* libxbps: only read virtual pkg config files when looking for a virtual
package, not unconditionally and at xbps_init() time.
* libxbps: optimize repo/rpool code by reusing existing data returned by previous calls.
* libxbps: fixed two memleaks.
* libxbps: reduced memory usage on 64bit platforms by using 32bit types, which
is really enough to be used in loop indexes (deps, revdeps, etc).
* xbps-dgraph: completely updated to the new pkgdb format/API.
* xbps-query(1): added support to find reverse dependencies in repository mode
for virtual packages, i.e:
$ xbps-query -RX xserver-abi-input
xf86-input-evdev-2.8.0_1
...
* Use a single zlib compressed file to store repository data `<arch>-repodata`.
This will allow us to extend repositories with more metadata if needed, and
simplifies the API. This is just the starting point to add PGP signatures.
The struct xbps_rindex has been replaced by xbps_repo, thus, the major
libxbps SONAME has been bumped to 2.
* xbps-create(1): correctly calculate target file for relative symlinks.
* xbps-pkgdb(1): removed old code that isn't needed anymore in the 'check' mode.
This fixes issue #9 (https://github.com/xtraeme/xbps/issues/9).
xbps-0.24 (2013-05-02):
* xbps-rindex(1): added -f, --force flag to forcefully register a package even
if an entry of the same package already exists on the index.
xbps-0.23 (2013-04-19):
* xbps-install(1): the default repository (-R) now overrides any repository
set in a configuration file.
* xbps-rindex(1): in clean mode (-c) also remove obsolete entries from index-files,
which were not matched due to different tests.
* Fixed a bug in the transaction dictionary that reported wrong sizes
in total-removed-size and total-installed-size objects or even empty values
in some cases.
* xbps-create(1): initialize setlocale so that utf8 files can be archived.
The locale must be utf8 capable for this to work. Fixes issue #5 from github.
* libxbps: fix a use-after-free in state cb when a binpkg doesn't match its
hash with the hash stored in repo index.
* xbps-uhelper: the 'version' target now also matches virtual packages, which
is a requirement for xbps-src.
xbps-0.22 (2013-03-23):
* xbps-create(1): a new option --build-options has been added to add a string
with the build options that were used in package. It's expected to be filled
by xbps-src automatically.
* xbps-query(1): make -o (ownedby) follow symlinks. Fix issue #4 from github.
This works in local and repository mode.
* xbps-create(1): if effective user/group is the same than files being
packaged in a package, set user/group to root:root. This way we don't
have to depend in an external tool to assume proper permissions (fakeroot).
* xbps-query(1): fix segfault when showing unexistent package files.
* When checking for obsolete files in upgrades, ignore unexistent files in
current package; this was hitting an assertion due to this.
xbps-0.21 (2013-03-11):
* libxbps: improved code to find obsolete pkg files in upgrades. Now the code
compares the whole file list between current and new package. A test has been
added to the kyua testsuite to test its correctness.
* Imported Portable proplib 0.6.3 from http://code.google.com/p/portableproplib.
* xbps-query(1): a full dependency tree can now be shown in the
show-deps mode, by specifying -x twice (--show-deps), e.g:
$ xbps-query -xx perl
glibc>=2.8_1
gdbm>=1.10_1_1
glibc>=2.8_1
libdb>=4.8.24_1
glibc>=2.8_1
$
* New repository index format (1.7): unnecessary and redundant objects
have been removed that are already stored in package metadata files.
This means that xbps-query(1) in repository mode will now fetch package
metadata from the binary package and not from index. Only necessary objects
for the transaction and searching are kept.
* xbps-pkgdb(1): new option -u --update to update the pkgdb format to
the latest available. Do not forget to run it after updating xbps to 0.21.
* New pkgdb format: redundant objects have been removed (empty run_depends,
pkgname, version) and it is now a dictionary. The pkgdb file has been
renamed to "pkgdb-0.21.plist" to make future upgrades easier to
handle/update.
* configure: misc tweaks to allow building with the musl C library.
* xbps-query(1): packages can be matched by using virtual package
names in repository mode, i.e:
$ xbps-query -Rp pkgver ntp-daemon
ntp-4.2.6p5_7
$
* xbps-pkgdb(1): new option -m --mode to change package installation
mode to auto (might be detected as orphan) or manual
(explicitly installed).
* xbps-query(1): the search mode (-s, --search) now is able to find
packages by matching virtual package strings, i.e:
$ xbps-query -s cron-daemon
[-] cronie-1.4.9_1 Runs specified programs at scheduled times
[-] dcron-4.5_18 Dillon's lightweight cron daemon
$
* xbps-query(1): changed short option -M (--list-orphans) to -O; which
seems more appropiate to use.
* libxbps: when resolving deps in transaction, ignore incorrect ones;
for example a package might be depending on itself thru virtual packages.
* libxbps: workaround a bug (found by pancake) when updating a package
that is being replaced by a virtual package.
* libxbps: fully remove packages with broken symlinks; previously if a
broken symlink was there (readlink returning ELOOP), package wasn't
removed.
* libxbps: ignore packages conflicting themselves, which can happen with
virtual packages.
* xbps-query(1): fix issue #3 from github
"xbps-query -o only works for installed packages".
The behaviour has been changed for all modes and to explicitly get
info from repositories the -R flag must be used; otherwise it will
use local packages.
* xbps-install(1): the -f, --force flag will now preserve configuration
files if they were modified, and only unpack files that have been
modified when re-installing packages. If -f is specified twice (-ff)
all package files will be overwritten from new package.
* Fix regression in xbps_fetch_file() when fetching files from HTTP
servers that don't provide us enough details (file length, mtime, etc).
* Fix regression introduced in b9136c61c95698a5dafbc69ee9cd873110c68e45,
breaking package conflicts detection.
* xbps-install(1): removed the -s,--skip-sync option; the new -S,--sync
option makes this redundant and useless.
* xbps-install(1): added -S,--sync option to synchronize remote repository index
files; can be combined with -u or used exclusively.
xbps-0.20 (2013-01-24):
* xbps-rindex(1): fix crash in -r (remove-obsoletes mode) if pkg cannot
be removed (permissions or file disappeared).
* xbps-install(1): don't treat EEXIST as an error when installing
new packages; technically it's not an error.
* libfetch: added a patch to fix select(2) timing out when fetching
from some https servers.
* libfetch: merged version 2.34 from NetBSD/pkgsrc.
* configure: changed some options to '--enable-foo':
--enable-static
--enable-api-docs
--enable-debug
--enable-tests
* libxbps: fixed a stupid typo that made it to skip executing the
"pre-remove" action in installed packages.
* xbps-create(1): new long options: --shlib-provides and --shlib-requires,
to add list of required and provided shared libraries in a package.
xbps-0.19.1 (2012-12-22):
* libxbps: when a package has not been configured and there's an update
in transaction, libxbps incorrectly tried to ignore the update and
configure this package. Fix this by not ignoring the update even if
package has any state.
* xbps-query(1): -l, --list-packages option now prints pkg state as follows:
STATE PKGVER DESCRIPTION
Where STATE can be any of the following package states:
ii = installed
uu = unpacked
hr = half-removed
?? = unknown
* xbps-reconfigure(1): fixed regression introduced in 0.19 when processing
all packages with '-a, --all'. Found by pancake.
xbps-0.19 (2012-12-15):
* xbps-rindex(1): add mode (-a) does not remove old binary packages
in repository anymore, only its entry in index is replaced. To remove
outdated packages use -r/--remove-obsoletes.
* xbps-rindex(1): clean (-c) and remove obsoletes mode (-r) are
now multithreaded and will spawn a thread per core to speed up
the process considerably.
* xbps-pkgdb(1): -a, --all mode is now multithreaded and will
spawn a thread per core to process a fraction of pkgdb.
* xbps-create(1): hardlinks can be added and archived correctly.
* xbps-rindex(1): in clean mode (-c), entries with unmatched hashes
are now removed from index.
* Added support for dynamic generation of reverse dependencies for
installed packages. pkgdb no longer keeps track of them statically.
A new object must be present in pkgdb for this to work in fast mode,
which is available if 'xbps-pkgdb(1) -a' is run; otherwise the
fallback mode will be used which is a bit slower.
* xbps-query(1): added support to specify any of the three supported
methods to match package expressions:
- by package name (foo)
- by exact package version (foo-2.0_1)
- by package version comparators (foo>2.1<2.5)
* Multiple API/ABI changes to improve performance; The libxbps SONAME
major has been bumped to 1. This helped to fix some regressions
introduced in 0.18 and really simplifies the API.
* New repository index format (1.6). The index files are now dictionaries
that won't allow to add duplicate entries; also the files are now
"architecture" dependent and only packages for target arch and
noarch will be registered on it.
xbps-0.18.1 (2012-11-26):
* Fixed execution of pre/post install/remove scripts due to using old
package version after unpacking a package being updated.
* xbps-query(1): fixed catching reverse dependencies in some packages
that used version comparators such as "foo<X" or "foo>X<Y".
xbps-0.18 (2012-11-23):
* xbps-query(1): implemented support to know reverse dependencies
in repository mode; that means you can now exactly what packages
require the target package from all registered repositories.
* The virtual package configuration files are now read dynamically
by libxbps at initialization time from default configuration directory:
<rootdir>/etc/xbps/virtualpkg.d. Only files that end in ".conf" will
be processed by libxbps.
* The rootdir (with -r, --rootdir) can now be specified as relative path.
* Structured pkg metadata stored on disk, and added new functionality:
- A single plist containing pkg properties, files and
INSTALL/REMOVE scripts added as prop_data(3) objects.
- pkgdb's pkg dictionary now contains a sha256 hash to know if the
plist from metadir has been modified.
- prop_data(3) objects can be seen with xbps-query(1) --property.
- pkg plists are now kept in <metadir>/.<pkgname>.plist.
- In a future revision libxbps could make a backup of pkgdb and
plist files in metadir before a transaction is committed.
Users must run 'xbps-pkgdb [-r <rootdir>] -a' to upgrade pkg metadata
to the 0.18 format.
* Shell wildcard patterns (fnmatch(3)) can now be used in the
PackagesOnHold configuration option.
* New utilities replacing xbps-bin(1) and xbps-repo(1):
- xbps-install(1): to install and update packages.
- xbps-pkgdb(1): to report and fix errors in pkgdb.
- xbps-query(1): to query packages and/or repositories.
- xbps-reconfigure(1): to (re)configure packages.
- xbps-remove(1): to remove packages.
- xbps-rindex(1): to handle local repositories.
* While reconfiguring packages do not flush pkgdb unless it's necessary.
* While unpacking files from binpkg also check if any symlink has been
modified, if true unpack it. If an entry has no changes and file mode
or uid/gid differs apply new perms and mode from new pkg.
* When registering a pkg to pkgdb make sure to remove unneeded meta objs
from its pkg dictionary. Also add a check to xbps-bin(1) to remove those
objects if found.
* Improved finding and removing obsolete files after upgrading a package
in a transaction. Any obsolete link (not just dangling links) and
configuration files are now removed if they are obsoletes.
* Add support to resolve exact dependencies such as "foo-1.0_1".
* Fixed a bug in the dependency sort code that in some cases and due to
virtual packages added duplicate matches and broke the dependency order.
* xbps-bin(1): the 'check' target now checks the target file in relative
symlinks, or multiple levels of symlinks.
* xbps-create(1): fixed an assertion that happened when resolving the
target file of a symlink, which was unexistent because the real file was
provided by another pkg. In this case just keep the target file as is.
xbps-0.17 (2012-10-02):
* Package metadata files and pkgdb plist are now stored uncompressed.
This improves performance when those files store large chunks of data.
* Fixed "packages on hold". Regression added in 0.16.2.
* xbps-repo(1): fixed crash in the 'search' target when the terminal has
been resized, reported by pancake.
* xbps-bin(1), xbps-repo(1): added a new flag -B to set default repository
to install packages, in case xbps.conf couldn't be found.
* xbps-create(1): a new utility to create XBPS binary packages; package
files must be installed to a directory prior to executing this utility.
* configure: if compiler supports PIE and RELRO, enable them by default.
* xbps-repo(1): the 'show-deps' target does not show the repository from
the matching target package, just the list of dependencies.
* xbps-repo(1): the 'search' target now shows which packages are currently
installed "[*]" or not installed "[-]".
* xbps-repo(1): a new target has been added: 'remove-obsoletes'. This removes
obsolete packages found in a local repository; obsoletes are packages not
registered in repository's index.
* configure: fixes for Ubuntu, which uses ld(1) --as-needed by default and
some function tests were failiing due to this.
* configure: added "--with-static" and if enabled, the static executables
will also be built and installed. By default it's disabled.
* xbps-repo(1): the 'genindex' target has been replaced by the 'index-add' and
'index-clean' targets. The 'index-add' expects a list of binary packages to
be added to repository's index:
$ xbps-repo index-add /path/to/repo/*.xbps
The 'index-clean' removes obsolete entries in repository's index:
$ xbps-repo index-clean /path/to/repo
xbps-0.16.5 (2012-07-14):
* xbps.conf: remove obsolete remote repositories.
* libxbps: extend the list of ignored symlinks in rootfs if they were found
as obsoletes at package upgrade time.
* libxbps: at package register time a new string object in pkgdb is added
"install-date" that records the package installation date with the following
strftime(3) format: "%F %R %Z".
* xbps-bin(1): the 'show' target now prints some objects from pkgdb if found:
"install-date" and "automatic-install".
xbps-0.16.4 (2012-07-10):
* Imported proplib 0.6.1 from http://code.google.com/p/portableproplib.
* libxbps: when finding obsolete files also match against sha256, not
just the filename. Also ignore symlinks found in rootfs to make
the system transition to /usr fully work.
xbps-0.16.3 (2012-07-04):
* libxbps: fixed a regression in 0.16.2.
xbps-0.16.2 (2012-07-04):
* libxbps: fixed 2 bugs while updating packages.
* libxbps: after removing a pkg the state cb was passing dangling pointers in
its pkgname and version members.
xbps-0.16.1 (2012-06-30):
* xbps-repo(1): fixed a regression in the 'genindex' target. It was looking
at wrong repository subdirectory when removing obsolete files.
This also fixes issue 24 from googlecode.
xbps-0.16 (2012-06-20):
* Added support for package conflicts. If any conflicting pkg has been found
in a transaction, xbps_transaction_prepare() will return EAGAIN and
the array object "conflicts" in transaction dictionary must be inspected
to know what conflicts have been found.
* Always require an underscore at package versions, if any provided
pkgver (i.e 'foo-1.0_1') does not contain an underscore the name/version
won't be detected for a string. That means that now any package can contain
any character in pkgname and all characters in version except hyphens ('-'),
and as bonus there's no need to make some tricks to perform installation
of exact package versions.
* xbps-bin(1): the 'install' target now can (re)install an exact package
version as specified on its arguments, i.e:
$ xbps-bin install foo-1.0_1
If that version is not available no other version will be installed.
* xbps-repo(1): 'genindex' target is now able to remove binary packages
when a greater version exists on the index.
* xbps-repo(1): 'sync' target now is able to sync just a single repository
by passing the repository URI as argument, i.e:
$ xbps-repo sync http://xbps.mirror.org/repo
* xbps-repo(1): 'pkg-list' target now expects the repository URI than
the index number, i.e:
$ xbps-repo pkg-list http://xbps.mirror.org/repo
* xbps-bin(1): -n flag (dry-run mode) now also prints the pkg architecture
as last component and if the transaction reason supports it.
* Repository index format 1.5. The files are now named properly:
index.plist for XBPS_PKGINDEX and index-files.plist for XBPS_PKGINDEX_FILES.
The difference in XBPS_PKGINDEX is that now a single plist file can store
all metadata from any package with any architecture. XBPS_PKGINDEX_FILES
has been modified to speed up 'xbps-repo find-files'. That means
that in xbps.conf now you'd only have to use the directory where the
index.plist is stored, i.e:
/path/to/my/repo <- 1st repository
|-- i686
|-- index-files.plist
|-- index.plist
|-- noarch
|-- nonfree <- 2nd repository
| |-- i686
| |-- index-files.plist
| |-- index.plist
| |-- noarch
| `-- x86_64
`-- x86_64
Any other directory not named "noarch" or "$(uname -m)" must be specified
as another different repository, such case is "nonfree" or any other with
unmatched names.
* xbps-bin(1): new flag: -S which syncs rpool indexes before executing
the "dist-upgrade", "install" or "update" targets.
* libxbps: renamed xbps_repository_pool_xxx to xbps_rpool_xxx
(API/ABI incompat changes).
* libxbps: extended rpool with a new function:
xbps_repository_pool_find_virtualpkg_conf. This function will match
a virtual package as was specified in configuration file. That means
that the find_xxx functions now do exactly what the API documents.
While resolving packages, the order to look for them is the following:
find_virtualpkg_conf -> find_pkg -> find_virtualpkg
If no virtual pkg from conf matched, look for a real pkg, otherwise
use the first virtual package from rpool that matches our pattern.
* libxbps: introduce the concept of "soft replace". When a package
contains that boolean object set in pkg's metadata props.plist,
some steps will be skipped at remove time for the package being
replaced: its files won't be removed and the post action in REMOVE
file won't be executed.
* libxbps: change the order in which package files are removed:
current: files, conf_files, links, directories.
previous: links, files, conf_files, directories.
This is required to avoid removing working symlinks, which could be
owned by another installed package. Now only dangling symlinks are now
removed.
* libxbps: when removing package files and if metadata files.plist wasn't
found, do not error out and rather just continue until the package is
fully removed.
* xbps-bin(1): renamed "autoupdate" target to "dist-upgrade" and
"autoremove" to "remove-orphans". For compatibility with previous
versions the old targets are still kept, but will be removed in future
releases.
* Added support to put packages "on hold". Packages on hold
won't be updated by system upgrades even if there is a newer version.
The configuration string list "PackagesOnHold" in xbps.conf expects
a list of package names.
* xbps-bin(1): miscellaneous cosmetic improvements while unpacking
package files and add a counter for the 'check all' target.
* xbps-repo(1): new target: 'clean'. This removes obsolete binpkgs
from cachedir, either because the binpkg is not available in repository
pool anymore or because its sha256 hash doesn't match with the
one matched in repository index file.
* Miscellanous API cleanups (API/ABI incompat changes).
xbps-0.15 (2012-04-06):
* xbps-bin(1): a new test for the 'check' target to find stale entries
in 'requiredby' package metadata object from pkgdb.
* When reinstalling existing packages (xbps-bin -f install), make sure
to remove previous entry in the "requiredby" pkgdb's array object.
* When sorting required dependencies make sure that a pkg with
required version is taken into account, not just the first
one matching its pkgname.
* When resolving required dependencies also find the best pkg
available in repository pool. Thanks to dave for testing!
* Started a test suite for libxbps. Tests are written for Kyua
(http://code.google.com/p/kyua) and can be built and installed
with the --with-tests configure option, by default will be installed
to EPREFIX/tests but can be overriden with --testsdir. ATF 0.15
(part of Kyua) is required to build the test suite.
* Enabled assertions by default even if --debug not enabled. We want
to enforce correct behaviour even in release builds.
* Fixed issue 22: "Updating a package doesn't set correct perms when
file not modified". When extracting package files, always set
permissions from binary package, even if file has not been modified.
xbps-0.14 (2012-02-28):
* Fixed 'xbps-bin reconfigure all' (regression added in 0.13).
* While resolving dependencies check if required dependency is matched
with any virtual package already added in transaction, on match use it.
* Only accept binary packages compressed in gzip, bzip2 and xz formats.
Profiling tests showed that libarchive wasted a considerable amount of
time checking if archive was compressed in zip format.
* xbps-bin(1)/xbps-repo(1): redirect some more warnings/errors to stderr.
xbps-0.13.0 (2012-02-20):
* libxbps: skip checking for obsolete files if a package in a transaction
replaces another one that is going to be updated. In such cases that means
new package now owns some files previously owned by the package to be
updated, therefore the updated package must not check for obsolete files.
* xbps-repo(1): the `show', `show-deps' and `show-files' targets now accept
package patterns, i.e "xbps-repo show 'foo>=2.0'". If only a `pkgname`
has been specified, the newest package available in repositories will be
shown.
* xbps-repo(1): print meaningful help usage, added -h option.
* xbps-bin(1): print a meaningful help usage, added -h option.
* libxbps: fixed xbps_transaction_install_pkg return value if package
is already installed: this must be EEXIST not ENODEV.
xbps-0.12.0 (2012-02-06):
* xbps-bin: new dry-run mode (-n) to show the actions that would
be executed in a transaction. This mode takes effect in the
autoremove, autoupdate, install, remove and update targets. Example:
$ xbps-bin -n install kernel-snapshot
<pkgname> <install|remove|update|configure> <version> <repository> <filename>
$
The format is "%s %s %s[ %s %s]\n" for `pkgname', `action', `version',
`repository' and `filename' (optional).
* xbps-bin: the install target will now install the best package
version available in repository pool if just package name has
been specified, otherwise the first repository matching the
specified pattern wins, i.e:
$ xbps-bin install foo 'blah>=1.2<2.0'
* Massive pkgdb API rototill. The xbps-uhelper command gained support
for the 'updatepkgdb' target which will migrate old pkgdb
format to the new 0.12 format. ALERT: make sure to execute
"xbps-uhelper -r <rootdir> updatepkgdb" to update to the new 0.12
pkgdb format before installing/removing/updating any package.
* Repository index 1.4: the file is now externalized to a proplib array
and has been renamed to "rindex.plist" to not break compatibility
with previous XBPS versions. This helps in simplifying the API
implementation substantially.
* Added a pkg-config file to simplify writing code with libxbps.
* libxbps: improved support for finding newest package versions available
in repository pool.
* libxbps: added support for finding exact package name/version matches
in repository pool.
* Fixed registering repositories with trailing '/' chars in
configuration file: xbps.conf.
* xbps-repo(1): the 'genindex' target now creates a plist file to cache
all files provided by binary packages in a repository. This makes
the 'find-files' target marginally faster, because this avoids having
to fetch data from network in remote repositories. The new file
'index-files.plist' will be downloaded every time the 'sync' target
is issued but only iff the file has been modified.
This fixes Issue 21 "`xbps-repo find-files` is awfully slow".
* It's now possible to fetch files thru xbps_fetch_file() from HTTP
servers that don't set the Content-Length header. This fixes issue 19:
"xbps-src cannot fetch source with unknown Content-Length" reported
by ojab.
* Renamed some options in xbps.conf to not have dashes, such as:
fetch-timeout-connection -> FetchTimeoutConnection
fetch-cache-connections-host -> FetchCacheConnections
fetch-cache-connections-per-host -> FetchCacheConnectionsPerHost
* Implemented memory caching for regpkgdb and configurable transaction
flushing. Can be changed in xbps.conf with "TransactionFrequencyFlusing".
By default set to 5. That means that every 5 packages processed in
a transaction there will be a regpkgdb plist flush to disk.
Setting it to 0 enables automatic mode which will only flush in
two required points. Setting it to 1 makes the behaviour used in XBPS<=0.11,
which flushed it on every package.
That feature provides a 25% (and in some cases even more!) of performance
when executing a transaction.
* Merged purge code into remove. It wasn't necessary to have this splitted,
so it now has been merged into xbps_remove_pkg(). That also means that
'-p' flag in xbps-bin(1) and xbps-repo(1) doesn't exist anymore.
* xbps-repo(1): the 'find-files' target accepts multiple patterns, such as:
$ xbps-repo find-files /bin/cat '/bin/f*' ...
* xbps-bin(1): the 'find-files' target accepts multiple patterns, such as:
$ xbps-bin find-files /bin/cat '/bin/f*' ...
* xbps-repo(1): the 'search' target accepts multiple patterns, such as:
$ xbps-repo search 'foo-[0-9]*' '*blah*' ...
* libxbps: more paranoid type checking and allocation results, to make
sure that out of memory conditions are handled gracefully.
xbps-0.11.0 (2011-12-20):
* xbps-bin(1): it is possible now to reinstall a package even if it's
installed with the '-f' option. If reinstalling the same package version,
only unexistent files or files not matching its hash will be extracted.
* While unpacking a binary package, always check that file to be extracted
exists on filesystem, if true and its hash is matched, skip extraction.
* While installing a package always preserve configuration files if they
exist, but if hash don't match rename configuration files to
<filename>.old.
* New shared configuration file via libconfuse that replaces the
plist configuration files: xbps.conf. That means that libxbps
now requires confuse >= 2.7 available at
http://www.nongnu.org/confuse/.
* Support for syslog logging common operations, such as install, update,
remove and purge via LOG_NOTICE, and errors with LOG_ERR.
By default it's always enabled, can be disabled thru the conf file.
* xbps-repo(1): new target: pkg-list [index]. This target will list all
packages from repository with index [index]. If optional argument
[index] (decimal) not set, all repositories will be used.
* libxbps: when registering new packages, existing entries in
requiredby matching the same pkgname/version touple are now
simply skipped.
* Repositories with missing index file are now simply ignored.
It's expected that user executes 'xbps-repo sync' to fetch the
index for all remote repositories specified in configuration file.
* Faster binary package unpacking. Only files and symlinks are now
extracted from binary packages, thus directories are not extracted
anymore. The package builder is responsible to create required
directories where appropiate and set correct permissions.
While being here, some stuff is skipped now if a package uses the
"preserve" keyword or package is being installed, resulting in a
faster operation.
* Implemented "New repository scheme and configuration file" from issue 16.
The plist index file has been renamed to "index.plist", version bumped
to 1.3. The configuration file (repositories.plist) now expect the full
path to the directory storing the index.plist file. This will allow us
to use other directories (such as non-free, or alike) for such purpose.
* libxbps: improve xbps_purge_pkg() in case that the process was
unexpectedly interrupted, do not error out unless the unregister
phase returns an error value.
* libxbps: when unpacking a package that replaced another package
due to virtual packages, preserve its configuration files if
they already existed.
* xbps-bin(1)/xbps-repo(1): new flag '-o' (option). This can be used
in the 'show' target to print only a set of objects stored in package's
properties dictionary, example:
$ xbps-bin -olicense show xbps
Simplified BSD
$ xbps-bin -oversion,build_date show xbps
0.10.1
Wednesday 26 October, 2011, 14:37:31 UTC
$
* libxbpps: when fetching new pkg-index.plist from a repository,
make sure that it's a plist file and can be internalized; otherwise
remove downloaded file and return error.
* xbps-bin(1): new test for the 'check' target to fix missing
entries in requiredby array, i.e reverse dependencies in
the package database plist.
* xbps-bin(1): the 'check' target now works virtual packages.
* libxbps: failed to properly match installed virtualpkgs that were
dependencies in a transaction, therefore resulting in real packages
being reinstalled and replacing installed virtual packages.
xbps-0.10.1 (2011-10-26):
* libxbps: fixed multiple free(3) calls in error paths (via closedir(3))
when some virtualpkg plist file couldn't be internalized.
* xbps-bin(1): 'remove' with recursive flag (-R) now removes first
the specified packages and puts its automatic dependencies at the
tail of the array.
* libxbps: xbps_pkgpattern_{name,version} now return expected
pkgname/version if pattern is a shell wildcard pattern (fnmatch(3)).
* libxbps: removed csh alternate code from the NetBSD's match code.
We weren't using this code anyway and this only slowed down
xbps_pkgpattern_match().
xbps-0.10.0 (2011-10-21):
* Fixed issue 11 "xbps-bin fails to update properly some pkgs".
http://code.google.com/p/xbps/issues/detail?id=11
* xbps-bin(1): the 'check' target now is able to detect if a package
was installed manually and other packages are currently depending
on it and change its mode to "automatic", i.e as dependency of those
packages.
* xbps-bin(1), xbps-repo(1): the -C flag now expects a path to a
directory where the configuration files (conf.plist and
repositories.plist) are stored.
* New configuration scheme for virtual packages as defined in
http://code.google.com/p/xbps/issues/detail?id=12
XBPS now reads all plist files in PREFIX/etc/xbps/virtualpkg.d.wants
directory with settings for the wanted virtual packages.
* New configuration scheme as defined in
http://code.google.com/p/xbps/issues/detail?id=12
A directory to store XBPS configuration files is now used, by default
set to PREFIX/etc/xbps. Configuration options are now set via
conf.plist, and repositories in repositories.plist.
* It is possible now to reinstall packages that provide virtual packages
and put it back the original package, such as jpeg <-> libjpeg-turbo
multiple times, without loosing important objects set when the
original package was installed, i.e reverse dependencies and
automatic installation. This is a requisite to really make a system
that can be fully customizable and restored back to its original
state with the virtual packages feature.
* Fixed issue 10 "HTTP repositories in non standard HTTP port currently segfault".
You can now use any HTTP server in non standard ports, such as:
http://yourhost:8080/your/repo
* xbps-bin(1): the 'check' target now detects broken symlinks and marks
them as critical errors.
* libxbps: when updating packages, only files that have been modified
(compared to current installed file) are now unpacked. This should
save some writes to storage and make the process a bit smoother as well.
* Moved install transaction code to libxbps. The API has been extended
with xbps_transaction_commit() which expects the transaction dictionary
as its argument. This function will execute transaction tasks, like
removing, updating, installing and configuring packages as defined
in the transaction dictionary.
* The 'cachedir' option in configuration file now can be changed to
be relative to the rootdir if the first character is not '/'. The
-c flag in xbps-bin(1) still expects a full path and if set, overrides
the setting in configuration file.
* xbps-bin(1): the 'show', 'show-deps' and 'show-revdeps' targets now
work with virtual packages.
* libxbps: fixed NetBSD's dewey matching code to properly identify
that a version X.Y.Z should be greater than X.Y_Z.
* libxbps: revamped virtual package handling. The public API find
functions (xbps_find_pkg_*) don't know anything about virtual packages.
To find virtual packages the xbps_find_virtualpkg_* functions must be
used instead of the "classic" ones.
* libxbps: the xbps_find_foo_in_array functions have been renamed
to xbps_match_foo_in_array because its task is only matching against
the provided package name, package pattern or string.
xbps-0.9.1 (2011-07-15):
* libxbps: xbps_repository_pool no longer loops forever if a package
index plist file cannot be fetched due to network problems, or
if the file is not available anymore; the repository will be
ignored.
* xbps-repo(1): the 'genindex' failed to register in pkg-index
packages less than on equal than any other package providing the
same package name. Ignore packages providing virtual packages.
* xbps-repo(1): the 'genindex' target now removes entries in existent
package index files for unexistent packages that were previously
registered (removed, not enough permissions, etc).
* xbps-repo(1): the 'genindex' target creates required directories
in local repositories if it's necessary.
* xbps-repo(1): the 'search' target now matches patterns in
case insensitive mode.
* A bug has been fixed while updating a package and another package
providing a virtual package with a greater version was available
in repositories. Only accept this if the virtual package is explicitly
enabled in the "virtual-packages" section in the configuration file.
xbps-0.9.0 (2011-07-08):
* configure doesn't require a zlib package with a pkg-config file, to
workaround some distribution that don't provide it (hi Ubuntu!). Rather
it now checks for a required function. Fixes issue 6 in googlecode.
* The configuration file now accepts a new option "fetch-timeout-connection",
to specify the limit to wait (in seconds) of timed out connections when
fetching files. It's set to 30 in configuration file, and if not set it
also defaults to 30 seconds.
* The configuration file now accepts new options to change rootdir
(same than -r in xbps-bin(1)), cachedir (same than -c in xbps-bin(1))
and fetching cache connection limits. If settings are specified via
the flags -r and -c in xbps-bin(1)/xbps-repo(1), they are prefered
over the ones in the configuration file.
* Fixed some bugs with virtual packages, to not adding duplicate package
dictionaries in the transaction dictionary.
* xbps-bin(1)/xbps-repo(1): the 'show-files' target now prints the target
file on symlinks, i.e: "/sbin/foo -> /sbin/blah".
* Changed the package pattern match code to the one available on NetBSD.
It's much better and provides more alternative pattern matching options.
* A new configuration file in plist format to specify repositories and
virtual packages has been created, defaults to "/etc/xbps-conf.plist".
That means that you no longer need to register/unregister repositories;
just add your favourite local or remote repository and the first time
XBPS needs to access the pkg-index file it will be downloaded.
More options and properties will be added to the configuration file in
the future. By default we use the official public remote repository,
and "dcron" package for a cron daemon package.
The ABI/API is not compatible anymore with previous versions, you've
been advised :-)
* xbps-bin(1): the 'check' target now also checks for modified symlinks,
and warns if any of them has been modified. For this to work, the package
metadata files.plist should contain the 'target' object in the 'links'
array (created automatically by xbps-src since 20110531).
* Improved repository package index format (v1.2). The index now contains all
package objects, so that it's not necessary to fetch info from binpkgs.
The file will also be a bit bigger, but not to worry about.
xbps-0.8.1 (2011-05-27):
* xbps-bin(1)/xbps-repo(1): 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.
xbps-0.8.0 (2011-05-24):
* xbps-bin(1): added -A and -M options, for setting package install reason
to automatic or manual. Obviously both cannot be used togeter.
* xbps-{bin,repo}(1): -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(1)
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(1): 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(1): added -D option to only show the URLs to download the binary
packages required by the "install", "update" and "autoupdate" targets.
* xbps-bin(1): 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(1) 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.
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(1): 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(1): implemented the 'find-files' target to print which packages
own a file, link, directory, etc. Analogue to the one implemented in
xbps-bin(1). 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(1): 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}(1): indent uniformly all lines while listing packages
in xbps-bin or while searching for packages in xbps-repo.
* xbps-repo(1): while searching for packages also try to find strings
in the short description object.
* xbps-{bin,repo}(1): 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(1): 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(1): 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(1): fixed the 'genindex' target to not return error if any
package is already registered in the index.
* xbps-repo(1): 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(1): 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(1): 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(1): added new flag '-p' for the 'remove' and 'autoremove'
targets, to also purge the package(s) after successful removal.
* xbps-repo(1): 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(1): 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(1): 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(1), xbps-repo(1): 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(1): added support to the 'search' target to find exact matches,
i.e 'xbps-repo search bash'.
* xbps-bin(1) 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(1): 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(1): 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(1): 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.