Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
new debug trace infrastructure
Baptiste Daroussin committed 12 years ago
commit 3c4abaf8488b05f6d78452f851fb2f4fab918162
parent 284c496
5 files changed +40 -1
modified libpkg/pkg.h.in
@@ -346,6 +346,7 @@ typedef enum _pkg_config_key {
	PKG_CONFIG_SSH_RESTRICT_DIR,
	PKG_CONFIG_ENV,
	PKG_CONFIG_DISABLE_MTREE,
+
	PKG_CONFIG_DEBUG_LEVEL,
} pkg_config_key;

typedef enum {
@@ -1234,6 +1235,7 @@ typedef enum {
	PKG_EVENT_INTEGRITYCHECK_CONFLICT,
	PKG_EVENT_NEWPKGVERSION,
	PKG_EVENT_NOTICE,
+
	PKG_EVENT_DEBUG,
	PKG_EVENT_INCREMENTAL_UPDATE,
	/* errors */
	PKG_EVENT_ERROR,
@@ -1252,7 +1254,7 @@ typedef enum {
	PKG_EVENT_PLUGIN_ERRNO,
	PKG_EVENT_PLUGIN_ERROR,
	PKG_EVENT_PLUGIN_INFO,
-
	PKG_EVENT_NOT_FOUND
+
	PKG_EVENT_NOT_FOUND,
} pkg_event_t;

struct pkg_event {
@@ -1345,6 +1347,10 @@ struct pkg_event {
			int added;
			int processed;
		} e_incremental_update;
+
		struct {
+
			int level;
+
			char *msg;
+
		} e_debug;
	};
};

modified libpkg/pkg_config.c
@@ -275,6 +275,12 @@ static struct config_entry c[] = {
		"NO",
		"Experimental: disable MTREE processing on pkg installation",
	},
+
	[PKG_CONFIG_DEBUG_LEVEL] = {
+
		PKG_CONFIG_INTEGER,
+
		"DEBUG_LEVEL",
+
		"0",
+
		"Level for debug messages",
+
	},
};

static bool parsed = false;
@@ -1077,6 +1083,7 @@ pkg_init(const char *path)
	disable_plugins_if_static();

	parsed = true;
+
	pkg_debug(1, "%s", "pkg initialized");

	subst_packagesite();

modified libpkg/pkg_event.c
@@ -712,3 +712,25 @@ pkg_emit_incremental_update(int updated, int removed, int added, int processed)

	pkg_emit_event(&ev);
}
+

+
void
+
pkg_debug(int level, const char *fmt, ...)
+
{
+
	struct pkg_event ev;
+
	va_list ap;
+
	int64_t expectlevel;
+

+
	pkg_config_int64(PKG_CONFIG_DEBUG_LEVEL, &expectlevel);
+

+
	if (expectlevel < level)
+
		return;
+

+
	ev.type = PKG_EVENT_DEBUG;
+
	ev.e_debug.level = level;
+
	va_start(ap, fmt);
+
	vasprintf(&ev.e_debug.msg, fmt, ap);
+
	va_end(ap);
+

+
	pkg_emit_event(&ev);
+
	free(ev.e_debug.msg);
+
}
modified libpkg/private/event.h
@@ -53,6 +53,7 @@ void pkg_emit_newpkgversion(void);
void pkg_emit_developer_mode(const char *fmt, ...);
void pkg_emit_package_not_found(const char *);
void pkg_emit_incremental_update(int updated, int removed, int added, int processed);
+
void pkg_debug(int level, const char *fmt, ...);


#endif
modified pkg/event.c
@@ -309,6 +309,9 @@ event_callback(void *data, struct pkg_event *ev)
			    ev->e_incremental_update.removed,
			    ev->e_incremental_update.added);
		break;
+
	case PKG_EVENT_DEBUG:
+
		fprintf(stderr, "DBG(%d)> %s\n", ev->e_debug.level, ev->e_debug.msg);
+
		break;
	default:
		break;
	}