Make pmdepend_t and pmdepmissing_t public
Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
19fcc74016
commit
7f6c1a76c6
8 changed files with 45 additions and 114 deletions
|
@ -60,6 +60,22 @@ typedef enum _pmpkgreason_t {
|
||||||
PM_PKG_REASON_DEPEND = 1
|
PM_PKG_REASON_DEPEND = 1
|
||||||
} pmpkgreason_t;
|
} pmpkgreason_t;
|
||||||
|
|
||||||
|
/** Types of version constraints in dependency specs. */
|
||||||
|
typedef enum _pmdepmod_t {
|
||||||
|
/** No version constraint */
|
||||||
|
PM_DEP_MOD_ANY = 1,
|
||||||
|
/** Test version equality (package=x.y.z) */
|
||||||
|
PM_DEP_MOD_EQ,
|
||||||
|
/** Test for at least a version (package>=x.y.z) */
|
||||||
|
PM_DEP_MOD_GE,
|
||||||
|
/** Test for at most a version (package<=x.y.z) */
|
||||||
|
PM_DEP_MOD_LE,
|
||||||
|
/** Test for greater than some version (package>x.y.z) */
|
||||||
|
PM_DEP_MOD_GT,
|
||||||
|
/** Test for less than some version (package<x.y.z) */
|
||||||
|
PM_DEP_MOD_LT
|
||||||
|
} pmdepmod_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* File conflict type.
|
* File conflict type.
|
||||||
* Whether the conflict results from a file existing on the filesystem, or with
|
* Whether the conflict results from a file existing on the filesystem, or with
|
||||||
|
@ -90,8 +106,22 @@ typedef struct __pmpkg_t pmpkg_t;
|
||||||
typedef struct __pmdelta_t pmdelta_t;
|
typedef struct __pmdelta_t pmdelta_t;
|
||||||
typedef struct __pmgrp_t pmgrp_t;
|
typedef struct __pmgrp_t pmgrp_t;
|
||||||
typedef struct __pmtrans_t pmtrans_t;
|
typedef struct __pmtrans_t pmtrans_t;
|
||||||
typedef struct __pmdepend_t pmdepend_t;
|
|
||||||
typedef struct __pmdepmissing_t pmdepmissing_t;
|
/** Dependency */
|
||||||
|
typedef struct _pmdepend_t {
|
||||||
|
char *name;
|
||||||
|
char *version;
|
||||||
|
unsigned long name_hash;
|
||||||
|
pmdepmod_t mod;
|
||||||
|
} pmdepend_t;
|
||||||
|
|
||||||
|
/** Missing dependency */
|
||||||
|
typedef struct _pmdepmissing_t {
|
||||||
|
char *target;
|
||||||
|
pmdepend_t *depend;
|
||||||
|
/* this is used in case of remove dependency error only */
|
||||||
|
char *causingpkg;
|
||||||
|
} pmdepmissing_t;
|
||||||
|
|
||||||
/** Conflict */
|
/** Conflict */
|
||||||
typedef struct _pmconflict_t {
|
typedef struct _pmconflict_t {
|
||||||
|
@ -906,55 +936,14 @@ int alpm_remove_pkg(pmhandle_t *handle, pmpkg_t *pkg);
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** Types of version constraints in dependency specs. */
|
|
||||||
typedef enum _pmdepmod_t {
|
|
||||||
/** No version constraint */
|
|
||||||
PM_DEP_MOD_ANY = 1,
|
|
||||||
/** Test version equality (package=x.y.z) */
|
|
||||||
PM_DEP_MOD_EQ,
|
|
||||||
/** Test for at least a version (package>=x.y.z) */
|
|
||||||
PM_DEP_MOD_GE,
|
|
||||||
/** Test for at most a version (package<=x.y.z) */
|
|
||||||
PM_DEP_MOD_LE,
|
|
||||||
/** Test for greater than some version (package>x.y.z) */
|
|
||||||
PM_DEP_MOD_GT,
|
|
||||||
/** Test for less than some version (package<x.y.z) */
|
|
||||||
PM_DEP_MOD_LT
|
|
||||||
} pmdepmod_t;
|
|
||||||
|
|
||||||
alpm_list_t *alpm_checkdeps(pmhandle_t *handle, alpm_list_t *pkglist,
|
alpm_list_t *alpm_checkdeps(pmhandle_t *handle, alpm_list_t *pkglist,
|
||||||
alpm_list_t *remove, alpm_list_t *upgrade, int reversedeps);
|
alpm_list_t *remove, alpm_list_t *upgrade, int reversedeps);
|
||||||
pmpkg_t *alpm_find_satisfier(alpm_list_t *pkgs, const char *depstring);
|
pmpkg_t *alpm_find_satisfier(alpm_list_t *pkgs, const char *depstring);
|
||||||
pmpkg_t *alpm_find_dbs_satisfier(pmhandle_t *handle,
|
pmpkg_t *alpm_find_dbs_satisfier(pmhandle_t *handle,
|
||||||
alpm_list_t *dbs, const char *depstring);
|
alpm_list_t *dbs, const char *depstring);
|
||||||
|
|
||||||
const char *alpm_miss_get_target(const pmdepmissing_t *miss);
|
|
||||||
pmdepend_t *alpm_miss_get_dep(pmdepmissing_t *miss);
|
|
||||||
const char *alpm_miss_get_causingpkg(const pmdepmissing_t *miss);
|
|
||||||
|
|
||||||
alpm_list_t *alpm_checkconflicts(pmhandle_t *handle, alpm_list_t *pkglist);
|
alpm_list_t *alpm_checkconflicts(pmhandle_t *handle, alpm_list_t *pkglist);
|
||||||
|
|
||||||
/** Returns the type of version constraint.
|
|
||||||
* @param dep a dependency info structure
|
|
||||||
* @return the type of version constraint (PM_DEP_MOD_ANY if no version
|
|
||||||
* is specified).
|
|
||||||
*/
|
|
||||||
pmdepmod_t alpm_dep_get_mod(const pmdepend_t *dep);
|
|
||||||
|
|
||||||
/** Returns the package name of a dependency constraint.
|
|
||||||
* @param dep a dependency info structure
|
|
||||||
* @return a pointer to an internal string.
|
|
||||||
*/
|
|
||||||
const char *alpm_dep_get_name(const pmdepend_t *dep);
|
|
||||||
|
|
||||||
/** Returns the version specified by a dependency constraint.
|
|
||||||
* The version information is returned as a string in the same format
|
|
||||||
* as given by alpm_pkg_get_version().
|
|
||||||
* @param dep a dependency info structure
|
|
||||||
* @return a pointer to an internal string.
|
|
||||||
*/
|
|
||||||
const char *alpm_dep_get_version(const pmdepend_t *dep);
|
|
||||||
|
|
||||||
/** Returns a newly allocated string representing the dependency information.
|
/** Returns a newly allocated string representing the dependency information.
|
||||||
* @param dep a dependency info structure
|
* @param dep a dependency info structure
|
||||||
* @return a formatted string, e.g. "glibc>=2.12"
|
* @return a formatted string, e.g. "glibc>=2.12"
|
||||||
|
|
|
@ -719,7 +719,7 @@ int _alpm_resolvedeps(pmhandle_t *handle, alpm_list_t *localpkgs, pmpkg_t *pkg,
|
||||||
|
|
||||||
for(j = deps; j; j = j->next) {
|
for(j = deps; j; j = j->next) {
|
||||||
pmdepmissing_t *miss = j->data;
|
pmdepmissing_t *miss = j->data;
|
||||||
pmdepend_t *missdep = alpm_miss_get_dep(miss);
|
pmdepend_t *missdep = miss->depend;
|
||||||
/* check if one of the packages in the [*packages] list already satisfies
|
/* check if one of the packages in the [*packages] list already satisfies
|
||||||
* this dependency */
|
* this dependency */
|
||||||
if(find_dep_satisfier(*packages, missdep)) {
|
if(find_dep_satisfier(*packages, missdep)) {
|
||||||
|
@ -764,42 +764,6 @@ int _alpm_resolvedeps(pmhandle_t *handle, alpm_list_t *localpkgs, pmpkg_t *pkg,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char SYMEXPORT *alpm_miss_get_target(const pmdepmissing_t *miss)
|
|
||||||
{
|
|
||||||
ASSERT(miss != NULL, return NULL);
|
|
||||||
return miss->target;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char SYMEXPORT *alpm_miss_get_causingpkg(const pmdepmissing_t *miss)
|
|
||||||
{
|
|
||||||
ASSERT(miss != NULL, return NULL);
|
|
||||||
return miss->causingpkg;
|
|
||||||
}
|
|
||||||
|
|
||||||
pmdepend_t SYMEXPORT *alpm_miss_get_dep(pmdepmissing_t *miss)
|
|
||||||
{
|
|
||||||
ASSERT(miss != NULL, return NULL);
|
|
||||||
return miss->depend;
|
|
||||||
}
|
|
||||||
|
|
||||||
pmdepmod_t SYMEXPORT alpm_dep_get_mod(const pmdepend_t *dep)
|
|
||||||
{
|
|
||||||
ASSERT(dep != NULL, return -1);
|
|
||||||
return dep->mod;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char SYMEXPORT *alpm_dep_get_name(const pmdepend_t *dep)
|
|
||||||
{
|
|
||||||
ASSERT(dep != NULL, return NULL);
|
|
||||||
return dep->name;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char SYMEXPORT *alpm_dep_get_version(const pmdepend_t *dep)
|
|
||||||
{
|
|
||||||
ASSERT(dep != NULL, return NULL);
|
|
||||||
return dep->version;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Reverse of splitdep; make a dep string from a pmdepend_t struct.
|
/** Reverse of splitdep; make a dep string from a pmdepend_t struct.
|
||||||
* The string must be freed!
|
* The string must be freed!
|
||||||
* @param dep the depend to turn into a string
|
* @param dep the depend to turn into a string
|
||||||
|
|
|
@ -27,21 +27,6 @@
|
||||||
#include "package.h"
|
#include "package.h"
|
||||||
#include "alpm.h"
|
#include "alpm.h"
|
||||||
|
|
||||||
/* Dependency */
|
|
||||||
struct __pmdepend_t {
|
|
||||||
char *name;
|
|
||||||
char *version;
|
|
||||||
unsigned long name_hash;
|
|
||||||
pmdepmod_t mod;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Missing dependency */
|
|
||||||
struct __pmdepmissing_t {
|
|
||||||
char *target;
|
|
||||||
pmdepend_t *depend;
|
|
||||||
char *causingpkg; /* this is used in case of remove dependency error only */
|
|
||||||
};
|
|
||||||
|
|
||||||
void _alpm_dep_free(pmdepend_t *dep);
|
void _alpm_dep_free(pmdepend_t *dep);
|
||||||
pmdepend_t *_alpm_dep_dup(const pmdepend_t *dep);
|
pmdepend_t *_alpm_dep_dup(const pmdepend_t *dep);
|
||||||
void _alpm_depmiss_free(pmdepmissing_t *miss);
|
void _alpm_depmiss_free(pmdepmissing_t *miss);
|
||||||
|
|
|
@ -115,10 +115,8 @@ int pacman_remove(alpm_list_t *targets)
|
||||||
case PM_ERR_UNSATISFIED_DEPS:
|
case PM_ERR_UNSATISFIED_DEPS:
|
||||||
for(i = data; i; i = alpm_list_next(i)) {
|
for(i = data; i; i = alpm_list_next(i)) {
|
||||||
pmdepmissing_t *miss = alpm_list_getdata(i);
|
pmdepmissing_t *miss = alpm_list_getdata(i);
|
||||||
pmdepend_t *dep = alpm_miss_get_dep(miss);
|
char *depstring = alpm_dep_compute_string(miss->depend);
|
||||||
char *depstring = alpm_dep_compute_string(dep);
|
printf(_(":: %s: requires %s\n"), miss->target, depstring);
|
||||||
printf(_(":: %s: requires %s\n"), alpm_miss_get_target(miss),
|
|
||||||
depstring);
|
|
||||||
free(depstring);
|
free(depstring);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -785,10 +785,8 @@ static int sync_trans(alpm_list_t *targets)
|
||||||
case PM_ERR_UNSATISFIED_DEPS:
|
case PM_ERR_UNSATISFIED_DEPS:
|
||||||
for(i = data; i; i = alpm_list_next(i)) {
|
for(i = data; i; i = alpm_list_next(i)) {
|
||||||
pmdepmissing_t *miss = alpm_list_getdata(i);
|
pmdepmissing_t *miss = alpm_list_getdata(i);
|
||||||
pmdepend_t *dep = alpm_miss_get_dep(miss);
|
char *depstring = alpm_dep_compute_string(miss->depend);
|
||||||
char *depstring = alpm_dep_compute_string(dep);
|
printf(_(":: %s: requires %s\n"), miss->target, depstring);
|
||||||
printf(_(":: %s: requires %s\n"), alpm_miss_get_target(miss),
|
|
||||||
depstring);
|
|
||||||
free(depstring);
|
free(depstring);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -107,14 +107,12 @@ int pacman_upgrade(alpm_list_t *targets)
|
||||||
case PM_ERR_UNSATISFIED_DEPS:
|
case PM_ERR_UNSATISFIED_DEPS:
|
||||||
for(i = data; i; i = alpm_list_next(i)) {
|
for(i = data; i; i = alpm_list_next(i)) {
|
||||||
pmdepmissing_t *miss = alpm_list_getdata(i);
|
pmdepmissing_t *miss = alpm_list_getdata(i);
|
||||||
pmdepend_t *dep = alpm_miss_get_dep(miss);
|
char *depstring = alpm_dep_compute_string(miss->depend);
|
||||||
char *depstring = alpm_dep_compute_string(dep);
|
|
||||||
|
|
||||||
/* TODO indicate if the error was a virtual package or not:
|
/* TODO indicate if the error was a virtual package or not:
|
||||||
* :: %s: requires %s, provided by %s
|
* :: %s: requires %s, provided by %s
|
||||||
*/
|
*/
|
||||||
printf(_(":: %s: requires %s\n"), alpm_miss_get_target(miss),
|
printf(_(":: %s: requires %s\n"), miss->target, depstring);
|
||||||
depstring);
|
|
||||||
free(depstring);
|
free(depstring);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -290,7 +290,7 @@ static void walk_deps(pmpkg_t *pkg, int depth)
|
||||||
for(i = alpm_pkg_get_depends(pkg); i; i = alpm_list_next(i)) {
|
for(i = alpm_pkg_get_depends(pkg); i; i = alpm_list_next(i)) {
|
||||||
pmdepend_t *depend = alpm_list_getdata(i);
|
pmdepend_t *depend = alpm_list_getdata(i);
|
||||||
pmpkg_t *provider = alpm_find_satisfier(alpm_db_get_pkgcache(db_local),
|
pmpkg_t *provider = alpm_find_satisfier(alpm_db_get_pkgcache(db_local),
|
||||||
alpm_dep_get_name(depend));
|
depend->name);
|
||||||
|
|
||||||
if(provider) {
|
if(provider) {
|
||||||
const char *provname = alpm_pkg_get_name(provider);
|
const char *provname = alpm_pkg_get_name(provider);
|
||||||
|
@ -299,15 +299,15 @@ static void walk_deps(pmpkg_t *pkg, int depth)
|
||||||
/* if we've already seen this package, don't print in "unique" output
|
/* if we've already seen this package, don't print in "unique" output
|
||||||
* and don't recurse */
|
* and don't recurse */
|
||||||
if(!unique) {
|
if(!unique) {
|
||||||
print(alpm_pkg_get_name(pkg), provname, alpm_dep_get_name(depend), depth);
|
print(alpm_pkg_get_name(pkg), provname, depend->name, depth);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print(alpm_pkg_get_name(pkg), provname, alpm_dep_get_name(depend), depth);
|
print(alpm_pkg_get_name(pkg), provname, depend->name, depth);
|
||||||
walk_deps(provider, depth + 1);
|
walk_deps(provider, depth + 1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* unresolvable package */
|
/* unresolvable package */
|
||||||
print(alpm_pkg_get_name(pkg), NULL, alpm_dep_get_name(depend), depth);
|
print(alpm_pkg_get_name(pkg), NULL, depend->name, depth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,9 +101,8 @@ static int checkdeps(alpm_list_t *pkglist)
|
||||||
data = alpm_checkdeps(handle, pkglist, NULL, pkglist, 0);
|
data = alpm_checkdeps(handle, pkglist, NULL, pkglist, 0);
|
||||||
for(i = data; i; i = alpm_list_next(i)) {
|
for(i = data; i; i = alpm_list_next(i)) {
|
||||||
pmdepmissing_t *miss = alpm_list_getdata(i);
|
pmdepmissing_t *miss = alpm_list_getdata(i);
|
||||||
pmdepend_t *dep = alpm_miss_get_dep(miss);
|
char *depstring = alpm_dep_compute_string(miss->depend);
|
||||||
char *depstring = alpm_dep_compute_string(dep);
|
printf("missing dependency for %s : %s\n", miss->target,
|
||||||
printf("missing dependency for %s : %s\n", alpm_miss_get_target(miss),
|
|
||||||
depstring);
|
depstring);
|
||||||
free(depstring);
|
free(depstring);
|
||||||
ret++;
|
ret++;
|
||||||
|
|
Loading…
Add table
Reference in a new issue