pkgsrc-Changes-HG archive

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

[pkgsrc/trunk]: pkgsrc/pkgtools/pkg_install Add a -N option to pkg_delete to ...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/95a1100abca0
branches:  trunk
changeset: 482721:95a1100abca0
user:      erh <erh%pkgsrc.org@localhost>
date:      Tue Nov 02 00:10:15 2004 +0000

description:
Add a -N option to pkg_delete to delete registration information for a package
but not its files.
Override PKG_DELETE when building this package so -N can be used to
upgrade an existing install.
Bump version to 20041101.

diffstat:

 pkgtools/pkg_install/Makefile                     |   5 ++++-
 pkgtools/pkg_install/files/add/perform.c          |   6 +++---
 pkgtools/pkg_install/files/delete/delete.h        |   3 ++-
 pkgtools/pkg_install/files/delete/main.c          |  12 +++++++++---
 pkgtools/pkg_install/files/delete/perform.c       |  10 ++++++----
 pkgtools/pkg_install/files/delete/pkg_delete.1    |   6 +++++-
 pkgtools/pkg_install/files/delete/pkg_delete.cat1 |   8 ++++++--
 pkgtools/pkg_install/files/lib/lib.h              |   4 ++--
 pkgtools/pkg_install/files/lib/plist.c            |  21 ++++++++++++++-------
 pkgtools/pkg_install/files/lib/version.h          |   4 ++--
 10 files changed, 53 insertions(+), 26 deletions(-)

diffs (truncated from 315 to 300 lines):

diff -r 9d5e3cc48c80 -r 95a1100abca0 pkgtools/pkg_install/Makefile
--- a/pkgtools/pkg_install/Makefile     Tue Nov 02 00:05:23 2004 +0000
+++ b/pkgtools/pkg_install/Makefile     Tue Nov 02 00:10:15 2004 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.104 2004/10/05 21:08:32 erh Exp $
+# $NetBSD: Makefile,v 1.105 2004/11/02 00:10:15 erh Exp $
 
 # Notes to package maintainers:
 #
@@ -36,9 +36,12 @@
 # compiler to avoid problems with depending on pkgsrc GCC for building
 # pkg_install.  We also avoid building digest as that would involve
 # using the newer pkg_install tools.
+# We also use the newly built pkg_delete since upgrading from
+# an older pkg_install might required features of the new program.
 #
 USE_NATIVE_GCC=                yes
 USE_DIGEST=            no
+PKG_DELETE=    ${WRKSRC}/delete/pkg_delete
 
 PLIST_SUBST+=          MANDIR=${MANDIR}
 PLIST_SUBST+=          PKG_TOOLS_BIN=${PKG_TOOLS_BIN}
diff -r 9d5e3cc48c80 -r 95a1100abca0 pkgtools/pkg_install/files/add/perform.c
--- a/pkgtools/pkg_install/files/add/perform.c  Tue Nov 02 00:05:23 2004 +0000
+++ b/pkgtools/pkg_install/files/add/perform.c  Tue Nov 02 00:10:15 2004 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: perform.c,v 1.24 2004/08/06 16:57:03 jlam Exp $        */
+/*     $NetBSD: perform.c,v 1.25 2004/11/02 00:10:15 erh Exp $ */
 
 #if HAVE_CONFIG_H
 #include "config.h"
@@ -11,7 +11,7 @@
 #if 0
 static const char *rcsid = "from FreeBSD Id: perform.c,v 1.44 1997/10/13 15:03:46 jkh Exp";
 #else
-__RCSID("$NetBSD: perform.c,v 1.24 2004/08/06 16:57:03 jlam Exp $");
+__RCSID("$NetBSD: perform.c,v 1.25 2004/11/02 00:10:15 erh Exp $");
 #endif
 #endif
 
@@ -966,7 +966,7 @@
 fail:
        /* Nuke the whole (installed) show, XXX but don't clean directories */
        if (!Fake)
-               delete_package(FALSE, FALSE, &Plist);
+               delete_package(FALSE, FALSE, &Plist, FALSE);
 
 success:
        /* delete the packing list contents */
diff -r 9d5e3cc48c80 -r 95a1100abca0 pkgtools/pkg_install/files/delete/delete.h
--- a/pkgtools/pkg_install/files/delete/delete.h        Tue Nov 02 00:05:23 2004 +0000
+++ b/pkgtools/pkg_install/files/delete/delete.h        Tue Nov 02 00:10:15 2004 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: delete.h,v 1.3 2003/09/23 07:13:50 grant Exp $ */
+/* $NetBSD: delete.h,v 1.4 2004/11/02 00:10:15 erh Exp $ */
 
 /* from FreeBSD Id: delete.h,v 1.4 1997/02/22 16:09:35 peter Exp */
 
@@ -27,6 +27,7 @@
 
 extern char *Prefix;
 extern char *ProgramPath;
+extern Boolean NoDeleteFiles;
 extern Boolean NoDeInstall;
 extern Boolean CleanDirs;
 extern Boolean Force;
diff -r 9d5e3cc48c80 -r 95a1100abca0 pkgtools/pkg_install/files/delete/main.c
--- a/pkgtools/pkg_install/files/delete/main.c  Tue Nov 02 00:05:23 2004 +0000
+++ b/pkgtools/pkg_install/files/delete/main.c  Tue Nov 02 00:10:15 2004 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: main.c,v 1.13 2004/03/29 20:28:05 tv Exp $     */
+/*     $NetBSD: main.c,v 1.14 2004/11/02 00:10:15 erh Exp $    */
 
 #if HAVE_CONFIG_H
 #include "config.h"
@@ -11,7 +11,7 @@
 #if 0
 static char *rcsid = "from FreeBSD Id: main.c,v 1.11 1997/10/08 07:46:48 charnier Exp";
 #else
-__RCSID("$NetBSD: main.c,v 1.13 2004/03/29 20:28:05 tv Exp $");
+__RCSID("$NetBSD: main.c,v 1.14 2004/11/02 00:10:15 erh Exp $");
 #endif
 #endif
 
@@ -42,10 +42,11 @@
 #include "lib.h"
 #include "delete.h"
 
-static char Options[] = "DFK:ORVdfhnp:rv";
+static char Options[] = "DFK:NORVdfhnp:rv";
 
 char   *Prefix = NULL;
 char   *ProgramPath = NULL;
+Boolean NoDeleteFiles = FALSE;
 Boolean NoDeInstall = FALSE;
 Boolean CleanDirs = FALSE;
 Boolean File2Pkg = FALSE;
@@ -99,6 +100,11 @@
                        Verbose = TRUE;
                        break;
 
+               case 'N':
+                       NoDeleteFiles = TRUE;
+                       NoDeInstall = TRUE;
+                       break;
+
                case 'O':
                        OnlyDeleteFromPkgDB = TRUE;
                        break;
diff -r 9d5e3cc48c80 -r 95a1100abca0 pkgtools/pkg_install/files/delete/perform.c
--- a/pkgtools/pkg_install/files/delete/perform.c       Tue Nov 02 00:05:23 2004 +0000
+++ b/pkgtools/pkg_install/files/delete/perform.c       Tue Nov 02 00:10:15 2004 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: perform.c,v 1.11 2004/02/07 10:37:52 grant Exp $       */
+/*     $NetBSD: perform.c,v 1.12 2004/11/02 00:10:15 erh Exp $ */
 
 #if HAVE_CONFIG_H
 #include "config.h"
@@ -11,7 +11,7 @@
 #if 0
 static const char *rcsid = "from FreeBSD Id: perform.c,v 1.15 1997/10/13 15:03:52 jkh Exp";
 #else
-__RCSID("$NetBSD: perform.c,v 1.11 2004/02/07 10:37:52 grant Exp $");
+__RCSID("$NetBSD: perform.c,v 1.12 2004/11/02 00:10:15 erh Exp $");
 #endif
 #endif
 
@@ -327,6 +327,7 @@
                                             Verbose ? "-v" : "",
                                             (Force > 1) ? "-f -f" : (Force == 1) ? "-f" : "",
                                             NoDeInstall ? "-D" : "",
+                                            NoDeleteFiles ? "-N" : "",
                                             CleanDirs ? "-d" : "",
                                             Fake ? "-n" : "",
                                             rm_installed ? installed : lpp->lp_name, NULL);
@@ -671,9 +672,10 @@
        }
        if (fexists(PRESERVE_FNAME)) {
                printf("Package `%s' is marked as not for deletion\n", pkg);
-               if (Force <= 1) {
+               if (Force <= (NoDeleteFiles ? 0 : 1)) {
                        return 1;
                }
+               printf("Deleting anyway\n");
        }
        if (!isemptyfile(REQUIRED_BY_FNAME)) {
                /* This package is required by others. Either nuke
@@ -778,7 +780,7 @@
        }
        if (!Fake) {
                /* Some packages aren't packed right, so we need to just ignore delete_package()'s status.  Ugh! :-( */
-               if (delete_package(FALSE, CleanDirs, &Plist) == FAIL)
+               if (delete_package(FALSE, CleanDirs, &Plist, NoDeleteFiles) == FAIL)
                        warnx(
                "couldn't entirely delete package `%s'\n"
                "(perhaps the packing list is incorrectly specified?)", pkg);
diff -r 9d5e3cc48c80 -r 95a1100abca0 pkgtools/pkg_install/files/delete/pkg_delete.1
--- a/pkgtools/pkg_install/files/delete/pkg_delete.1    Tue Nov 02 00:05:23 2004 +0000
+++ b/pkgtools/pkg_install/files/delete/pkg_delete.1    Tue Nov 02 00:10:15 2004 +0000
@@ -1,4 +1,4 @@
-.\" $NetBSD: pkg_delete.1,v 1.6 2004/02/07 10:37:52 grant Exp $
+.\" $NetBSD: pkg_delete.1,v 1.7 2004/11/02 00:10:15 erh Exp $
 .\"
 .\" FreeBSD install - a package for the installation and maintenance
 .\" of non-core utilities.
@@ -114,6 +114,10 @@
 .It Fl n
 Don't actually deinstall a package, just report the steps that
 would be taken if it were.
+.It Fl N
+Remove the package's registration and its entries from the package database,
+but leave the files installed.  Don't run any deinstall scripts or @unexec lines
+either.
 .It Fl O
 Only delete the package's entries from the package database, do not
 touch the package or its files itself.
diff -r 9d5e3cc48c80 -r 95a1100abca0 pkgtools/pkg_install/files/delete/pkg_delete.cat1
--- a/pkgtools/pkg_install/files/delete/pkg_delete.cat1 Tue Nov 02 00:05:23 2004 +0000
+++ b/pkgtools/pkg_install/files/delete/pkg_delete.cat1 Tue Nov 02 00:10:15 2004 +0000
@@ -1,8 +1,8 @@
 PKG_DELETE(1)           NetBSD General Commands Manual           PKG_DELETE(1)
 
 NNAAMMEE
-     ppkkgg__ddeelleettee - a utility for deleting previously installed software package
-     distributions
+     ppkkgg__ddeelleettee -- a utility for deleting previously installed software pack-
+     age distributions
 
 SSYYNNOOPPSSIISS
      ppkkgg__ddeelleettee [--DDddFFffnnOORRrrVVvv] [--KK _p_k_g___d_b_d_i_r] [--pp _p_r_e_f_i_x] _p_k_g_-_n_a_m_e _._._.
@@ -63,6 +63,10 @@
      --nn      Don't actually deinstall a package, just report the steps that
              would be taken if it were.
 
+     --NN      Remove the package's registration and its entries from the pack-
+             age database, but leave the files installed.  Don't run any dein-
+             stall scripts or @unexec lines either.
+
      --OO      Only delete the package's entries from the package database, do
              not touch the package or its files itself.
 
diff -r 9d5e3cc48c80 -r 95a1100abca0 pkgtools/pkg_install/files/lib/lib.h
--- a/pkgtools/pkg_install/files/lib/lib.h      Tue Nov 02 00:05:23 2004 +0000
+++ b/pkgtools/pkg_install/files/lib/lib.h      Tue Nov 02 00:10:15 2004 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: lib.h,v 1.11 2004/04/11 06:56:11 rh Exp $ */
+/* $NetBSD: lib.h,v 1.12 2004/11/02 00:10:15 erh Exp $ */
 
 /* from FreeBSD Id: lib.h,v 1.25 1997/10/08 07:48:03 charnier Exp */
 
@@ -326,7 +326,7 @@
 void    write_plist(package_t *, FILE *, char *);
 void    read_plist(package_t *, FILE *);
 int     plist_cmd(char *, char **);
-int     delete_package(Boolean, Boolean, package_t *);
+int     delete_package(Boolean, Boolean, package_t *, Boolean);
 
 /* Package Database */
 int     pkgdb_open(int);
diff -r 9d5e3cc48c80 -r 95a1100abca0 pkgtools/pkg_install/files/lib/plist.c
--- a/pkgtools/pkg_install/files/lib/plist.c    Tue Nov 02 00:05:23 2004 +0000
+++ b/pkgtools/pkg_install/files/lib/plist.c    Tue Nov 02 00:10:15 2004 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: plist.c,v 1.10 2004/08/06 16:57:03 jlam Exp $  */
+/*     $NetBSD: plist.c,v 1.11 2004/11/02 00:10:15 erh Exp $   */
 
 #if HAVE_CONFIG_H
 #include "config.h"
@@ -11,7 +11,7 @@
 #if 0
 static const char *rcsid = "from FreeBSD Id: plist.c,v 1.24 1997/10/08 07:48:15 charnier Exp";
 #else
-__RCSID("$NetBSD: plist.c,v 1.10 2004/08/06 16:57:03 jlam Exp $");
+__RCSID("$NetBSD: plist.c,v 1.11 2004/11/02 00:10:15 erh Exp $");
 #endif
 #endif
 
@@ -335,7 +335,7 @@
  * run it too in cases of failure.
  */
 int
-delete_package(Boolean ign_err, Boolean nukedirs, package_t *pkg)
+delete_package(Boolean ign_err, Boolean nukedirs, package_t *pkg, Boolean NoDeleteFiles)
 {
        plist_t *p;
        char   *Where = ".", *last_file = "";
@@ -365,6 +365,8 @@
                        break;
 
                case PLIST_UNEXEC:
+                       if (NoDeleteFiles)
+                               break;
                        format_cmd(tmp, sizeof(tmp), p->name, Where, last_file);
                        if (Verbose)
                                printf("Execute `%s'\n", tmp);
@@ -381,6 +383,8 @@
                                warnx("attempting to delete directory `%s' as a file\n"
                                    "this packing list is incorrect - ignoring delete request", tmp);
                        } else {
+                               int     restored = 0;   /* restored from preserve? */
+
                                if (p->next && p->next->type == PLIST_COMMENT) {
                                        if (strncmp(p->next->name, CHECKSUM_HEADER, ChecksumHeaderLen) == 0) {
                                                char   *cp, buf[LegibleChecksumLen];
@@ -430,11 +434,9 @@
                                                }
                                        }
                                }
-                               if (Verbose)
+                               if (Verbose && !NoDeleteFiles)
                                        printf("Delete file %s\n", tmp);
-                               if (!Fake) {
-                                       int     restored = 0;   /* restored from preserve? */
-
+                               if (!Fake && !NoDeleteFiles) {
                                        if (delete_hierarchy(tmp, ign_err, nukedirs))
                                                fail = FAIL;
                                        if (preserve && name) {
@@ -450,7 +452,9 @@
                                                        }
                                                }
                                        }
+                               }
 
+                               if (!Fake) {
                                        if (!restored) {
 #ifdef PKGDB_DEBUG
                                                printf("pkgdb_remove(\"%s\")\n", tmp);  /* HF */
@@ -471,6 +475,9 @@
                        break;
 
                case PLIST_DIR_RM:
+                       if (NoDeleteFiles)
+                               break;
+
                        (void) snprintf(tmp, sizeof(tmp), "%s/%s", Where, p->name);
                        if (fexists(tmp)) {
                            if (!isdir(tmp)) {
diff -r 9d5e3cc48c80 -r 95a1100abca0 pkgtools/pkg_install/files/lib/version.h
--- a/pkgtools/pkg_install/files/lib/version.h  Tue Nov 02 00:05:23 2004 +0000



Home | Main Index | Thread Index | Old Index