Remove PackagesOnHold from xbps.conf; use xbps-pkgdb -m hold|unhold instead.
To put a package on hold mode: $ xbps-pkgdb -m hold foo To unhold the package: $ xbps-pkgdb -m unhold foo To list packages on hold mode: $ xbps-query -H This also close #12 from github.
This commit is contained in:
		@@ -40,34 +40,38 @@ usage(bool fail)
 | 
			
		||||
	fprintf(stdout,
 | 
			
		||||
	    "Usage: xbps-pkgdb [OPTIONS] [PKGNAME...]\n\n"
 | 
			
		||||
	    "OPTIONS\n"
 | 
			
		||||
	    " -a --all                   Process all packages\n"
 | 
			
		||||
	    " -C --config <file>         Full path to configuration file\n"
 | 
			
		||||
	    " -d --debug                 Debug mode shown to stderr\n"
 | 
			
		||||
	    " -h --help                  Print usage help\n"
 | 
			
		||||
	    " -m --mode <auto|manual>    Change PKGNAME to automatic or manual mode\n"
 | 
			
		||||
	    " -r --rootdir <dir>         Full path to rootdir\n"
 | 
			
		||||
	    " -u --update                Update pkgdb to the latest format\n"
 | 
			
		||||
	    " -v --verbose               Verbose messages\n"
 | 
			
		||||
	    " -V --version               Show XBPS version\n");
 | 
			
		||||
	    " -a --all                               Process all packages\n"
 | 
			
		||||
	    " -C --config <file>                     Full path to configuration file\n"
 | 
			
		||||
	    " -d --debug                             Debug mode shown to stderr\n"
 | 
			
		||||
	    " -h --help                              Print usage help\n"
 | 
			
		||||
	    " -m --mode <auto|manual|hold|unhold>    Change PKGNAME to this mode\n"
 | 
			
		||||
	    " -r --rootdir <dir>                     Full path to rootdir\n"
 | 
			
		||||
	    " -u --update                            Update pkgdb to the latest format\n"
 | 
			
		||||
	    " -v --verbose                           Verbose messages\n"
 | 
			
		||||
	    " -V --version                           Show XBPS version\n");
 | 
			
		||||
	exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
change_pkg_instmode(struct xbps_handle *xhp,
 | 
			
		||||
		    const char *pkgname,
 | 
			
		||||
		    const char *modestr)
 | 
			
		||||
change_pkg_mode(struct xbps_handle *xhp, const char *pkgname, const char *mode)
 | 
			
		||||
{
 | 
			
		||||
	xbps_dictionary_t pkgd;
 | 
			
		||||
	bool mode = false;
 | 
			
		||||
 | 
			
		||||
	pkgd = xbps_pkgdb_get_pkg(xhp, pkgname);
 | 
			
		||||
	if (pkgd == NULL)
 | 
			
		||||
		return errno;
 | 
			
		||||
 | 
			
		||||
	if (strcmp(modestr, "auto") == 0)
 | 
			
		||||
		mode = true;
 | 
			
		||||
	if (strcmp(mode, "auto") == 0)
 | 
			
		||||
		xbps_dictionary_set_bool(pkgd, "automatic-install", true);
 | 
			
		||||
	else if (strcmp(mode, "manual") == 0)
 | 
			
		||||
		xbps_dictionary_set_bool(pkgd, "automatic-install", false);
 | 
			
		||||
	else if (strcmp(mode, "hold") == 0)
 | 
			
		||||
		xbps_dictionary_set_bool(pkgd, "hold", true);
 | 
			
		||||
	else if (strcmp(mode, "unhold") == 0)
 | 
			
		||||
		xbps_dictionary_remove(pkgd, "hold");
 | 
			
		||||
	else
 | 
			
		||||
		usage(true);
 | 
			
		||||
 | 
			
		||||
	xbps_dictionary_set_bool(pkgd, "automatic-install", mode);
 | 
			
		||||
	return xbps_pkgdb_update(xhp, true);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -144,16 +148,13 @@ main(int argc, char **argv)
 | 
			
		||||
	if (update_format)
 | 
			
		||||
		convert_pkgdb_format(&xh);
 | 
			
		||||
	else if (instmode) {
 | 
			
		||||
		if ((strcmp(instmode, "auto")) && (strcmp(instmode, "manual")))
 | 
			
		||||
			usage(true);
 | 
			
		||||
 | 
			
		||||
		if (argc == optind) {
 | 
			
		||||
			fprintf(stderr,
 | 
			
		||||
			    "xbps-pkgdb: missing PKGNAME argument\n");
 | 
			
		||||
			exit(EXIT_FAILURE);
 | 
			
		||||
		}
 | 
			
		||||
		for (i = optind; i < argc; i++) {
 | 
			
		||||
			rv = change_pkg_instmode(&xh, argv[i], instmode);
 | 
			
		||||
			rv = change_pkg_mode(&xh, argv[i], instmode);
 | 
			
		||||
			if (rv != 0) {
 | 
			
		||||
				fprintf(stderr, "xbps-pkgdb: failed to "
 | 
			
		||||
				    "change to %s mode to %s: %s\n",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
.Dd March 4, 2013
 | 
			
		||||
.Dd August 12, 2013
 | 
			
		||||
.Os Void Linux
 | 
			
		||||
.Dt xbps-pkgdb 8
 | 
			
		||||
.Sh NAME
 | 
			
		||||
@@ -42,10 +42,19 @@ Specifies a full path to the XBPS configuration file.
 | 
			
		||||
Enables extra debugging shown to stderr.
 | 
			
		||||
.It Fl h, Fl -help
 | 
			
		||||
Show the help usage.
 | 
			
		||||
.It Fl m, Fl -mode Ar auto|manual
 | 
			
		||||
.It Fl m, Fl -mode Ar auto|manual|hold|unhold
 | 
			
		||||
Switches
 | 
			
		||||
.Ar PKGNAME
 | 
			
		||||
to the specified installation mode: automatic or manual mode.
 | 
			
		||||
to the specified  mode: automatic or manual installation mode, or to (un)set it on hold mode.
 | 
			
		||||
A package that was installed as dependency will be in
 | 
			
		||||
.Sy automatic
 | 
			
		||||
mode, otherwise will be set to
 | 
			
		||||
.Sy manual .
 | 
			
		||||
A package in
 | 
			
		||||
.Sy hold
 | 
			
		||||
mode won't be updated in full system upgrades. The list of packages in this mode can be
 | 
			
		||||
seen with
 | 
			
		||||
.Xr xbps-query 8 .
 | 
			
		||||
.It Fl r, Fl -rootdir Ar dir
 | 
			
		||||
Specifies a full path for the target root directory.
 | 
			
		||||
.It Fl u, Fl -update
 | 
			
		||||
 
 | 
			
		||||
@@ -61,6 +61,7 @@ unsigned int	find_longest_pkgver(struct xbps_handle *, xbps_object_t);
 | 
			
		||||
 | 
			
		||||
int	list_pkgs_in_dict(struct xbps_handle *, xbps_object_t, const char *, void *, bool *);
 | 
			
		||||
int	list_manual_pkgs(struct xbps_handle *, xbps_object_t, const char *, void *, bool *);
 | 
			
		||||
int	list_hold_pkgs(struct xbps_handle *, xbps_object_t, const char *, void *, bool *);
 | 
			
		||||
int	list_orphans(struct xbps_handle *);
 | 
			
		||||
int	list_pkgs_pkgdb(struct xbps_handle *);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -116,6 +116,24 @@ list_manual_pkgs(struct xbps_handle *xhp,
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
list_hold_pkgs(struct xbps_handle *xhp, xbps_object_t obj,
 | 
			
		||||
	       const char *key, void *arg, bool *loop_done)
 | 
			
		||||
{
 | 
			
		||||
	const char *pkgver;
 | 
			
		||||
 | 
			
		||||
	(void)xhp;
 | 
			
		||||
	(void)key;
 | 
			
		||||
	(void)arg;
 | 
			
		||||
	(void)loop_done;
 | 
			
		||||
 | 
			
		||||
	if (xbps_dictionary_get(obj, "hold")) {
 | 
			
		||||
		xbps_dictionary_get_cstring_nocopy(obj, "pkgver", &pkgver);
 | 
			
		||||
		printf("%s\n", pkgver);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
int
 | 
			
		||||
list_orphans(struct xbps_handle *xhp)
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -50,6 +50,7 @@ usage(bool fail)
 | 
			
		||||
	    "\nMODE [only one mode may be specified]\n"
 | 
			
		||||
	    " -l --list-pkgs           List available packages\n"
 | 
			
		||||
	    " -L --list-repos          List working repositories\n"
 | 
			
		||||
	    " -H --list-hold-pkgs      List packages on hold state\n"
 | 
			
		||||
	    " -m --list-manual-pkgs    List packages installed explicitly\n"
 | 
			
		||||
	    " -O --list-orphans        List package orphans\n"
 | 
			
		||||
	    " -o --ownedby PATTERN(s)  Search for packages owning PATTERN(s)\n"
 | 
			
		||||
@@ -65,7 +66,7 @@ usage(bool fail)
 | 
			
		||||
int
 | 
			
		||||
main(int argc, char **argv)
 | 
			
		||||
{
 | 
			
		||||
	const char *shortopts = "C:c:D:dfhLlmOop:Rr:sVvXx";
 | 
			
		||||
	const char *shortopts = "C:c:D:dfhHLlmOop:Rr:sVvXx";
 | 
			
		||||
	const struct option longopts[] = {
 | 
			
		||||
		{ "config", required_argument, NULL, 'C' },
 | 
			
		||||
		{ "cachedir", required_argument, NULL, 'c' },
 | 
			
		||||
@@ -74,6 +75,7 @@ main(int argc, char **argv)
 | 
			
		||||
		{ "help", no_argument, NULL, 'h' },
 | 
			
		||||
		{ "list-repos", no_argument, NULL, 'L' },
 | 
			
		||||
		{ "list-pkgs", no_argument, NULL, 'l' },
 | 
			
		||||
		{ "list-hold-pkgs", no_argument, NULL, 'H' },
 | 
			
		||||
		{ "list-manual-pkgs", no_argument, NULL, 'm' },
 | 
			
		||||
		{ "list-orphans", no_argument, NULL, 'O' },
 | 
			
		||||
		{ "ownedby", no_argument, NULL, 'o' },
 | 
			
		||||
@@ -92,12 +94,12 @@ main(int argc, char **argv)
 | 
			
		||||
	const char *rootdir, *cachedir, *conffile, *props, *defrepo;
 | 
			
		||||
	int c, flags, rv, show_deps = 0;
 | 
			
		||||
	bool list_pkgs, list_repos, orphans, own;
 | 
			
		||||
	bool list_manual, show_prop, show_files, show_rdeps;
 | 
			
		||||
	bool list_manual, list_hold, show_prop, show_files, show_rdeps;
 | 
			
		||||
	bool show, search, repo_mode, opmode, fulldeptree;
 | 
			
		||||
 | 
			
		||||
	rootdir = cachedir = conffile = defrepo = props = NULL;
 | 
			
		||||
	flags = rv = c = 0;
 | 
			
		||||
	list_pkgs = list_repos = orphans = search = own = false;
 | 
			
		||||
	list_pkgs = list_repos = list_hold = orphans = search = own = false;
 | 
			
		||||
	list_manual = show_prop = show_files = false;
 | 
			
		||||
	show = show_rdeps = fulldeptree = false;
 | 
			
		||||
	repo_mode = opmode = false;
 | 
			
		||||
@@ -119,6 +121,9 @@ main(int argc, char **argv)
 | 
			
		||||
		case 'f':
 | 
			
		||||
			show_files = opmode = true;
 | 
			
		||||
			break;
 | 
			
		||||
		case 'H':
 | 
			
		||||
			list_hold = true;
 | 
			
		||||
			break;
 | 
			
		||||
		case 'h':
 | 
			
		||||
			usage(false);
 | 
			
		||||
			/* NOTREACHED */
 | 
			
		||||
@@ -195,6 +200,10 @@ main(int argc, char **argv)
 | 
			
		||||
		/* list repositories */
 | 
			
		||||
		rv = repo_list(&xh);
 | 
			
		||||
 | 
			
		||||
	} else if (list_hold) {
 | 
			
		||||
		/* list on hold pkgs */
 | 
			
		||||
		rv = xbps_pkgdb_foreach_cb(&xh, list_hold_pkgs, NULL);
 | 
			
		||||
 | 
			
		||||
	} else if (list_manual) {
 | 
			
		||||
		/* list manual pkgs */
 | 
			
		||||
		rv = xbps_pkgdb_foreach_cb(&xh, list_manual_pkgs, NULL);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
.Dd July 26, 2013
 | 
			
		||||
.Dd August 12, 2013
 | 
			
		||||
.Os Void Linux
 | 
			
		||||
.Dt xbps-query 8
 | 
			
		||||
.Sh NAME
 | 
			
		||||
@@ -78,6 +78,8 @@ option is specified, the target
 | 
			
		||||
will be queried in the root directory, otherwise it will be
 | 
			
		||||
queried in registered repositories.
 | 
			
		||||
.Bl -tag -width -x
 | 
			
		||||
.If Fl H, Fl -list-hold-pkgs
 | 
			
		||||
List packages that are put on hold, and won't be updated in full system upgrades.
 | 
			
		||||
.It Fl l, Fl -list-pkgs
 | 
			
		||||
Lists registered packages in the package database (pkgdb).
 | 
			
		||||
A package can be in any of the following states:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user