apk_solver.h 1.72 KB
Newer Older
1 2 3
/* apk_solver.h - Alpine Package Keeper (APK)
 *
 * Copyright (C) 2005-2008 Natanael Copa <n@tanael.org>
4
 * Copyright (C) 2008-2013 Timo Teräs <timo.teras@iki.fi>
5 6 7 8 9 10 11 12 13 14
 * All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 as published
 * by the Free Software Foundation. See http://www.gnu.org/ for details.
 */

#ifndef APK_SOLVER_H
#define APK_SOLVER_H

15 16 17
struct apk_name;
struct apk_package;

18
struct apk_change {
19 20 21 22
	struct apk_package *old_pkg;
	struct apk_package *new_pkg;
	unsigned old_repository_tag : 15;
	unsigned new_repository_tag : 15;
23
	unsigned reinstall : 1;
24 25 26 27
};
APK_ARRAY(apk_change_array, struct apk_change);

struct apk_changeset {
28 29
	int num_install, num_remove, num_adjust;
	int num_total_changes;
30 31 32
	struct apk_change_array *changes;
};

33 34 35
#define APK_SOLVERF_UPGRADE		0x0001
#define APK_SOLVERF_AVAILABLE		0x0002
#define APK_SOLVERF_REINSTALL		0x0004
36
#define APK_SOLVERF_LATEST		0x0008
37
#define APK_SOLVERF_IGNORE_CONFLICT	0x0010
38

39
void apk_solver_set_name_flags(struct apk_name *name,
40 41
			       unsigned short solver_flags,
			       unsigned short solver_flags_inheritable);
42 43 44 45
int apk_solver_solve(struct apk_database *db,
		     unsigned short solver_flags,
		     struct apk_dependency_array *world,
		     struct apk_changeset *changeset);
46

47 48 49 50
int apk_solver_commit_changeset(struct apk_database *db,
				struct apk_changeset *changeset,
				struct apk_dependency_array *world);
void apk_solver_print_errors(struct apk_database *db,
51 52 53 54
			     struct apk_changeset *changeset,
			     struct apk_dependency_array *world);

int apk_solver_commit(struct apk_database *db, unsigned short solver_flags,
55
		      struct apk_dependency_array *world);
56 57 58

#endif