Commit Graph

549 Commits (8d4d68d8187abc52bad0549f9edafbd8cba2e358)

Author SHA1 Message Date
Timo Teräs 8d4d68d818 pkg: convert struct apk_install_package flags to bitfield 2011-10-19 15:26:55 -04:00
Timo Teräs 89d003f8c2 pkg: introduce "replaces_priority"
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-19 11:38:23 -04:00
Timo Teräs a787038dbe pkg, info: remember installed packages "replaces"
"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-18 18:11:26 -04:00
Timo Teräs afd854a3e2 solver: preference scoring
Should now choose packages better if the best available version
is uninstallable for some reason.
2011-10-14 21:01:43 +03:00
Timo Teräs 3f098e7d8c solver: return error code if things fail during package install 2011-09-28 14:04:02 +03:00
Timo Teräs f76535cb5e solver: evaluate penalty of unsatisfiable name early
this prunes the search tree considerably and fixes a speed
regression introduced in an earlier commit.
2011-09-28 08:39:52 +03:00
Timo Teräs f4ac687a8a pkg: fix dependency checking against non-installed packages
the solver requires this.
2011-09-27 11:38:16 +03:00
Timo Teräs 012bcbe41c solver: fix backtracking
We need to refresh all name states after backtracking as options
that were excluding due to topology ordering might have become
available.
2011-09-22 13:09:23 +03:00
Natanael Copa 78a372464b all: fix array size data type on 64 bit
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-20 16:13:20 +02:00
Timo Teräs 51999c97da solver: inheritable solver flags
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-16 17:10:50 +03:00
Timo Teräs bcd0d45a49 fetch: reimplement -R after solver changes 2011-09-16 14:09:41 +03:00
Natanael Copa 17918f6765 build: fix make install of shared lib and lua module 2011-09-16 07:12:45 +00:00
Natanael Copa 391cd01b41 lua: implement iterator with installed packages 2011-09-15 17:13:08 +00:00
Natanael Copa 9e60a72b92 lua: implement exists/is_installed
Tests whether given package string is installed
2011-09-15 17:13:08 +00:00
Natanael Copa c79302d973 lua: init fixes
- call apk_atom_init()
- if no open flag is specified, then default to read-only.
2011-09-15 17:13:08 +00:00
Natanael Copa 08533d74fa lua: implement who_owns 2011-09-15 17:13:07 +00:00
Natanael Copa 17b1e1aeca lua: open and close db 2011-09-15 17:13:07 +00:00
Natanael Copa d7374642c2 lua: initial db_open
so far we just parse the db options
2011-09-15 17:13:07 +00:00
Timo Teräs cca6a7e332 solver: fix sorting when solver is used multiple times within run
namely this fixes apk upgrade without --no-self-upgrade when
the solver is called twice.
2011-09-15 09:49:25 +03:00
Natanael Copa 21a213c212 lua: remove unneeded global vars 2011-09-14 14:28:36 +00:00
Natanael Copa a4f98dd62a build: tell git to ignore config.mk 2011-09-14 14:20:29 +00:00
Natanael Copa 8e887db746 build: support building lua module without shared libapk
Use the build option SHARED_LIBAPK for building shared.
2011-09-14 14:18:23 +00:00
Natanael Copa 3cdee6a406 lua: typecast apk blob len
So we can build with -Werror
2011-09-14 14:14:22 +00:00
Timo Teräs 803f55ece5 solver: make state pointers completely internal
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-14 16:48:28 +03:00
Timo Teräs 6b1a55825a apk: remove unneeded global apk_screen_width 2011-09-14 15:39:53 +03:00
Timo Teräs 4803444731 search: implement --exact and --all
also optimize search to happen for enumeration of package names.
fixes #39, fixes #560
2011-09-14 15:26:43 +03:00
Timo Teräs 3197d0f64a search: implement --origin to print origin package name
fixes #714
2011-09-14 11:56:44 +03:00
Timo Teräs e34d2ed5fd solver, db: run triggers in dependency order
fixes #738
2011-09-14 11:30:35 +03:00
Timo Teräs f95e7e5850 upgrade: --no-self-upgrade option
Use it to avoid self-upgrade loops in case something fails during
the initial upgrade attempt.
2011-09-14 11:07:45 +03:00
Timo Teräs f51aa6d42d upgrade: reimplement self-upgrade (after solver merge) 2011-09-14 10:57:51 +03:00
Timo Teräs 1817b0a3c3 all: update copyright year statement 2011-09-13 11:53:01 +03:00
Timo Teräs c6d9962d81 solver: add per-name specific flags, and fix the fix applet 2011-09-13 11:47:34 +03:00
Timo Teräs b42421722e upgrade: fix context allocation 2011-09-09 22:00:49 +03:00
Timo Teräs 7d5cd2c8a0 pkg: consider script failure as non-fatal
Make a loud warning if the script returns failure, but do not
abort installation sequence because of that.
2011-09-09 20:16:48 +03:00
Timo Teräs bfd53b59d2 print: minor cleanup to indented writer 2011-09-09 20:06:10 +03:00
Timo Teräs 4bf13c3d9a del: fix recursive deletion and messages (after solver merge)
Deduce the world dependencies to remove locally, and same for the
additional messages about packages not deleted.
2011-09-09 19:41:19 +03:00
Timo Teräs 31e4f58894 test: fix for updated solver api 2011-09-09 16:52:49 +03:00
Timo Teräs a5a7021658 applets: start using solver code
still todo:
  - 'fix' is missing
  - 'del -R' does not work
  - 'upgrade' does not do self-upgrade first

... and a lot of testing.
2011-09-09 16:32:31 +03:00
Timo Teräs 0e24207c2e solver: report 'complete' solutions with errors
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-09-05 11:04:00 +03:00
Timo Teräs 1fb1afc5c2 solver: reintroduce install_if support
* 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-18 13:08:27 +03:00
Timo Teräs 48d368e7d5 solver: move topology sorting to solver code
this allows quite some optimizations to running time and memory
requirements.
2011-08-05 14:34:58 +03:00
Timo Teräs a5146f1b6c solver: generate proper error messages
* 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-08-01 16:21:47 +03:00
Timo Teräs 1a04425fad solver: don't consider package that we can't have
Packages that need (re-)installation but which are not available,
are excluded now properly.
2011-07-27 22:10:44 +03:00
Timo Teräs ad45a6de17 solver: permutate each preferred solution first
The first found solution is the most preferred one then.
2011-07-27 20:45:38 +03:00
Timo Teräs 034c02f0de test: don't crash if the expected files are not there 2011-07-27 15:25:58 +03:00
Natanael Copa 9cd57a8fc7 Makefile: make it possible to override pkg-config via PKG_CONFIG 2011-07-27 05:56:38 +00:00
Timo Teräs 79b53d4d76 solver: new package selection logic (which is not yet used)
* 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-26 17:08:43 +03:00
Timo Teräs 169cb3a97e dot: applet to generate the dot attributed graph language files
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-24 14:56:52 +03:00
Timo Teräs 04950974bf ver: database is not needed for version string checking and tests 2011-07-24 14:24:58 +03:00
Timo Teräs 6b24f3c399 apk: improve indented printing
* fixup the help messages to align up properly
 * refresh screen width on SIGWINCH
2011-07-22 12:08:35 +03:00