Commit Graph

408 Commits

Author SHA1 Message Date
Juan RP 72cefcfc83 Introduce xbps_mmap_file() and use it in strategic points.
Rather than using a random buffer from stack or heap, and decide
what size to use, create a private memory mapped object...

This simplifies the code in lib/verifysig.c and xbps-create.
2014-09-27 13:00:34 +02:00
Enno Boland 2adcf485b5 xbps.h: bump XBPS_API_VERSION. 2014-09-23 20:52:24 +02:00
Enno Boland a421bf7db5 xbps_pkg_reverts: return bool instead of int. 2014-09-23 20:50:34 +02:00
Enno Boland 0c333d574b include/xbps.h.in: sync doc with reality 2014-09-23 19:28:22 +02:00
Enno Boland 50fb6c1605 rename xbps_pkgver_is_reverted to xbps_pkg_reverts 2014-09-23 13:54:06 +02:00
Enno Boland 18204aeac1 lib/util.c: add function which tests if a given pkgver is reverted by a given pkg. 2014-09-23 13:54:06 +02:00
Juan RP c9514ad617 libxbps: fixed replaces/replace_vpkg test case. 2014-09-14 12:50:17 +02:00
Juan RP dea31f0a15 Add xbps_remove_{pkgname,string}_from_array() to the API. 2014-09-13 18:13:25 +02:00
Juan RP e0f2e75657 xbps.h: update comments. 2014-09-13 08:35:25 +02:00
Juan RP 39aca1bbc9 Implement shlib checks for all pkg revdeps in the transaction.
Added three new test cases to verify its correctness.
2014-09-12 11:49:34 +02:00
Juan RP ed6b3c00f5 xbps_entry_install_conf_file: fix non debug build. 2014-09-11 11:56:23 +02:00
Juan RP 01dbb968dd Welcome pkgdb-0.38. 2014-09-11 00:12:12 +02:00
Juan RP fb9c94fab9 Added support to use pkg shlib-{provides,requires} objects.
This effectively checks that all pkgs in a transaction to be installed
or updated, have not unmatched shared libraries, which might happen with
pkgs that had major soname bumps.

This implementation slow downs xbps_transaction_prepare() 2x, due to
the use of xbps_pkgdb_get_pkg_metadata(). A new pkgdb format is required
that adds the pkg shlib-provides objects to pkgdb, avoiding the need
to use xbps_pkgdb_get_pkg_metadata().
2014-09-09 11:08:54 +02:00
Juan RP 05e7a59f03 xbps_handle: constify xbps_xxx_cb_data argument. 2014-09-06 09:46:03 +02:00
Juan RP 5863ec17fe libxbps: two new functions to get the pkgver and arch components in a filename.
- xbps_binpkg_pkgver() returns a heap allocated string with the pkgver component.
- xbps_binpkg_arch() returns a heap allocated string with the architecture component.

A basename, full path or relative path is supported, i.e:

	/path/to/foo-1.0_1.x86_64.xbps
	../../foo/blah-0.1_1.x86_64.xbps
	baz-0.1_1.x86_64.xbps
2014-09-05 20:59:00 +02:00
Juan RP 013731c502 Acquire/release a POSIX file lock on repository archives.
- xbps_repo_open() accepts a third argument (bool) to acquire a POSIX file
lock on the repository archive.
- xbps_repo_close() accepts a second argument (bool) to release a POSIX file
lock on the repository archive.

This avoids the issue of multiple xbps-rindex(8) processes being blocked
even for different repositories on the same architecture, resulting in
unnecessary contention.
2014-09-05 12:26:42 +02:00
Juan RP 035b8d8c73 xbps.h: sort struct members by type. 2014-08-27 08:25:31 +02:00
Juan RP 5a1919e520 xbps_pkg_is_installed(): a pkg in "unpacked" state is now accepted as installed too.
The reason is that even if the pkg was not configured, it should still be accepted
as installed. If installing packages via XBPS_TARGET_ARCH, pkgs are never configured,
so this must be taken into account.

Will be cherry-picked to 0.37 meanwhile.
2014-08-23 15:54:24 +02:00
Juan RP a6699be973 xbps.h: bump XBPS_API_VERSION. 2014-08-13 21:39:39 +02:00
Enno Boland 040e114ad4 lib/download.c: add basic support for vcdiffs 2014-08-11 18:40:44 +02:00
Juan RP f8d8f91a08 Implement support to "preserve" existent on-disk files.
See NEWS for more information. Fix #51
2014-08-01 15:09:51 +02:00
Juan RP e92e86c2db Share code to show pre-remove/post-install msgs. 2014-07-27 17:39:24 +02:00
Juan RP a28046332f Implemented support for pre-remove and post-install messages.
Close #44
2014-07-27 11:24:49 +02:00
Juan RP 207e95c029 include/compat.h: fix musl build and include inttypes.h. 2014-07-14 08:50:14 +02:00
Juan RP 4356b6fd65 Abort transaction if there's not enough free space on disk.
Close #7.
2014-07-13 11:45:04 +02:00
Juan RP 79fe312302 Gather proper transaction stats (take into account binpkgs in cachedir, and "preserved" pkgs). 2014-07-13 09:56:06 +02:00
Juan RP e60677116d Fix #43 (xbps-install: unhelpful message for invalid dependency)
If a package that is going to be installed or updated contains invalid
dependencies return ENXIO and XBPS_STATE_INVALID_DEP xbps state to clients.

This improves the error messages returned to the clients when such
condition happens.
2014-07-02 10:59:25 +02:00
Juan RP 6bb61adb0e Enable syslog logging by default; updated API to use xbps_handle::flags. 2014-06-04 09:39:02 +02:00
Juan RP 776865b548 Added support for system/config virtualpkg.d 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.
2014-05-31 07:05:57 +02:00
Juan RP 387987b146 Make system/config repo.d paths always relative to rootdir. 2014-05-31 06:44:07 +02:00
Juan RP 23fef46e9e Implemented GH #39
The system repository directory set to <prefix>/share/xbps/repo.d contains
system repository configuration files (.conf) that can be overrided by the admin
in <sysconfdir>/xbps/repo.d bearing the same file name.
2014-05-30 11:48:10 +02:00
Juan RP bb491e2667 libxbps: detect and ignore incorrect deps of a pkg if those are virtual pkgs. 2014-04-20 16:54:50 +02:00
Juan RP 0416b067d0 Use a POSIX lock for pkgdb and only issue pkgdb writes in exact points.
- Rather than using a POSIX named semaphore use a POSIX lock (lockf(3))
for pkgdb for writers. Writers that cannot acquire the pkgdb lock will
get EAGAIN rather then being blocked.

- Due to using a file lock we cannot write the pkgdb every time a package
is being unpacked, configured or removed. Instead pkgdb is only written
at the end of a specific point in the transaction (unpack, configure, remove)
or via xbps_pkgdb_unlock().
2014-03-04 14:37:10 +01:00
Enno Boland 59ee6b6733 Adding xbps_fetch_file_dest().
This function is similiar to xbps_fetch_file(). In contrast to xbps_fetch_file()
xbps_fetch_file_dest has an extra paramenter which allow to define an output file
for the request.
2014-03-04 14:19:52 +01:00
Juan RP b980e2109f include/xbps_api_impl.h: confuse.h is not necessary anymore. 2014-02-25 17:04:13 +01:00
Juan RP f74bf1c1c8 New custom configuration file format that does not need confuse. 2014-02-25 16:42:52 +01:00
Juan RP 4d1cdcac0c Fix concurrency issues in pkgdb: only allow 1 write transaction at the same time.
This implementation relies on a POSIX named semaphore, which is also
required by xbps-rindex(8).
2014-02-23 08:23:14 +01:00
Juan RP 596a8c199f Improve two phase pkg removal: do the check for all entry types. 2014-02-09 12:53:15 +01:00
Juan RP d08e76a386 Keep repo metadata if possible when updating repodata (xbps-rindex -a/-c).
API/ABI incompat changes, you've been warned.
2014-01-30 13:07:34 +01:00
Juan RP 5eea259c13 Remove the config.h kludge and override vasprintf detection via HAVE_VASPRINTF. 2014-01-20 18:50:33 +01:00
Juan RP 804a39c63b Added XBPS_ARCH environment var to override uname(2) machine result. 2014-01-09 11:41:25 +01:00
Juan RP 3042dcd7aa include/xbps_api_impl.h: remove __{BEGIN,END}_DECLS to make musl happy. 2014-01-07 21:19:03 +01:00
Juan RP d3ffd0885b xbps.h: drop PATH_MAX completely and use our own definition. 2013-12-29 16:56:43 +01:00
Juan RP 8eb1d3889f Don't redefine _XOPEN_SOURCE and set it to 700 as previously. 2013-12-29 16:49:24 +01:00
Juan RP 1acce163ce xbps.h: define _XOPEN_SOURCE for PATH_MAX. 2013-12-29 16:45:53 +01:00
Juan RP 35e4182250 Fully remove the obsolete softreplace code. 2013-12-25 11:12:52 +01:00
Juan RP ec0d38c469 Implement per pkg RSA signatures and on-demand repository access. 2013-12-24 10:43:55 +01:00
Juan RP 2a21354a1c Make some reorganization in struct xbps_handle.
The variables to set cachedir, rootdir and metadir have been
changed to "array of chars", this way there are no extra allocations.

Update clients accordingly and bump API version.
2013-12-16 11:46:39 +01:00
Juan RP e64227b617 xbps.h: drop requirement of sys/queue.h. 2013-12-16 08:59:11 +01:00
Juan RP 67cfc4ebad rpool: switch "struct xbps_repo" to be part of the rpool simpleq.
The previous internal "struct rpool" was an extra structure that
can be avoided by just using "struct xbps_repo" directly.

This makes rpool use (at least) 4KB less per repository and 1
extra allocation.
2013-12-16 08:49:33 +01:00