summaryrefslogtreecommitdiff
path: root/src/apk_database.h
AgeCommit message (Collapse)AuthorFilesLines
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
2011-12-27solver: report number of (mega)bytes usedTimo Teräs1-0/+1
2011-10-29solver, db: implement repository pinningTimo Teräs1-1/+8
Improves /etc/apk/repositories format so you can say: http://nl.alpinelinux.org/alpine/v2.3/main @edge http://nl.alpinelinux.org/alpine/edge/main @testing http://nl.alpinelinux.org/alpine/edge/testing After which you can pin dependencies to these tags using: apk add stableapp newapp@edge bleedingapp@testing Apk will now by default only use the untagged repositories, but adding a tag to specific dependency: 1. will prefer that tag for the name 2. allowing pulling in dependencies from that tag (though, it prefers untagged packages to satisfy deps if possible) fixes #575
2011-09-14solver, db: run triggers in dependency orderTimo Teräs1-1/+1
fixes #738
2011-09-14upgrade: reimplement self-upgrade (after solver merge)Timo Teräs1-0/+1
2011-09-13all: update copyright year statementTimo Teräs1-1/+1
2011-09-09applets: start using solver codeTimo Teräs1-8/+5
still todo: - 'fix' is missing - 'del -R' does not work - 'upgrade' does not do self-upgrade first ... and a lot of testing.
2011-07-24dot: applet to generate the dot attributed graph language filesTimo Teräs1-0/+1
This applet can be used to generate data for graphviz tools. Useful to visualize package dependencies, and possible errors in the repository. Usage examples: apk dot gnome-desktop | tred | dot -Tpng gnome-desktop.png -- to generate simplified dependency chart of gnome-desktop apk dot --errors | dot -Tpng index-errors.png -- to generate chart visualizing dependency errors in index
2011-07-16apk_database: add APK_DEFAULT_ARCH for ppc, ppc64 and arm portsWilliam Pitcock1-0/+6
2011-07-16apk_database: move APK_DEFAULT_ARCH to headers so that we can use it in ↵William Pitcock1-0/+10
version().
2011-05-27db: more fix for read-only cache remountingTimo Teräs1-1/+0
remount to read-write before trying to create the cache directory subdirs. fix a fd leak that might prevent remounting back to rw.
2011-04-14db: Allow override arch when using --rootNatanael Copa1-0/+1
This is so we can do x86 --root installs on x86_64 hosts. Using --arch without --root can make great damage so we only enable it if --root is used.
2011-04-07fetch: fix fetching of packages with archTimo Teräs1-0/+3
2011-03-16db, cache: automatically remount cache read-write when neededTimo Teräs1-0/+3
.. and back to read-only after finishing with modifications. fixes #512
2011-03-16db: handle arch similarly to stable branchTimo Teräs1-1/+1
if package arch is not set, do not append anything to repository. if arch is set, it is appended to repository.
2011-01-04pkg: recognize install_ifTimo Teräs1-0/+1
Parse install_if from package metadata and include it in the indexes. Also setup the reverse install_if dependencies when loading a database. ref #443. Actual install_if functionality is not yet implemented.
2011-01-03pkg, db: allow index with unsupported features to be loadedTimo Teräs1-1/+3
Just disable installation of packages using the new stuff. Also flag lower case package info fields as non-critical and allow installation even if that features is not supported.
2010-12-14various: use 'atoms' for certain package field and misc fixesTimo Teräs1-1/+2
- implement a hash table for commonly shared fields such as license, version and architecture - use macroes to print blobs or pkgname-pkgver strings - fix some old cruft
2010-12-14pkg, db: add preliminary support for arch fieldTimo Teräs1-1/+1
Architecture is now: - parsed from .PKGINFO - written to index and installed db - appended to repository URL when fetching files