summaryrefslogtreecommitdiff
path: root/usr.sbin/pkg_install
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>2001-04-02 10:13:41 +0000
committerMarc Espie <espie@cvs.openbsd.org>2001-04-02 10:13:41 +0000
commit60e34072a6678fce670535817b9a40a572bdd9a7 (patch)
treebdec7c8c317f84de487bb2a5ef6c39d8a705133f /usr.sbin/pkg_install
parentc368ef1034dd7798997f9ead0edef6d1c55df48d (diff)
Handle for newdepend.
- recognize the keyword, - pass all packing lists to `pkg dependencies solve' for rewriting. pkg dependencies solve is a no-op in the absence of newdepends. With newdepends, it rewrites @newdepends -> @pkgdep on the fly, depending on what's actually installed on the machine.
Diffstat (limited to 'usr.sbin/pkg_install')
-rw-r--r--usr.sbin/pkg_install/add/perform.c10
-rw-r--r--usr.sbin/pkg_install/lib/lib.h5
-rw-r--r--usr.sbin/pkg_install/lib/plist.c5
3 files changed, 14 insertions, 6 deletions
diff --git a/usr.sbin/pkg_install/add/perform.c b/usr.sbin/pkg_install/add/perform.c
index 432922fc0e2..6313b62967d 100644
--- a/usr.sbin/pkg_install/add/perform.c
+++ b/usr.sbin/pkg_install/add/perform.c
@@ -1,7 +1,7 @@
-/* $OpenBSD: perform.c,v 1.17 2001/03/22 20:42:03 espie Exp $ */
+/* $OpenBSD: perform.c,v 1.18 2001/04/02 10:13:38 espie Exp $ */
#ifndef lint
-static const char *rcsid = "$OpenBSD: perform.c,v 1.17 2001/03/22 20:42:03 espie Exp $";
+static const char *rcsid = "$OpenBSD: perform.c,v 1.18 2001/04/02 10:13:38 espie Exp $";
#endif
/*
@@ -77,6 +77,7 @@ pkg_do(char *pkg)
char pkg_fullname[FILENAME_MAX];
char playpen[FILENAME_MAX];
char extract_contents[FILENAME_MAX];
+ char solve_deps[FILENAME_MAX+50];
char *where_to, *tmp, *extract;
char *dbdir;
FILE *cfile;
@@ -90,6 +91,8 @@ pkg_do(char *pkg)
strcpy(playpen, FirstPen);
dbdir = (tmp = getenv(PKG_DBDIR)) ? tmp : DEF_LOG_DIR;
+ snprintf(solve_deps, sizeof solve_deps, "pkg%s dependencies solve %s",
+ Verbose ? " -v": "", CONTENTS_FNAME);
/* Are we coming in for a second pass, everything already extracted? */
/* (Slave mode) */
if (!pkg) {
@@ -119,6 +122,7 @@ pkg_do(char *pkg)
}
where_to = Home;
strcpy(pkg_fullname, pkg);
+ system(solve_deps);
cfile = fopen(CONTENTS_FNAME, "r");
if (!cfile) {
warnx(
@@ -156,6 +160,7 @@ pkg_do(char *pkg)
pkg_fullname);
goto bomb;
}
+ system(solve_deps);
cfile = fopen(CONTENTS_FNAME, "r");
if (!cfile) {
warnx(
@@ -331,6 +336,7 @@ pkg_do(char *pkg)
if ((cp = fileGetURL(pkg, p->name)) != NULL) {
if (Verbose)
printf("Finished loading `%s' over FTP\n", p->name);
+ system(solve_deps);
if (!fexists(CONTENTS_FNAME)) {
warnx("autoloaded package `%s' has no %s file?",
p->name, CONTENTS_FNAME);
diff --git a/usr.sbin/pkg_install/lib/lib.h b/usr.sbin/pkg_install/lib/lib.h
index 4d7c50ebbfd..7a349d18b69 100644
--- a/usr.sbin/pkg_install/lib/lib.h
+++ b/usr.sbin/pkg_install/lib/lib.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: lib.h,v 1.6 2000/03/24 00:20:04 espie Exp $ */
+/* $OpenBSD: lib.h,v 1.7 2001/04/02 10:13:40 espie Exp $ */
/*
* FreeBSD install - a package for the installation and maintainance
@@ -103,7 +103,8 @@ typedef enum pl_ent_t {
PLIST_DIR_RM,
PLIST_IGNORE_INST,
PLIST_OPTION,
- PLIST_PKGCFL
+ PLIST_PKGCFL,
+ PLIST_NEWDEP
} pl_ent_t;
/* Types */
diff --git a/usr.sbin/pkg_install/lib/plist.c b/usr.sbin/pkg_install/lib/plist.c
index 9c243f0fc69..99b382b5fd1 100644
--- a/usr.sbin/pkg_install/lib/plist.c
+++ b/usr.sbin/pkg_install/lib/plist.c
@@ -1,6 +1,6 @@
-/* $OpenBSD: plist.c,v 1.9 2000/04/28 22:13:55 espie Exp $ */
+/* $OpenBSD: plist.c,v 1.10 2001/04/02 10:13:40 espie Exp $ */
#ifndef lint
-static const char *rcsid = "$OpenBSD: plist.c,v 1.9 2000/04/28 22:13:55 espie Exp $";
+static const char *rcsid = "$OpenBSD: plist.c,v 1.10 2001/04/02 10:13:40 espie Exp $";
#endif
/*
@@ -54,6 +54,7 @@ static cmd_t cmdv[] = {
{ "mtree", PLIST_MTREE, 1 },
{ "dirrm", PLIST_DIR_RM, 1 },
{ "option", PLIST_OPTION, 1 },
+ { "newdepend", PLIST_NEWDEP, 1 },
{ NULL, FAIL, 0 }
};