XBPS 0.8.0 released

5 views
Skip to first unread message

Juan RP

unread,
May 24, 2011, 4:07:57 AM5/24/11
to The X Binary Package System
A big major release with almost 5 active months of development is out.

xbps-0.8.0 (2011-05-24):

* xbps-bin(8): added -A and -M options, for setting package install
reason
to automatic or manual. Obviously both cannot be used togeter.

* xbps-{bin,repo}(8): -c (cachedir) argument now is an absolute path
and
not relative to the root directory.

* Fixed finally when a package should replace an installed package,
but
at the same time the package to be replaced also needs to be
updated
in the transaction. A real example:

- sg3_utils-1.28 is currently installed.
- Installed package udisks-1.0.2_1 depends on sg3_utils-1.28.
- sg3_utils-1.28 has been splitted into libsgutils for 1.31,
and libsgutils-1.31 has "replaces=sg3_utils<1.31".
- udisks-1.0.2_2 depends on libsgutils-1.31.

So now the old sg3_utils-1.28 package will be marked in its
transaction
object as "remove" and the new sg3_utils-1.31 package as "update".
Therefore both packages (sg3_utils old/new) will be in the
transaction
but one will be removed and the other one updated.

* Fixed a bug that made all registered repositories to fail when the
first
one couldn't be internalized in xbps_repository_pool_init().

* Added the concept of package properties in the API. At this moment
only one property is fully working, "virtual". When xbps-bin(8)
sets this property for a package, its virtual package list will be
set in the XBPS_REGPKGDB plist in a package dictionary and the
matching
logic will always prefer its virtual packages over the real ones.
You can do wonderful things with this, like always using
development
package versions, or simply customize what packages you want to
install rather than the default ones. As a real example, you can
now
use the 'xbps-devel' package rather than the stable package version
'xbps' before installing the system and package dependencies will
still be resolved:

"$ xbps-bin set-prop virtual xbps-devel"
"$ xbps-bin install xbps-base-system"

Only packages that have the "provides" object are valid for the
"virtual" property.

* Moved the "replaces" handling logic into the API. But instead of
removing any package, the packages that should be replaced are
added into the transaction dictionary and marked as "remove".
The frontend is responsible to install, update, configure and
remove
all packages by using the properties set in the transaction
dictionary.

* xbps-dgraph: now parses the "provides" object in the package
properties
metadata plist file for packages providing virtual packages.

* xbps-bin(8): added -R option for the "remove" target, to
recursively
remove packages that were installed automatically by the package(s)
that we want to remove, and no other package currently depends on.
This is much like the remove and autoremove targets together, i.e
"xbps-bin -yp remove foo && xbps-bin -yp autoremove".

* xbps-bin(8): added -D option to only show the URLs to download the
binary
packages required by the "install", "update" and "autoupdate"
targets.

* xbps-bin(8): make the list target (without arguments) only show
packages that are fully installed. Previously packages in unpacked
state were also shown.

* Added support for virtual packages. A virtual package is one that
doesn't
exist in the repository, but other packages can provide it. A new
array
in the package properties dictionary has been added to specify
which
virtual packages the package supports. As an example, the `rsyslog'
package provides the virtual package `syslog-daemon-0'. Other
packages
can depend in `syslog-daemon>=0' and `rsyslog' will satisfy the
dependency.

* Merged the `progress_callback' branch that makes possible to
specify a
function callback to update progress while unpacking binary
packages
and while fetching files. xbps-bin(8) now 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.

Enjoy!
Reply all
Reply to author
Forward
0 new messages