summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2011-10-29solver, db: implement repository pinningTimo Teräs8-54/+145
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-10-24solver, pkg: implement versioned conflictsTimo Teräs5-20/+21
One can now say in dependency "!foo<2" which means, that if foo is installed, it needs to be >=2, but it's not a required dependency.
2011-10-20lua: adapt to new APINatanael Copa1-3/+4
Use new apk_blob_pull_dep instead of the old apk_dep_from_blob
2011-10-19pkg: convert struct apk_install_package flags to bitfieldTimo Teräs2-5/+3
2011-10-19pkg: introduce "replaces_priority"Timo Teräs3-11/+32
If two packages replace each other, the one with highes priority will keep the file. Additionally, if we have a package overriding another's file it's remembered and handled properly. This is essentially to allow "policy packages" which just overwrite certain (configuration) files from other package(s).
2011-10-18pkg, info: remember installed packages "replaces"Timo Teräs6-59/+119
"replaces" is now turned to a full dependency type list, so you can make package overwrite files only certain versions of the package (though, we should probably take this into account already at solution calculation phase). Also make 'info --replaces' print the "replaces" of the package. This is in preparation for the policy package support, which still requires "replacement priority" field to decide which packages' files get the preference.
2011-10-14solver: preference scoringTimo Teräs2-76/+113
Should now choose packages better if the best available version is uninstallable for some reason.
2011-09-28solver: return error code if things fail during package installTimo Teräs1-2/+1
2011-09-28solver: evaluate penalty of unsatisfiable name earlyTimo Teräs1-4/+16
this prunes the search tree considerably and fixes a speed regression introduced in an earlier commit.
2011-09-27pkg: fix dependency checking against non-installed packagesTimo Teräs1-0/+5
the solver requires this.
2011-09-22solver: fix backtrackingTimo Teräs1-32/+33
We need to refresh all name states after backtracking as options that were excluding due to topology ordering might have become available.
2011-09-20all: fix array size data type on 64 bitNatanael Copa2-4/+4
The array struct aligned size to 64 bit on x86_64 which caused bad things to happen. We use size_t to make sure the size element is correct regardless arch. Solution found by Timo.
2011-09-16solver: inheritable solver flagsTimo Teräs5-31/+126
allow per-name solver flags to be inheritable, and use them in self-upgrade, add -u and the fix applet. this gives more familiar behaviour for the upgrades.
2011-09-16fetch: reimplement -R after solver changesTimo Teräs1-17/+11
2011-09-16build: fix make install of shared lib and lua moduleNatanael Copa1-2/+2
2011-09-15lua: implement iterator with installed packagesNatanael Copa1-5/+43
2011-09-15lua: implement exists/is_installedNatanael Copa1-0/+33
Tests whether given package string is installed
2011-09-15lua: init fixesNatanael Copa1-0/+3
- call apk_atom_init() - if no open flag is specified, then default to read-only.
2011-09-15lua: implement who_ownsNatanael Copa1-0/+41
2011-09-15lua: open and close dbNatanael Copa1-2/+50
2011-09-15lua: initial db_openNatanael Copa1-1/+75
so far we just parse the db options
2011-09-15solver: fix sorting when solver is used multiple times within runTimo Teräs1-1/+2
namely this fixes apk upgrade without --no-self-upgrade when the solver is called twice.
2011-09-14lua: remove unneeded global varsNatanael Copa1-4/+0
2011-09-14build: support building lua module without shared libapkNatanael Copa1-3/+4
Use the build option SHARED_LIBAPK for building shared.
2011-09-14lua: typecast apk blob lenNatanael Copa1-6/+13
So we can build with -Werror
2011-09-14solver: make state pointers completely internalTimo Teräs5-41/+32
the only bit of information needed in solver commit is the "hard" topology sorting information for trigger ordering. fixes a bug in "apk del" which uses the state pointers to do intermediate calculations between solution solving and commit.
2011-09-14apk: remove unneeded global apk_screen_widthTimo Teräs1-1/+0
2011-09-14search: implement --exact and --allTimo Teräs1-53/+76
also optimize search to happen for enumeration of package names. fixes #39, fixes #560
2011-09-14search: implement --origin to print origin package nameTimo Teräs1-17/+32
fixes #714
2011-09-14solver, db: run triggers in dependency orderTimo Teräs6-15/+60
fixes #738
2011-09-14upgrade: --no-self-upgrade optionTimo Teräs2-6/+18
Use it to avoid self-upgrade loops in case something fails during the initial upgrade attempt.
2011-09-14upgrade: reimplement self-upgrade (after solver merge)Timo Teräs3-17/+42
2011-09-13all: update copyright year statementTimo Teräs40-40/+40
2011-09-13solver: add per-name specific flags, and fix the fix appletTimo Teräs5-48/+51
2011-09-09upgrade: fix context allocationTimo Teräs1-0/+1
2011-09-09pkg: consider script failure as non-fatalTimo Teräs1-2/+6
Make a loud warning if the script returns failure, but do not abort installation sequence because of that.
2011-09-09print: minor cleanup to indented writerTimo Teräs5-20/+18
2011-09-09del: fix recursive deletion and messages (after solver merge)Timo Teräs3-22/+158
Deduce the world dependencies to remove locally, and same for the additional messages about packages not deleted.
2011-09-09test: fix for updated solver apiTimo Teräs1-20/+14
2011-09-09applets: start using solver codeTimo Teräs18-1353/+532
still todo: - 'fix' is missing - 'del -R' does not work - 'upgrade' does not do self-upgrade first ... and a lot of testing.
2011-09-05solver: report 'complete' solutions with errorsTimo Teräs1-28/+27
Allow to select packages that conflict in case we are looking for errors. This allows 'add --force' to install (on boot) the set of packages with minimum conflicts.
2011-08-18solver: reintroduce install_if supportTimo Teräs1-46/+185
* each package name has two sorting positions, one which causes install_if triggers to be run, and other for bulk dependencies * fix also inverted ordering of package installations
2011-08-05solver: move topology sorting to solver codeTimo Teräs6-105/+104
this allows quite some optimizations to running time and memory requirements.
2011-08-01solver: generate proper error messagesTimo Teräs3-196/+248
* the solver no longer does look-ahead locking of names (could be possibly optimized later); instead names are now always ordered strictly to properly detect the package names which are unsolveable * basic error tests added, so we can see the most likely problem in dependencies easily
2011-07-27solver: don't consider package that we can't haveTimo Teräs1-2/+26
Packages that need (re-)installation but which are not available, are excluded now properly.
2011-07-27solver: permutate each preferred solution firstTimo Teräs1-57/+55
The first found solution is the most preferred one then.
2011-07-27test: don't crash if the expected files are not thereTimo Teräs1-4/+8
2011-07-27Makefile: make it possible to override pkg-config via PKG_CONFIGNatanael Copa1-3/+4
2011-07-26solver: new package selection logic (which is not yet used)Timo Teräs6-3/+826
* basic code for a backtracking, forward checking dependency satisfier * works better when there are tricky dependencies to solve (when can't just upgrade everything to most preferred versions) * the new code always evaluates all of 'world' constraints (old code just does incremental updates based on heuristics) * is probably somewhat slower than old code (probably unnoticeable difference in most cases) * makes easier to write support for provides and repository pinning * test applet and a bunch of test cases added which uses the new code * from the old feature set install_if is not yet implemented
2011-07-24dot: applet to generate the dot attributed graph language filesTimo Teräs3-1/+154
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