Repository package index format 1.2.

The pkg index now stores all package objects from props.plist, so that
xbps-repo(8) doesn't have to access the target binpkg anymore.
This commit is contained in:
Juan RP
2011-05-27 17:32:42 +02:00
parent 604b315cfa
commit cfa637db48
8 changed files with 53 additions and 124 deletions

View File

@@ -55,8 +55,7 @@ void fetch_file_progress_cb(void *);
/* From util.c */
int show_pkg_files(prop_dictionary_t);
void show_pkg_info(prop_dictionary_t, bool);
void show_pkg_info_only_repo(prop_dictionary_t);
void show_pkg_info(prop_dictionary_t);
int show_pkg_namedesc(prop_object_t, void *, bool *);
int list_strings_in_array(prop_object_t, void *, bool *);
int list_strings_sep_in_array(prop_object_t, void *, bool *);

View File

@@ -47,7 +47,7 @@ show_pkg_info_from_metadir(const char *pkgname)
pkgpropsd = xbps_find_pkg_in_dict_by_name(regpkgd,
"properties", pkgname);
if (pkgpropsd == NULL) {
show_pkg_info(d, false);
show_pkg_info(d);
prop_object_release(d);
goto out;
}
@@ -58,7 +58,7 @@ show_pkg_info_from_metadir(const char *pkgname)
if (prop_dictionary_get(pkgpropsd, "provides"))
prop_dictionary_set_bool(d, "virtual-prefer", true);
show_pkg_info(d, false);
show_pkg_info(d);
prop_object_release(d);
out:
xbps_regpkgdb_dictionary_release();

View File

@@ -39,152 +39,109 @@
struct object_info {
const char *key;
const char *descr;
const char *sep;
bool from_repo;
};
static const struct object_info obj_info[] = {
{
.key = "repository",
.descr = "Repository: "
},
{
.key = "filename",
.descr = "Binary package:",
.sep = NULL,
.from_repo = true
.descr = "Binary package: "
},
{
.key = "filename-size",
.descr = "Binary package size",
.sep = NULL,
.from_repo = true
.descr = "Binary package size"
},
{
.key = "filename-sha256",
.descr = "Binary package SHA256:",
.sep = NULL,
.from_repo = true
.descr = "Binary package SHA256: "
},
{
.key = "archive-compression-type",
.descr = "Binary package compression type:",
.sep = NULL,
.from_repo = false
.descr = "Binary package compression type: "
},
{
.key = "pkgname",
.descr = "Package:",
.sep = NULL,
.from_repo = false
.descr = "Package: "
},
{
.key = "installed_size",
.descr = "Installed size",
.sep = NULL,
.from_repo = false
.descr = "Installed size"
},
{
.key = "maintainer",
.descr = "Maintainer:",
.sep = NULL,
.from_repo = false
.descr = "Maintainer: "
},
{
.key = "architecture",
.descr = "Architecture:",
.sep = NULL,
.from_repo = false
.descr = "Architecture: "
},
{
.key = "version",
.descr = "Version:",
.sep = NULL,
.from_repo = false
.descr = "Version: "
},
{
.key = "homepage",
.descr = "Upstream URL:",
.sep = NULL,
.from_repo = false
.descr = "Upstream URL: "
},
{
.key = "license",
.descr = "License(s):",
.sep = NULL,
.from_repo = false
.descr = "License(s): "
},
{
.key = "build_date",
.descr = "Package build date:",
.sep = NULL,
.from_repo = false
.descr = "Package build date: "
},
{
.key = "preserve",
.descr = "Preserve files",
.sep = NULL,
.from_repo = false
.descr = "Preserve files"
},
{
.key = "replaces",
.descr = "Replaces these packages:",
.sep = NULL,
.from_repo = false
.descr = "Replaces these packages"
},
{
.key = "provides",
.descr = "Provides virtual packages:",
.sep = NULL,
.from_repo = false
.descr = "Provides virtual packages"
},
{
.key = "conflicts",
.descr = "Conflicts with:",
.sep = NULL,
.from_repo = false
.descr = "Conflicts with"
},
{
.key = "hold",
.descr = "Hold update",
.sep = NULL,
.from_repo = false
.descr = "Hold update"
},
{
.key = "update-first",
.descr = "Always update first",
.sep = NULL,
.from_repo = false
.descr = "Always update first"
},
{
.key = "virtual-prefer",
.descr = "Virtual packages enabled",
.sep = NULL,
.from_repo = false
.descr = "Virtual packages enabled"
},
{
.key = "conf_files",
.descr = "Configuration files:\n",
.sep = " ",
.from_repo = false
.descr = "Configuration files"
},
{
.key = "short_desc",
.descr = "Description:",
.sep = NULL,
.from_repo = false },
.descr = "Description: "
},
{
.key = "long_desc",
.descr = " ",
.sep = NULL,
.from_repo = false
.descr = "",
},
{
.key = NULL,
.descr = NULL,
.sep = NULL,
.from_repo = false
.descr = NULL
}
};
void
show_pkg_info(prop_dictionary_t dict, bool only_repo)
show_pkg_info(prop_dictionary_t dict)
{
const struct object_info *oip;
prop_object_t obj;
@@ -194,13 +151,10 @@ show_pkg_info(prop_dictionary_t dict, bool only_repo)
assert(prop_dictionary_count(dict) != 0);
for (oip = obj_info; oip->key != NULL; oip++) {
if (only_repo && oip->from_repo == false)
continue;
obj = prop_dictionary_get(dict, oip->key);
switch (prop_object_type(obj)) {
case PROP_TYPE_STRING:
printf("%s %s\n", oip->descr,
printf("%s%s\n", oip->descr,
prop_string_cstring_nocopy(obj));
break;
case PROP_TYPE_NUMBER:
@@ -217,9 +171,9 @@ show_pkg_info(prop_dictionary_t dict, bool only_repo)
prop_bool_true(obj) ? "yes" : "no");
break;
case PROP_TYPE_ARRAY:
printf("%s ", oip->descr);
printf("%s:\n", oip->descr);
(void)xbps_callback_array_iter_in_dict(dict, oip->key,
list_strings_sep_in_array, __UNCONST(oip->sep));
list_strings_sep_in_array, __UNCONST(" "));
break;
default:
break;