diff options
author | Marc Espie <espie@cvs.openbsd.org> | 2001-04-02 10:13:41 +0000 |
---|---|---|
committer | Marc Espie <espie@cvs.openbsd.org> | 2001-04-02 10:13:41 +0000 |
commit | 60e34072a6678fce670535817b9a40a572bdd9a7 (patch) | |
tree | bdec7c8c317f84de487bb2a5ef6c39d8a705133f /usr.sbin/pkg_install | |
parent | c368ef1034dd7798997f9ead0edef6d1c55df48d (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.c | 10 | ||||
-rw-r--r-- | usr.sbin/pkg_install/lib/lib.h | 5 | ||||
-rw-r--r-- | usr.sbin/pkg_install/lib/plist.c | 5 |
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 } }; |