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