0c7701f2bc
This routine will spawn a thread per core to process N items stored in the specified array, the last thread gets the remainder of items left. Results have shown that xbps benefits if there is a considerable amount of items and number of threads being spawned. Use it in xbps_pkgdb_foreach_cb(), xbps-pkgdb(8), xbps-query(8) and xbps-rindex(8). On UP systems there's no overhead because pthread(3) is not used at all. WIP! investigate if it can be used in libxbps (xbps_rpool_foreach()), and finish conversion of xbps-rindex(8) -c. |
||
---|---|---|
bin | ||
data | ||
doc | ||
etc | ||
include | ||
lib | ||
mk | ||
tests | ||
.gitignore | ||
3RDPARTY | ||
configure | ||
COPYING | ||
Makefile | ||
NEWS | ||
README.md | ||
TODO |
XBPS
The X Binary Package System (in short XBPS) is a new binary package system designed and implemented from scratch. Its goal is to be fast, easy to use, bug-free, featureful and portable as much as possible.
The XBPS code is totally compatible with POSIX/SUSv2/C99 standards, and released with a Simplified BSD license (2 clause). There is a well documented API provided by the XBPS Library that is the basis for its frontends to handle binary packages and repositories. Some highlights:
- Supports multiple local and remote repositories (FTP/HTTP/HTTPS).
- SHA256 hashes for package metadata, files and binary packages.
- Supports package states (ala dpkg) to mitigate broken package installs/updates.
- Ability to resume partial package install/updates.
- Ability to unpack only files that have been modified in package updates.
- Ability to use virtual packages.
- Ability to replace packages.
- Ability to put packages on hold (to never update them. NEW in 0.16).
- Ability to preserve/update configuration files.
- Ability to force reinstallation of any installed package.
- Ability to downgrade any installed package.
- Ability to execute pre/post install/remove/update scriptlets.
- Ability to check package integrity: missing files, hashes, missing or unresolved (reverse)dependencies, dangling or modified symlinks, etc.
- Low memory footprint.
- Fast dependency resolver and sorting algorithms.
The latest stable version 0.25 was released on July 5th, 2013.
Build requirements
To build this you'll need:
and optionally:
- graphviz and doxygen (--with-api-docs) to build API documentation.
- atf >= 0.15 (--with-tests) to build the Kyua test suite [2].
Build instructions
Standard configure script (not generated by GNU autoconf).
./configure --prefix=/blah
make -jX
make install
By default PREFIX is set /usr/local
and may be changed by setting --prefix
in the
configure
script. The DESTDIR
variable is also supported at the install stage.
There are some more options that can be tweaked, see them with `./configure --help'.
Good luck!