summaryrefslogtreecommitdiff
path: root/src/apk_database.h
AgeCommit message (Collapse)AuthorFilesLines
2020-05-19make the atom functions not use global stateTimo Teräs1-0/+2
This greatly helps with memory management on applications that may want to daemonize and open/close database several times. Also the lifetime and "owner" of memory for all data is now explicitly bound to owning struct apk_database, which might be helpful when writing language bindings. As side effect, the interned "atoms" are unique only within what apk_database, so comparing packages from different apk_database may not work as expected. Fixes #10697
2020-05-07use SPDX-License-Identifier in source filesTBK1-3/+1
2020-04-28apk: do not manage file ownership as non-root or when asked soFredrik Gustafsson1-0/+1
If apk is run as a non-root user, it's not possible to chown files. Maintainers note: minor wording changes on commit log and man page. Signed-off-by: Fredrik Gustafsson <fredrigu@axis.com>
2020-01-11istream, archive, db: convert db and tar function to use istreamTimo Teräs1-1/+1
2018-11-12prefer selecting packages by their primary nameTimo Teräs1-0/+1
2018-07-18prevent automatic repository index update for 'apk del'Timo Teräs1-1/+2
ref #9063
2018-01-08auto-update index only when database is opened for writingTimo Teräs1-0/+1
2018-01-04enable automatic update of indexes controlled by --cache-max-ageTimo Teräs1-3/+4
This modifies apk cache for indexes to be automatically refreshed periodically without explicit 'update' or '--update-cache' usage. The default is to do if-modified-since request if the local copy is older than 4 hours. This age can be changed with --cache-max-age. Using --update-cache will change this age to 60 seconds to make sure the cached copy is relatively new. The small age is in order to try to avoid downloading indexes second time when apk-tools is upgraded and apk re-execs after self-upgrade. Accordingly using explicitly 'apk update' will now enforce --force-refresh and request the very latest index by requesting any potential http proxy to do refresh too.
2017-04-28db: separate init from openKaarle Ritvanen1-0/+1
2017-02-27fetch: fix --recursive mode to work with pure virtual packagesTimo Teräs1-0/+1
The virtual package provider still needs to be explicitly given on command line.
2017-02-27db: allow overriding cache locationTimo Teräs1-0/+1
2017-02-27db: mount /proc for --root if it's not mounted, use mount syscallTimo Teräs1-1/+2
musl c-library does not work properly without /proc, and potentially running the scripts need this.
2017-02-15add support for pre and post commit hooksHenrik Riomar1-0/+1
This allows for instance integration of etckeeper [TT: Reorganized code a bit, and modified to use single directory commit_hooks.d with argument for script of stage.]
2016-07-22upgrade: improve self upgrade functionality a bitTimo Teräs1-1/+1
trigger it only if apk-tools can be upgrade, add test cases
2015-06-11speed improvements for database openingTimo Teräs1-0/+1
resolve reverse dependencies after all packages have been loaded, and avoid traversing the reverse name lists. now that we use automatic virtual packages (soname, pkg-config, etc.) the reverse dependency chains can become considerable longer than what it was when the rdependency construction code was originally written.
2015-04-07update: return failure if any mirror update failedNatanael Copa1-0/+1
fixes #4040
2015-03-11calculate and store checksum of xattrsTimo Teräs1-0/+1
ref #3027
2015-01-30always save 'world' with line feedsTimo Teräs1-1/+0
using space was for backwards compatibility with apk-tools 2.2.2 and earlier (from January 2012)
2014-11-01make 'mode, uid, gid' triplet separate atomized structTimo Teräs1-7/+10
there are only few combinations for that triplet, and they occur multiple times reducing the struct sizes a bit. make sane defaults and prepare to not write defaults to disk to reduce on-disk installed db size.
2014-10-08rework option parsing to have a group structureTimo Teräs1-4/+4
Add also a new 'commit' group that is the common options for all applets that can commit package changes.
2014-10-07db: rework directory permission handlingTimo Teräs1-3/+7
Apk used to reset directory permissions always, but this is undesirable if user has modified the permissions - especially during tmpfs boot. Though, it is desirable to update the permissions when packaging has changed permissions, or a new package is installed and the merged permission mask / owner changes. Thus the new code updates the permissions only if: 1) We are booting and directory is not in apkovl 2) The directory is modified by a package install/remove/upgrade 3) The filesystem directory permission matched database Additionally "apk fix --directory-permissions" can be used to reset all directory permissions to the database defaults. Fixes #2966
2014-10-06index: fix warning about package names without providerTimo Teräs1-1/+1
It's real only if there's a package with actual dependency (conflicts and install_if dependencies do not count).
2014-03-12audit: include all files in etc/apk in overlayTimo Teräs1-4/+9
This implements a new protected path flag '!' to include always matching entries in the backup mode (overlay). This is also turned on for etc/apk to include everything there in overlay, because the full list of repositories and signing keys need to be in overlay - just getting them from a package is not enough during bootstrap.
2013-06-18policy: new appletTimo Teräs1-1/+1
to show different versions of package and the repositories from which it is available from.
2013-06-18db: store repository tag names including leading @Timo Teräs1-1/+1
2013-06-18fix, info, ver: perform wildcard matchingTimo Teräs1-7/+3
ref #511
2013-06-18apk: use string array in applet mains, separate apk_name_foreach_matchingTimo Teräs1-2/+11
2013-06-17cache: implement progress bar (ref #1170)Timo Teräs1-1/+2
2013-06-17print: move progress printing to common functionsTimo Teräs1-2/+2
2013-06-17db, cache: do not use cache/tmp for downloadsTimo Teräs1-1/+1
instead use prefix for temporary files.
2013-06-17db: refactor repository file constructionTimo Teräs1-11/+9
Fixes also 'fetch' applet to prefer copying/linking to files from cache if possible.
2013-06-13solver: rewrite as deductive solver -- core featuresTimo Teräs1-1/+3
Implementing basic dependency handling, install_if and awareness of pinning.
2013-05-30db: unify handling of special packagesTimo Teräs1-4/+4
make cache a special kind of repository, and automatically cache special packages (virtual packages, or ones installed from command line). add test cases for handling virtual packages. fixes #1617.
2013-05-29db, info: allow packages to install files/symlinks to rootTimo Teräs1-0/+3
fixes #1578
2012-09-20apk: implement --progress-fd to write progress to a specified fdTimo Teräs1-2/+2
2012-07-16audit: fix protection mask of non-db directoriesTimo Teräs1-0/+2
If a directory has protection mask, but does not exist in db, we do not handle it right unless we calculate the protection mask by hand, or create temporary db dir entry for it. For simplicity create always the db dir entry -- depending on audit type we likely need to create it anyway. This commit also caches the db dir entry in the audit tree context to avoid duplicate lookups. ref #1241.
2012-02-29solver: merge apk_name_state to apk_nameTimo Teräs1-13/+9
apk_name_state is now quite small; and we avoid overhead of two pointers (+ malloc overhead) when we just make it part of apk_name. It also fixes some problems (that got introduced) where apk_name_state was not allocated.
2012-02-24solver, dot: elementary provides fixesTimo Teräs1-2/+2
implementation is still not near finished, but now at least it can handle it to a minimum degree. many cases are not done right yet, though. ref #574.
2012-02-24all: introduce apk_provides and use it in apk_nameTimo Teräs1-1/+10
in preparation for provides support. implements also some dependency satisfaction helper routines. ref #574.
2012-02-23audit, db: add etc/apk/protected_files.d and new audit featuresTimo Teräs1-10/+19
fixes #607. audit is now mostly rewritten for the new functionality. And has new features like --check-permissions, --recursive and --packages. $ROOT/etc/apk/protected_files.d/*.list can now contain additional protected paths, one path per line: +etc @etc/init.d -tmp + will include the directory as protected configuration directory. @ considers the directory protected, but will backup only symlinks. - removes any protection lbu should be modified to put include and exclude paths in etc/apk/protected_files.d/lbu.list. Additionally, some packages might provide their own listings. E.g. ssh might want to provide ssh.list with something like: +root/.ssh +home/*/.ssh
2012-02-22db, io: load repositories also from etc/apk/repositories.d/*.listTimo Teräs1-1/+1
Load additional repositories from $ROOT/etc/apk/repositories.d/*.list unless --repositories-file is given as parameter.
2012-02-22db, solver, io: scan cache items at startupTimo Teräs1-20/+6
It is faster to just scan the cache directory for existing packages at startup than trying to faccessat() them on demand. It also makes quite a few parts of the code more readable and simpler.
2012-02-15solver, db: repository pinning improvementsTimo Teräs1-2/+6
* solver internally calculates now using tags; not repository masks * installeddb now contains the tag name where the package came from -> we can now handle upgrades properly * the pinning is still a preference, and not strictly enforced; versioned dependencies may overrule preference
2012-02-14db: record file uid/gid/mode in installed dbTimo Teräs1-3/+7
2012-02-10db: smarter handling of directory owner, group and modeTimo Teräs1-2/+4
2012-01-31pkg, db: fix signature checking for files without control partTimo Teräs1-1/+1
Also clean up handling of signature failures for index files.
2012-01-17solver, upgrade: properly detect missing repository tagsTimo Teräs1-1/+1
* upgrade needs explicit check so we don't try self-upgrade (which would print additional messages on screen) * add can fix problems, so check against the new world * merge the code in few places
2012-01-12db: support line feed as 'world' dependency separatorTimo Teräs1-0/+1
* default writing the world with spaces if a space is found (for backwards compatibility) for now
2012-01-12solver: print repository tag when committing package changesTimo Teräs1-0/+1
2012-01-12db, solver: refuse committing changes if there is missing tagsTimo Teräs1-0/+1