summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2012-02-22solver: lazily update name state in main loopTimo Teräs1-171/+125
2012-02-22solver: handle fix/reinstall betterTimo Teräs1-30/+36
In case someone did "fix --force" for package for which we have no APK available, we would uninstall the package instead of silently ignoring the request. This could mean worse things. So now we just consider unavailable packages a bad deal for reinstall requests. And will downgrade if necessary. But if we really don't have any APK available, we just skip the request but report it.
2012-02-22db: merge identical repositoriesTimo Teräs1-5/+17
Just in case same repository is mentioned with different tags.
2012-02-22solver: transitive dependency requiringTimo Teräs1-12/+41
If n+1 packages depend A, and A depend on B. Add n+1 dependencies to B. Otherwise if someone conflicts B, B might be left out. Leaving package unassigned is no longer a non-preferred action, this fixes the final test case that was failing. And with --force we might even install that scenario. Add also some debug checks.
2012-02-22solver: remove dependency merging; it's not worth itTimo Teräs1-77/+4
callgrind says it's more overhead than improvement. back jumping effectively prunes all bad trees. but can be added later if it becomes needed; due to e.g. provides support.
2012-02-22db, solver, io: scan cache items at startupTimo Teräs8-154/+207
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-21solver: make apk_score a 64-bit int for speedTimo Teräs1-9/+49
2012-02-21solver: remove unneeded flagTimo Teräs1-4/+1
2012-02-21solver: implement backwards jumping and various other optimizationsTimo Teräs3-151/+227
2012-02-20solver: rewrite backtracking and scoring systemTimo Teräs2-406/+695
* properly do absolute scoring now, the previous scoring where preference could get reduced could have caused incorrect early pruning of search tree * backtracking is now separated from package state, and first branching point is the decision if a name is left unassigned or if something _has_ to be assigned. this allows multiple future search tree optimizations like handling of common dependencies early. * merge common dependency names early to provide deeper forward checking.
2012-02-17apk: fix some unharmful leaks reported by valgrindTimo Teräs3-9/+19
2012-02-17solver: get rid of saved score in backtrackingTimo Teräs1-41/+57
also, discover late if package is needed or not.
2012-02-16solver: convert some package state flags to bitfieldsTimo Teräs1-11/+13
2012-02-16solver: name's unlocked chosen is always next package getting lockedTimo Teräs1-35/+28
Instead of "skipping" certain packages, we include them as-if required, and at expansion time we decide if they actually need to be considered for installation. This cleans up the expansion main loop a little bit and makes the code work together better.
2012-02-16solver: rework internals a bitTimo Teräs1-138/+190
* cleaned up little bit on the internal state machine * the decision applying mechanism now aborts early to avoid work if we are approaching bad solution candidate * package availability checking is now done on-demand; which could still be improved
2012-02-16solver: fix allowed pinning calculationTimo Teräs1-2/+2
2012-02-16solver: record repository tag, and flags in solutionTimo Teräs5-68/+113
name state could get overwritten later, so we can't use that when generating the changeset.
2012-02-16solver: remove an unneeded name state variableTimo Teräs1-5/+0
2012-02-15ver: handle pinned packages betterTimo Teräs1-7/+36
2012-02-15solver, db: repository pinning improvementsTimo Teräs7-65/+91
* 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-14ver: by default show only upgradeable packagesTimo Teräs1-0/+6
2012-02-14audit: check dirent mode, uid and gid if requestedTimo Teräs1-32/+71
2012-02-14db: record file uid/gid/mode in installed dbTimo Teräs3-5/+34
2012-02-10db: allow directory to have sticky bit, and suid/sgid bits setTimo Teräs1-1/+1
2012-02-10db, fix: more secure way to choose effective directory permissionsTimo Teräs3-11/+32
And implement --directory-permissions for fix-applet to reset all directory uid, gid and modes.
2012-02-10db: fix directory permissions recalculationTimo Teräs1-5/+8
2012-02-10db: smarter handling of directory owner, group and modeTimo Teräs2-16/+73
2012-02-10print: minimum screen width of 50Timo Teräs1-2/+3
2012-02-10blob: fix base64 decoding after previous optimizationsTimo Teräs1-1/+1
2012-02-08blob: optimize spn and cspnTimo Teräs4-12/+112
2012-02-08db: increase hash sizesTimo Teräs1-4/+4
2012-02-08blob: optimize digit and base64 decodingTimo Teräs1-41/+110
2012-02-01db: do not abort on bad repositoriesNatanael Copa1-5/+0
Only show a warning if we have a non-existing repository or bad repository signature but don't abort. This is not to break compat with behaviour in previous releases.
2012-02-01db: fix bug with --repositoryNatanael Copa1-9/+9
The 'r' variable is overwritten and no longer holds the repository number.
2012-01-31pkg, db: fix signature checking for files without control partTimo Teräs3-28/+48
Also clean up handling of signature failures for index files.
2012-01-20solver: fix regression from "calculate branch minimum penalty early"Timo Teräs1-7/+21
Forgot to reset per-name penalty when it got locked by apply_decision. This also fine tunes compare_package_preference() to always prefer packages specified on command line speeding up calculation certain complicated solutions.
2012-01-17lua: fix compile errorTimo Teräs1-1/+1
2012-01-17solver, upgrade: properly detect missing repository tagsTimo Teräs5-25/+32
* 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-17upgrade: make -a reset versioned dependencies like it used toTimo Teräs1-2/+21
regression from upgrade to the new solver system.
2012-01-17solver: fix change ordering of removed pages in relation to installedTimo Teräs1-5/+6
2012-01-17solver: calculate branch minimum penalty earlyTimo Teräs1-55/+97
Previously we would cache the penalty when evaluating the final solution, and adding that until we backtrack to first topology position changing that penalty. However, we can just keep track of minimum penalty based on name state, and add it. This allows us to bail out early on bad branches because we know in advance how things will turn out.
2012-01-17db: print dependencies referring to missing tags instead of tagsTimo Teräs1-6/+11
2012-01-16db: fix loading of world after previous commitsTimo Teräs1-3/+3
2012-01-13add: make repository tag pinning strongerTimo Teräs3-9/+21
Previously we would not upgrade just by doing "apk add foo@tag" if foo was already installed. It required explicit '-u'. This allows 'apk add' to explicitly prefer the newly specified pinning.
2012-01-12db: support line feed as 'world' dependency separatorTimo Teräs8-57/+70
* 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äs3-9/+34
2012-01-12db, solver: refuse committing changes if there is missing tagsTimo Teräs3-1/+20
2012-01-12add: fail if repository tag does not existTimo Teräs1-1/+9
2012-01-06pkg: fix writing of deps with tag and version specifierTimo Teräs1-4/+4
It is really name(@tag)(>=version).
2012-01-06add: print an error about malformed argumentsTimo Teräs1-1/+4