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