Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Merge branch 'master' of github.com:pkgng/pkgng
jlaffaye committed 14 years ago
commit 69ece35c7bd50c7b37aa4b535fec29c396e6ce7b
parent ef53c98
4 files changed +67 -73
modified libpkg/pkg_manifest.c
@@ -32,27 +32,25 @@ static int m_parse_file(struct pkg *pkg, char *buf);
static int m_parse_dir(struct pkg *pkg, char *buf);
static int m_parse_set_string(struct pkg *pkg, char *buf, pkg_attr attr);

-
#define MANIFEST_FORMAT_KEY "@pkg_format_version"
-

static struct manifest_key {
	const char *key;
	int (*parse)(struct pkg *pkg, char *buf);
} manifest_key[] = {
-
	{ "@name", m_parse_name},
-
	{ "@origin", m_parse_origin},
-
	{ "@version", m_parse_version},
-
	{ "@arch", m_parse_arch},
-
	{ "@osversion", m_parse_osversion},
-
	{ "@www", m_parse_www},
-
	{ "@comment", m_parse_comment},
-
	{ "@flatsize", m_parse_flatsize},
-
	{ "@option", m_parse_option},
-
	{ "@dep", m_parse_dep},
-
	{ "@conflict", m_parse_conflict},
-
	{ "@maintainer", m_parse_maintainer},
-
	{ "@prefix", m_parse_prefix},
-
	{ "@file", m_parse_file},
-
	{ "@dir", m_parse_dir},
+
	{ "name:", m_parse_name},
+
	{ "origin:", m_parse_origin},
+
	{ "version:", m_parse_version},
+
	{ "arch:", m_parse_arch},
+
	{ "osversion:", m_parse_osversion},
+
	{ "www:", m_parse_www},
+
	{ "comment:", m_parse_comment},
+
	{ "flatsize:", m_parse_flatsize},
+
	{ "option:", m_parse_option},
+
	{ "dep:", m_parse_dep},
+
	{ "conflict:", m_parse_conflict},
+
	{ "maintainer:", m_parse_maintainer},
+
	{ "prefix:", m_parse_prefix},
+
	{ "file:", m_parse_file},
+
	{ "dir:", m_parse_dir},
};

#define manifest_key_len (int)(sizeof(manifest_key)/sizeof(manifest_key[0]))
@@ -219,14 +217,25 @@ m_parse_file(struct pkg *pkg, char *buf)
	while (isspace(*buf))
		buf++;

-
	if (split_chr(buf, ' ') != 1)
+
	while (isspace(buf[0]))
+
		buf++;
+

+
	if (buf[0] == '-')
+
		sha256 = NULL;
+
	else
+
		sha256 = buf;
+

+
	while (!isspace(buf[0]))
+
		buf++;
+

+
	buf[0] = '\0';
+
	buf++;
+

+
	if (buf[0] != '/')
		return (EPKG_FATAL);

	path = buf;

-
	buf += strlen(path) + 1;
-
	sha256 = buf;
-

	pkg_addfile(pkg, path, sha256);

	return (EPKG_OK);
@@ -238,7 +247,7 @@ m_parse_dir(struct pkg *pkg, char *buf)
	while (isspace(*buf))
		buf++;

-
	if (*buf == '\0')
+
	if (*buf != '/')
		return (EPKG_FATAL);

	pkg_adddir(pkg, buf);
@@ -274,13 +283,6 @@ pkg_parse_manifest(struct pkg *pkg, char *buf)
	nbel = split_chr(buf, '\n');

	buf_ptr = buf;
-
	if (!STARTS_WITH(buf, MANIFEST_FORMAT_KEY)) {
-
		warn("Not a package manifest");
-
		return (-1);
-
	}
-

-
	next = strlen(buf_ptr);
-
	buf_ptr += next + 1;
	next = strlen(buf_ptr);
	for (i = 1; i <= nbel; i++) {
		found = 0;
@@ -323,17 +325,17 @@ pkg_emit_manifest(struct pkg *pkg, char **dest)

	manifest = sbuf_new_auto();

-
	sbuf_printf(manifest, "@pkg_format_version 0.9\n"
-
			"@name %s\n"
-
			"@version %s\n"
-
			"@origin %s\n"
-
			"@comment %s\n"
-
			"@arch %s\n"
-
			"@osversion %s\n"
-
			"@www %s\n"
-
			"@maintainer %s\n"
-
			"@prefix %s\n"
-
			"@flatsize %" PRId64 "\n",
+
	sbuf_printf(manifest,
+
			"name: %s\n"
+
			"version: %s\n"
+
			"origin: %s\n"
+
			"comment: %s\n"
+
			"arch: %s\n"
+
			"osversion: %s\n"
+
			"www: %s\n"
+
			"maintainer: %s\n"
+
			"prefix: %s\n"
+
			"flatsize: %" PRId64 "\n",
			pkg_get(pkg, PKG_NAME),
			pkg_get(pkg, PKG_VERSION),
			pkg_get(pkg, PKG_ORIGIN),
@@ -347,7 +349,7 @@ pkg_emit_manifest(struct pkg *pkg, char **dest)
			);

	while (pkg_deps(pkg, &dep) == EPKG_OK) {
-
		sbuf_printf(manifest, "@dep %s %s %s\n",
+
		sbuf_printf(manifest, "dep: %s %s %s\n",
					pkg_dep_name(dep),
					pkg_dep_origin(dep),
					pkg_dep_version(dep));
@@ -355,21 +357,21 @@ pkg_emit_manifest(struct pkg *pkg, char **dest)


	while (pkg_conflicts(pkg, &conflict) == EPKG_OK) {
-
		sbuf_printf(manifest, "@conflict %s\n", pkg_conflict_glob(conflict));
+
		sbuf_printf(manifest, "conflict: %s\n", pkg_conflict_glob(conflict));
	}

	while (pkg_options(pkg, &option) == EPKG_OK) {
-
		sbuf_printf(manifest, "@option %s %s\n", pkg_option_opt(option),
+
		sbuf_printf(manifest, "option: %s %s\n", pkg_option_opt(option),
					pkg_option_value(option));
	}

	while (pkg_files(pkg, &file) == EPKG_OK) {
-
		sbuf_printf(manifest, "@file %s %s\n", pkg_file_path(file),
-
					pkg_file_sha256(file));
+
		sbuf_printf(manifest, "file: %s %s\n", pkg_file_sha256(file) && strlen(pkg_file_sha256(file)) > 0 ? pkg_file_sha256(file) : "-",
+
					pkg_file_path(file));
	}

	while (pkg_dirs(pkg, &dir) == EPKG_OK) {
-
		sbuf_printf(manifest, "@dir %s\n", pkg_dir_path(dir));
+
		sbuf_printf(manifest, "dir: %s\n", pkg_dir_path(dir));
	}

	sbuf_finish(manifest);
modified ports/bsd.pkgng.mk
@@ -35,23 +35,22 @@ fake-pkg:
.if !defined(NO_PKG_REGISTER)
	@${ECHO_MSG} "===>   Registering installation for ${PKGNAME}"
	@${MKDIR} ${METADIR}
-
	@${ECHO_CMD} "@pkg_format_version 0.9" > ${MANIFESTF}
-
	@${ECHO_CMD} "@name ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}" >> ${MANIFESTF}
-
	@${ECHO_CMD} "@version ${PKGVERSION}" >> ${MANIFESTF}
-
	@${ECHO_CMD} "@origin ${PKGORIGIN}" >> ${MANIFESTF}
-
	@${ECHO_CMD} "@comment ${COMMENT}" >> ${MANIFESTF}
-
	@${ECHO_CMD} "@maintainer ${MAINTAINER}" >> ${MANIFESTF}
-
	@${ECHO_CMD} "@prefix ${PREFIX}" >> ${MANIFESTF}
+
	@${ECHO_CMD} "name: ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}" > ${MANIFESTF}
+
	@${ECHO_CMD} "version: ${PKGVERSION}" >> ${MANIFESTF}
+
	@${ECHO_CMD} "origin: ${PKGORIGIN}" >> ${MANIFESTF}
+
	@${ECHO_CMD} "comment: ${COMMENT}" >> ${MANIFESTF}
+
	@${ECHO_CMD} "maintainer: ${MAINTAINER}" >> ${MANIFESTF}
+
	@${ECHO_CMD} "prefix: ${PREFIX}" >> ${MANIFESTF}
.if defined(WWW)
-
	@${ECHO_CMD} "@www ${WWW}" >> ${MANIFESTF}
+
	@${ECHO_CMD} "www: ${WWW}" >> ${MANIFESTF}
.endif
	@${MAKE} -C ${.CURDIR} actual-package-depends | ${GREP} -v -E ${PKG_IGNORE_DEPENDS} | ${SORT} -u >> ${MANIFESTF}
.if !defined(DISABLE_CONFLICTS)
.for conflicts in ${CONFLICTS}
-
	@${ECHO_CMD} "@conflict ${conflicts}" >> ${MANIFESTF}
+
	@${ECHO_CMD} "conflict: ${conflicts}" >> ${MANIFESTF}
.endfor
.for conflicts in ${CONFLICTS_INSTALL}
-
	@${ECHO_CMD} "@conflict ${conflicts}" >> ${MANIFESTF}
+
	@${ECHO_CMD} "conflict: ${conflicts}" >> ${MANIFESTF}
.endfor
.endif
.if exists(${PKGINSTALL})
modified ports/pkg2ng
@@ -17,6 +17,7 @@ do
	DESC="${DB}/+DESC"

	ORIGIN=$(pkg_info -qo ${PKG})
+
	PREFX=$(pkg_info -qp ${PKG})
	MAINTAINER=$( make -C /usr/ports/${ORIGIN} -V MAINTAINER )
	# +CONTENTS
	MDIR=$(mktemp -d /tmp/pkg2ngXXXXX)
@@ -26,19 +27,18 @@ do
	MANIFEST=${MDIR}/+MANIFEST
	PLIST=${MDIR}/plist
	cp -f ${DB}/+INSTALL ${MDIR} 2>/dev/null
-
	echo "@pkg_format_version 0.9" >> ${MANIFEST}
-
	echo "@name ${PKG%-*}" >> ${MANIFEST}
-
	echo "@version ${PKG##*-}" >> ${MANIFEST}
-
	echo "@origin ${ORIGIN}" >> ${MANIFEST}
-
	echo "@comment ${COMMENT}" >> ${MANIFEST}
-
	echo "@maintainer ${MAINTAINER}" >> ${MANIFEST}
-
	echo "@prefix /usr/local" >> ${MANIFEST}
+
	echo "name: ${PKG%-*}" >> ${MANIFEST}
+
	echo "version: ${PKG##*-}" >> ${MANIFEST}
+
	echo "origin: ${ORIGIN}" >> ${MANIFEST}
+
	echo "comment: ${COMMENT}" >> ${MANIFEST}
+
	echo "maintainer: ${MAINTAINER}" >> ${MANIFEST}
+
	echo "prefix: ${PREFX##* }" >> ${MANIFEST}
	pkg_info -qr ${PKG} | while read ignore dep; do
		deporigin=$(pkg_info -qo ${dep})
-
		echo "@dep ${dep%-*} ${deporigin} ${dep##*-}" >> ${MANIFEST}
+
		echo "dep: ${dep%-*} ${deporigin} ${dep##*-}" >> ${MANIFEST}
	done
	egrep -v "^@[pkgdep|ignore|conflicts]" ${DB}/+CONTENTS >> ${PLIST}
-
	awk '/^@conflicts/ { print "@conflict "$2 }' ${DB}/+CONTENTS >> ${MANIFEST}
+
	awk '/^@conflicts/ { print "conflict: "$2 }' ${DB}/+CONTENTS >> ${MANIFEST}

	OPTIONS=""

modified tests/manifest.c
@@ -5,7 +5,6 @@
#include "tests.h"

char manifest[] = ""
-
	"@pkg_format_version 0.9\n"
	"@name foobar\n"
	"@version 0.3\n"
	"@origin foo/bar\n"
@@ -22,12 +21,10 @@ char manifest[] = ""
	"@conflict bar-*\n"
	"@option foo true\n"
	"@option bar false\n"
-
	"@file /usr/local/bin/foo "
-
		"01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b\n";
+
	"@file 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b /usr/local/bin/foo\n";

/* Name empty */
char wrong_manifest1[] = ""
-
	"@pkg_format_version 0.9\n"
	"@name\n"
	"@version 0.3\n"
	"@origin foo/bar\n"
@@ -45,7 +42,6 @@ char wrong_manifest1[] = ""

/* bad dependency line */
char wrong_manifest2[] = ""
-
	"@pkg_format_version 0.9\n"
	"@name foobar\n"
	"@version 0.3\n"
	"@origin foo/bar\n"
@@ -63,7 +59,6 @@ char wrong_manifest2[] = ""

/* bad conflict line */
char wrong_manifest3[] = ""
-
	"@pkg_format_version 0.9\n"
	"@name foobar\n"
	"@version 0.3\n"
	"@origin foo/bar\n"
@@ -81,7 +76,6 @@ char wrong_manifest3[] = ""

/* bad option line */
char wrong_manifest4[] = ""
-
	"@pkg_format_version 0.9\n"
	"@name foobar\n"
	"@version 0.3\n"
	"@origin foo/bar\n"
@@ -99,7 +93,6 @@ char wrong_manifest4[] = ""

/* bad option line */
char wrong_manifest5[] = ""
-
	"@pkg_format_version 0.9\n"
	"@name foobar\n"
	"@version 0.3\n"
	"@origin foo/bar\n"