Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/bsd/pkg_install/dist pkg_install-20100130:



details:   https://anonhg.NetBSD.org/src/rev/fab25cb187cb
branches:  trunk
changeset: 751268:fab25cb187cb
user:      joerg <joerg%NetBSD.org@localhost>
date:      Sat Jan 30 21:33:08 2010 +0000

description:
pkg_install-20100130:
- pkg_add -U to rplace an installed version
- refactored man pages
- PKG_DBDIR / PKG_REFCOUNT_DBDIR as pkg_install.conf options
- synced license list
- use connection cache from libfetch

diffstat:

 external/bsd/pkg_install/dist/add/add.h                 |    4 +-
 external/bsd/pkg_install/dist/add/main.c                |   28 +-
 external/bsd/pkg_install/dist/add/perform.c             |   61 ++-
 external/bsd/pkg_install/dist/add/pkg_add.1             |  178 ++------
 external/bsd/pkg_install/dist/admin/check.c             |   11 +-
 external/bsd/pkg_install/dist/admin/main.c              |   21 +-
 external/bsd/pkg_install/dist/admin/pkg_admin.1         |   67 +--
 external/bsd/pkg_install/dist/create/main.c             |    8 +-
 external/bsd/pkg_install/dist/create/pkg_create.1       |   22 +-
 external/bsd/pkg_install/dist/delete/pkg_delete.1       |   46 +-
 external/bsd/pkg_install/dist/delete/pkg_delete.1.in    |  316 ++++++++++++++++
 external/bsd/pkg_install/dist/delete/pkg_delete.c       |   25 +-
 external/bsd/pkg_install/dist/info/main.c               |   10 +-
 external/bsd/pkg_install/dist/info/perform.c            |   12 +-
 external/bsd/pkg_install/dist/info/pkg_info.1           |   36 +-
 external/bsd/pkg_install/dist/lib/conflicts.c           |    9 +-
 external/bsd/pkg_install/dist/lib/iterate.c             |    4 +-
 external/bsd/pkg_install/dist/lib/lib.h                 |   20 +-
 external/bsd/pkg_install/dist/lib/license.c             |    6 +-
 external/bsd/pkg_install/dist/lib/parse-config.c        |   58 ++-
 external/bsd/pkg_install/dist/lib/pkg_install.conf.5.in |   42 +-
 external/bsd/pkg_install/dist/lib/pkgdb.c               |   72 +-
 external/bsd/pkg_install/dist/lib/version.h             |    4 +-
 23 files changed, 666 insertions(+), 394 deletions(-)

diffs (truncated from 2037 to 300 lines):

diff -r 79f690a83760 -r fab25cb187cb external/bsd/pkg_install/dist/add/add.h
--- a/external/bsd/pkg_install/dist/add/add.h   Sat Jan 30 21:26:09 2010 +0000
+++ b/external/bsd/pkg_install/dist/add/add.h   Sat Jan 30 21:33:08 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: add.h,v 1.1.1.5 2009/10/07 13:19:36 joerg Exp $ */
+/* $NetBSD: add.h,v 1.1.1.6 2010/01/30 21:33:08 joerg Exp $ */
 
 /* from FreeBSD Id: add.h,v 1.8 1997/02/22 16:09:15 peter Exp  */
 
@@ -25,7 +25,6 @@
 #ifndef _INST_ADD_H_INCLUDE
 #define _INST_ADD_H_INCLUDE
 
-extern const char *PlainPkgdb;
 extern char *Destdir;
 extern char *OverrideMachine;
 extern char *Prefix;
@@ -38,6 +37,7 @@
 extern Boolean Automatic;
 extern int LicenseCheck;
 extern int Replace;
+extern int ReplaceSame;
 
 extern Boolean ForceDepends;
 
diff -r 79f690a83760 -r fab25cb187cb external/bsd/pkg_install/dist/add/main.c
--- a/external/bsd/pkg_install/dist/add/main.c  Sat Jan 30 21:26:09 2010 +0000
+++ b/external/bsd/pkg_install/dist/add/main.c  Sat Jan 30 21:33:08 2010 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: main.c,v 1.1.1.6 2009/10/07 13:19:36 joerg Exp $       */
+/*     $NetBSD: main.c,v 1.1.1.7 2010/01/30 21:33:08 joerg Exp $       */
 
 #if HAVE_CONFIG_H
 #include "config.h"
@@ -7,7 +7,7 @@
 #if HAVE_SYS_CDEFS_H
 #include <sys/cdefs.h>
 #endif
-__RCSID("$NetBSD: main.c,v 1.1.1.6 2009/10/07 13:19:36 joerg Exp $");
+__RCSID("$NetBSD: main.c,v 1.1.1.7 2010/01/30 21:33:08 joerg Exp $");
 
 /*
  *
@@ -39,9 +39,8 @@
 #include "lib.h"
 #include "add.h"
 
-static char Options[] = "AIK:LP:RVW:fhm:np:t:uvw:";
+static char Options[] = "AIK:LP:RVW:fhm:np:t:Uuvw:";
 
-const char *PlainPkgdb = NULL;
 char   *Destdir = NULL;
 char   *OverrideMachine = NULL;
 char   *Prefix = NULL;
@@ -55,6 +54,7 @@
 
 int    LicenseCheck = 0;
 int     Replace = 0;
+int    ReplaceSame = 0;
 
 static void
 usage(void)
@@ -72,7 +72,6 @@
 {
        int     ch, error=0;
        lpkg_head_t pkgs;
-       const char *pkgdb = NULL;
 
        setprogname(argv[0]);
        while ((ch = getopt(argc, argv, Options)) != -1) {
@@ -98,7 +97,7 @@
                        break;
 
                case 'K':
-                       pkgdb = optarg;
+                       pkgdb_set_dir(optarg, 3);
                        break;
 
                case 'L':
@@ -122,6 +121,12 @@
                        Prefix = optarg;
                        break;
 
+               case 'U':
+                       ReplaceSame = 1;
+                       if (!Replace)
+                               Replace = 1;
+                       break;
+
                case 'u':
                        Replace++;
                        break;
@@ -154,18 +159,13 @@
 
        pkg_install_config();
 
-       if (pkgdb == NULL)
-               pkgdb = _pkgdb_getPKGDB_DIR();
-       PlainPkgdb = xstrdup(pkgdb);
-
        if (Destdir != NULL) {
                char *pkgdbdir;
 
-               pkgdbdir = xasprintf("%s/%s", Destdir, pkgdb);
-               _pkgdb_setPKGDB_DIR(pkgdbdir);
+               pkgdbdir = xasprintf("%s/%s", Destdir, config_pkg_dbdir);
+               pkgdb_set_dir(pkgdbdir, 4);
                free(pkgdbdir);
-       } else
-               _pkgdb_setPKGDB_DIR(pkgdb);
+       }
 
        process_pkg_path();
        TAILQ_INIT(&pkgs);
diff -r 79f690a83760 -r fab25cb187cb external/bsd/pkg_install/dist/add/perform.c
--- a/external/bsd/pkg_install/dist/add/perform.c       Sat Jan 30 21:26:09 2010 +0000
+++ b/external/bsd/pkg_install/dist/add/perform.c       Sat Jan 30 21:33:08 2010 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: perform.c,v 1.1.1.12 2009/10/07 13:19:39 joerg Exp $   */
+/*     $NetBSD: perform.c,v 1.1.1.13 2010/01/30 21:33:16 joerg Exp $   */
 #if HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -6,7 +6,7 @@
 #if HAVE_SYS_CDEFS_H
 #include <sys/cdefs.h>
 #endif
-__RCSID("$NetBSD: perform.c,v 1.1.1.12 2009/10/07 13:19:39 joerg Exp $");
+__RCSID("$NetBSD: perform.c,v 1.1.1.13 2010/01/30 21:33:16 joerg Exp $");
 
 /*-
  * Copyright (c) 2003 Grant Beattie <grant%NetBSD.org@localhost>
@@ -84,6 +84,7 @@
 
        char *logdir;
        char *install_logdir;
+       char *install_logdir_real;
        char *other_version;
 
        package_t plist;
@@ -338,13 +339,27 @@
        int fd;
 
        if (Force)
-               return -1;
+               return 1;
 
        filename = pkgdb_pkg_file(pkg->pkgname, CONTENTS_FNAME);
        fd = open(filename, O_RDONLY);
        free(filename);
        if (fd == -1)
-               return -1;
+               return 1;
+
+       if (ReplaceSame) {
+               struct stat sb;
+
+               pkg->install_logdir_real = pkg->install_logdir;
+               pkg->install_logdir = xasprintf("%s.xxxxxx", pkg->install_logdir);
+               if (stat(pkg->install_logdir, &sb) == 0) {
+                       warnx("package `%s' already has a temporary update "
+                           "directory `%s', remove it manually",
+                           pkg->pkgname, pkg->install_logdir);
+                       return -1;
+               }
+               return 1;
+       }
 
        /* We can only arrive here for explicitly requested packages. */
        if (!Automatic && is_automatic_installed(pkg->pkgname)) {
@@ -372,6 +387,11 @@
        plist_t *p;
        int status;
 
+       if (pkg->install_logdir_real) {
+               pkg->other_version = xstrdup(pkg->pkgname);
+               return 0;
+       }
+
        pkgbase = xstrdup(pkg->pkgname);
 
        if ((iter = strrchr(pkgbase, '-')) == NULL) {
@@ -875,7 +895,7 @@
                setenv(PKG_DESTDIR_VNAME, Destdir, 1);
        setenv(PKG_PREFIX_VNAME, pkg->prefix, 1);
        setenv(PKG_METADATA_DIR_VNAME, pkg->logdir, 1);
-       setenv(PKG_REFCOUNT_DBDIR_VNAME, pkgdb_refcount_dir(), 1);
+       setenv(PKG_REFCOUNT_DBDIR_VNAME, config_pkg_refcount_dbdir, 1);
 
        if (Verbose)
                printf("Running install with PRE-INSTALL for %s.\n", pkg->pkgname);
@@ -1087,13 +1107,13 @@
 
        if (Verbose) {
                printf("%s/pkg_view -d %s %s%s %s%s %sadd %s\n",
-                       BINDIR, _pkgdb_getPKGDB_DIR(),
+                       BINDIR, pkgdb_get_dir(),
                        View ? "-w " : "", View ? View : "",
                        Viewbase ? "-W " : "", Viewbase ? Viewbase : "",
                        Verbose ? "-v " : "", pkg->pkgname);
        }
 
-       fexec_skipempty(BINDIR "/pkg_view", "-d", _pkgdb_getPKGDB_DIR(),
+       fexec_skipempty(BINDIR "/pkg_view", "-d", pkgdb_get_dir(),
                        View ? "-w " : "", View ? View : "",
                        Viewbase ? "-W " : "", Viewbase ? Viewbase : "",
                        Verbose ? "-v " : "", "add", pkg->pkgname,
@@ -1110,7 +1130,7 @@
                return 0;
 
        old_file = pkgdb_pkg_file(pkg->other_version, name);
-       new_file = pkgdb_pkg_file(pkg->pkgname, name);
+       new_file = xasprintf("%s/%s", pkg->install_logdir, name);
        rv = 0;
        if (rename(old_file, new_file) == -1 && errno != ENOENT) {
                warn("Can't move %s from %s to %s", name, old_file, new_file);
@@ -1136,12 +1156,12 @@
 
        if (Verbose || Fake) {
                printf("%s/pkg_delete -K %s -p %s%s%s '%s'\n",
-                       BINDIR, _pkgdb_getPKGDB_DIR(), pkg->prefix,
+                       BINDIR, pkgdb_get_dir(), pkg->prefix,
                        Destdir ? " -P ": "", Destdir ? Destdir : "",
                        pkg->other_version);
        }
        if (!Fake)
-               fexec_skipempty(BINDIR "/pkg_delete", "-K", _pkgdb_getPKGDB_DIR(),
+               fexec_skipempty(BINDIR "/pkg_delete", "-K", pkgdb_get_dir(),
                    "-p", pkg->prefix,
                    Destdir ? "-P": "", Destdir ? Destdir : "",
                    pkg->other_version, NULL);
@@ -1327,9 +1347,9 @@
 
        if (pkg->meta_data.meta_views != NULL) {
                pkg->logdir = xstrdup(pkg->prefix);
-               _pkgdb_setPKGDB_DIR(dirname_of(pkg->logdir));
+               pkgdb_set_dir(dirname_of(pkg->logdir), 4);
        } else {
-               pkg->logdir = xasprintf("%s/%s", PlainPkgdb, pkg->pkgname);
+               pkg->logdir = xasprintf("%s/%s", config_pkg_dbdir, pkg->pkgname);
        }
 
        if (Destdir != NULL)
@@ -1353,9 +1373,14 @@
                }
        }
 
-       if (check_already_installed(pkg) == 0) {
+       switch (check_already_installed(pkg)) {
+       case 0:
                status = 0;
                goto clean_memory;
+       case 1:
+               break;
+       case -1:
+               goto clean_memory;
        }
 
        if (check_platform(pkg))
@@ -1382,6 +1407,13 @@
                if (start_replacing(pkg))
                        goto nuke_pkgdb;
 
+               if (pkg->install_logdir_real) {
+                       rename(pkg->install_logdir, pkg->install_logdir_real);
+                       free(pkg->install_logdir);
+                       pkg->install_logdir = pkg->install_logdir_real;
+                       pkg->install_logdir_real = NULL;
+               }
+
                if (check_dependencies(pkg))
                        goto nuke_pkgdb;
        } else {
@@ -1438,8 +1470,10 @@
        if (!Fake) {
                if (recursive_remove(pkg->install_logdir, 1))
                        warn("Couldn't remove %s", pkg->install_logdir);
+               free(pkg->install_logdir_real);
                free(pkg->install_logdir);
                free(pkg->logdir);
+               pkg->install_logdir_real = NULL;
                pkg->install_logdir = NULL;
                pkg->logdir = NULL;
        }
@@ -1450,6 +1484,7 @@
                        warn("Couldn't remove %s", pkg->install_logdir);
        }
        free(pkg->install_prefix);
+       free(pkg->install_logdir_real);
        free(pkg->install_logdir);
        free(pkg->logdir);
        free_buildinfo(pkg);
diff -r 79f690a83760 -r fab25cb187cb external/bsd/pkg_install/dist/add/pkg_add.1
--- a/external/bsd/pkg_install/dist/add/pkg_add.1       Sat Jan 30 21:26:09 2010 +0000
+++ b/external/bsd/pkg_install/dist/add/pkg_add.1       Sat Jan 30 21:33:08 2010 +0000
@@ -1,4 +1,4 @@
-.\" $NetBSD: pkg_add.1,v 1.1.1.8 2009/08/21 15:19:02 joerg Exp $
+.\" $NetBSD: pkg_add.1,v 1.1.1.9 2010/01/30 21:33:20 joerg Exp $
 .\"
 .\" FreeBSD install - a package for the installation and maintenance



Home | Main Index | Thread Index | Old Index