From 10da79a1a13a0d71f65371634deefa327a793b59 Mon Sep 17 00:00:00 2001 From: dillo Date: Mon, 24 Apr 2006 13:52:04 +0000 Subject: Sync with src, version 20060424: Add support for creating summary file containing all information about a package repository needed by package managing software. This allows better use of remote binary package repositories. Discussed on tech-pkg. --- pkgtools/pkg_install/PLIST | 4 +- pkgtools/pkg_install/files/add/perform.c | 24 +----- pkgtools/pkg_install/files/info/info.h | 4 +- pkgtools/pkg_install/files/info/main.c | 12 ++- pkgtools/pkg_install/files/info/perform.c | 19 +++-- pkgtools/pkg_install/files/info/pkg_info.1 | 13 ++- pkgtools/pkg_install/files/info/pkg_info.cat1 | 9 ++- pkgtools/pkg_install/files/info/show.c | 90 ++++++++++++++++++++- pkgtools/pkg_install/files/lib/Makefile.in | 11 ++- pkgtools/pkg_install/files/lib/defs.h | 22 ++++- pkgtools/pkg_install/files/lib/lib.h | 3 +- pkgtools/pkg_install/files/lib/pkg_summary.5 | 102 ++++++++++++++++++++++++ pkgtools/pkg_install/files/lib/pkg_summary.cat5 | 82 +++++++++++++++++++ pkgtools/pkg_install/files/lib/var.c | 52 +++++++++++- pkgtools/pkg_install/files/lib/version.h | 4 +- 15 files changed, 402 insertions(+), 49 deletions(-) create mode 100644 pkgtools/pkg_install/files/lib/pkg_summary.5 create mode 100644 pkgtools/pkg_install/files/lib/pkg_summary.cat5 (limited to 'pkgtools/pkg_install') diff --git a/pkgtools/pkg_install/PLIST b/pkgtools/pkg_install/PLIST index 7aa0e897b24..ed567251ddd 100644 --- a/pkgtools/pkg_install/PLIST +++ b/pkgtools/pkg_install/PLIST @@ -1,4 +1,4 @@ -@comment $NetBSD: PLIST,v 1.7 2006/01/06 19:46:26 rillig Exp $ +@comment $NetBSD: PLIST,v 1.8 2006/04/24 13:52:04 dillo Exp $ man/cat1/linkfarm.0 man/cat1/pkg_add.0 man/cat1/pkg_admin.0 @@ -6,6 +6,7 @@ man/cat1/pkg_create.0 man/cat1/pkg_delete.0 man/cat1/pkg_info.0 man/cat1/pkg_view.0 +man/cat5/pkg_summary.0 man/man1/linkfarm.1 man/man1/pkg_add.1 man/man1/pkg_admin.1 @@ -13,6 +14,7 @@ man/man1/pkg_create.1 man/man1/pkg_delete.1 man/man1/pkg_info.1 man/man1/pkg_view.1 +man/man5/pkg_summary.5 sbin/linkfarm sbin/pkg_add sbin/pkg_admin diff --git a/pkgtools/pkg_install/files/add/perform.c b/pkgtools/pkg_install/files/add/perform.c index 27c1aba7ae8..10ad6497af5 100644 --- a/pkgtools/pkg_install/files/add/perform.c +++ b/pkgtools/pkg_install/files/add/perform.c @@ -1,4 +1,4 @@ -/* $NetBSD: perform.c,v 1.40 2006/04/06 06:49:30 reed Exp $ */ +/* $NetBSD: perform.c,v 1.41 2006/04/24 13:52:04 dillo Exp $ */ #if HAVE_CONFIG_H #include "config.h" @@ -14,7 +14,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.40 2006/04/06 06:49:30 reed Exp $"); +__RCSID("$NetBSD: perform.c,v 1.41 2006/04/24 13:52:04 dillo Exp $"); #endif #endif @@ -75,26 +75,6 @@ static char *Home; static lfile_head_t files; -/* - * Some systems such as OpenBSD-3.6 do not provide PRIu64. - * Others such as AIX-4.3.2 have a broken PRIu64 which includes - * a leading "%". - */ -#ifdef NEED_PRI_MACRO -# ifdef PRIu64 -# undef PRIu64 -# endif -# if SIZEOF_INT == 8 -# define PRIu64 "u" -# elif SIZEOF_LONG == 8 -# define PRIu64 "lu" -# elif SIZEOF_LONG_LONG == 8 -# define PRIu64 "llu" -# else -# error "unable to find a suitable PRIu64" -# endif -#endif - /* used in build information */ enum { Good, diff --git a/pkgtools/pkg_install/files/info/info.h b/pkgtools/pkg_install/files/info/info.h index 6a654465167..eb3a2cb92ef 100644 --- a/pkgtools/pkg_install/files/info/info.h +++ b/pkgtools/pkg_install/files/info/info.h @@ -1,4 +1,4 @@ -/* $NetBSD: info.h,v 1.9 2005/11/05 13:20:09 wiz Exp $ */ +/* $NetBSD: info.h,v 1.10 2006/04/24 13:52:04 dillo Exp $ */ /* from FreeBSD Id: info.h,v 1.10 1997/02/22 16:09:40 peter Exp */ @@ -52,6 +52,7 @@ #define SHOW_ALL_SIZE 0x10000 #define SHOW_BLD_DEPENDS 0x20000 #define SHOW_BI_VAR 0x40000 +#define SHOW_SUMMARY 0x80000 enum which { WHICH_ALL, @@ -78,5 +79,6 @@ extern void show_files(char *, package_t *); extern void show_depends(char *, package_t *); extern void show_bld_depends(char *, package_t *); extern void show_index(char *, char *, char *); +extern void show_summary(package_t *, const char *); #endif /* _INST_INFO_H_INCLUDE */ diff --git a/pkgtools/pkg_install/files/info/main.c b/pkgtools/pkg_install/files/info/main.c index eb4bee90b0c..1322b40e90a 100644 --- a/pkgtools/pkg_install/files/info/main.c +++ b/pkgtools/pkg_install/files/info/main.c @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.14 2005/11/05 13:20:09 wiz Exp $ */ +/* $NetBSD: main.c,v 1.15 2006/04/24 13:52:04 dillo Exp $ */ #if HAVE_CONFIG_H #include "config.h" @@ -11,7 +11,7 @@ #if 0 static char *rcsid = "from FreeBSD Id: main.c,v 1.14 1997/10/08 07:47:26 charnier Exp"; #else -__RCSID("$NetBSD: main.c,v 1.14 2005/11/05 13:20:09 wiz Exp $"); +__RCSID("$NetBSD: main.c,v 1.15 2006/04/24 13:52:04 dillo Exp $"); #endif #endif @@ -50,7 +50,7 @@ __RCSID("$NetBSD: main.c,v 1.14 2005/11/05 13:20:09 wiz Exp $"); #include "lib.h" #include "info.h" -static const char Options[] = ".aBbcDde:fFhIiK:kLl:mNnpQ:qRrsSuvV"; +static const char Options[] = ".aBbcDde:fFhIiK:kLl:mNnpQ:qRrsSuvVX"; int Flags = 0; enum which Which = WHICH_LIST; @@ -68,7 +68,7 @@ static void usage(void) { fprintf(stderr, "%s\n%s\n%s\n%s\n", - "usage: pkg_info [-BbcDdFfhIikLmNnpqRrSsVv] [-e package] [-K pkg_dbdir] [-l prefix]", + "usage: pkg_info [-BbcDdFfhIikLmNnpqRrSsVvX] [-e package] [-K pkg_dbdir] [-l prefix]", " pkg-name [...]", " pkg_info [-a | -u] [flags]", " pkg_info -Q variable pkg-name [pkg-name ...]"); @@ -205,6 +205,10 @@ main(int argc, char **argv) show_version(); /* NOTREACHED */ + case 'X': + Flags |= SHOW_SUMMARY; + break; + case 'h': case '?': default: diff --git a/pkgtools/pkg_install/files/info/perform.c b/pkgtools/pkg_install/files/info/perform.c index 3987b60bb95..6d394662658 100644 --- a/pkgtools/pkg_install/files/info/perform.c +++ b/pkgtools/pkg_install/files/info/perform.c @@ -1,4 +1,4 @@ -/* $NetBSD: perform.c,v 1.27 2006/04/04 06:28:22 wiz Exp $ */ +/* $NetBSD: perform.c,v 1.28 2006/04/24 13:52:05 dillo Exp $ */ #if HAVE_CONFIG_H #include "config.h" @@ -14,7 +14,7 @@ #if 0 static const char *rcsid = "from FreeBSD Id: perform.c,v 1.23 1997/10/13 15:03:53 jkh Exp"; #else -__RCSID("$NetBSD: perform.c,v 1.27 2006/04/04 06:28:22 wiz Exp $"); +__RCSID("$NetBSD: perform.c,v 1.28 2006/04/24 13:52:05 dillo Exp $"); #endif #endif @@ -76,6 +76,7 @@ pkg_do(char *pkg) int code = 0; lfile_t *lfp; int result; + char *binpkgfile = NULL; if (IS_URL(pkg)) { if ((cp = fileGetURL(pkg)) != NULL) { @@ -96,6 +97,7 @@ pkg_do(char *pkg) strlcpy(fname, pkg, sizeof(fname)); } cp = fname; + binpkgfile = fname; } if (cp) { @@ -109,6 +111,8 @@ pkg_do(char *pkg) */ char *cp2; + binpkgfile = NULL; + if ((cp2 = fileGetURL(cp)) != NULL) { strlcpy(fname, cp2, sizeof(fname)); isTMP = TRUE; @@ -131,9 +135,9 @@ pkg_do(char *pkg) LFILE_ADD(&files, lfp, MTREE_FNAME); if (Flags & SHOW_BUILD_VERSION) LFILE_ADD(&files, lfp, BUILD_VERSION_FNAME); - if (Flags & SHOW_BUILD_INFO) + if (Flags & (SHOW_BUILD_INFO|SHOW_SUMMARY)) LFILE_ADD(&files, lfp, BUILD_INFO_FNAME); - if (Flags & SHOW_PKG_SIZE) + if (Flags & (SHOW_PKG_SIZE|SHOW_SUMMARY)) LFILE_ADD(&files, lfp, SIZE_PKG_FNAME); if (Flags & SHOW_ALL_SIZE) LFILE_ADD(&files, lfp, SIZE_ALL_FNAME); @@ -232,12 +236,15 @@ pkg_do(char *pkg) fclose(fp); /* Start showing the package contents */ - if (!Quiet) { + if (!Quiet && !(Flags & SHOW_SUMMARY)) { printf("%sInformation for %s:\n\n", InfoPrefix, pkg); if (fexists(PRESERVE_FNAME)) { printf("*** PACKAGE MAY NOT BE DELETED ***\n"); } } + if (Flags & SHOW_SUMMARY) { + show_summary(&plist, binpkgfile); + } if (Flags & SHOW_COMMENT) { show_file(pkg, "Comment:\n", COMMENT_FNAME, TRUE); } @@ -305,7 +312,7 @@ pkg_do(char *pkg) show_file(pkg, "Size in bytes including required pkgs: ", SIZE_ALL_FNAME, TRUE); } - if (!Quiet) { + if (!Quiet && !(Flags & SHOW_SUMMARY)) { if (fexists(PRESERVE_FNAME)) { printf("*** PACKAGE MAY NOT BE DELETED ***\n\n"); } diff --git a/pkgtools/pkg_install/files/info/pkg_info.1 b/pkgtools/pkg_install/files/info/pkg_info.1 index 30a34fe95fd..87704db0336 100644 --- a/pkgtools/pkg_install/files/info/pkg_info.1 +++ b/pkgtools/pkg_install/files/info/pkg_info.1 @@ -1,4 +1,4 @@ -.\" $NetBSD: pkg_info.1,v 1.17 2005/11/05 13:20:09 wiz Exp $ +.\" $NetBSD: pkg_info.1,v 1.18 2006/04/24 13:52:05 dillo Exp $ .\" .\" FreeBSD install - a package for the installation and maintenance .\" of non-core utilities. @@ -17,7 +17,7 @@ .\" .\" @(#)pkg_info.1 .\" -.Dd November 1, 2005 +.Dd April 15, 2006 .Dt PKG_INFO 1 .Os .Sh NAME @@ -25,7 +25,7 @@ .Nd a utility for displaying information on software packages .Sh SYNOPSIS .Nm -.Op Fl BbcDdFfhIikLmNnpqRrSsVv +.Op Fl BbcDdFfhIikLmNnpqRrSsVvX .Op Fl e Ar package .Op Fl K Ar pkg_dbdir .Op Fl l Ar prefix @@ -179,6 +179,13 @@ See also Print version number and exit. .It Fl v Turn on verbose output. +.It Fl X +Print summary information for each package. +The summary format is +described in +.Xr pkg_summary 5 . +Its primary use is to contain all information about the contents of a +(remote) binary package repository needed by package managing software. .El .Sh TECHNICAL DETAILS Package info is either extracted from package files named on the diff --git a/pkgtools/pkg_install/files/info/pkg_info.cat1 b/pkgtools/pkg_install/files/info/pkg_info.cat1 index 3f06a949d33..e8ab1a27f43 100644 --- a/pkgtools/pkg_install/files/info/pkg_info.cat1 +++ b/pkgtools/pkg_install/files/info/pkg_info.cat1 @@ -4,7 +4,7 @@ NNAAMMEE ppkkgg__iinnffoo -- a utility for displaying information on software packages SSYYNNOOPPSSIISS - ppkkgg__iinnffoo [--BBbbccDDddFFffhhIIiikkLLmmNNnnppqqRRrrSSssVVvv] [--ee _p_a_c_k_a_g_e] [--KK _p_k_g___d_b_d_i_r] + ppkkgg__iinnffoo [--BBbbccDDddFFffhhIIiikkLLmmNNnnppqqRRrrSSssVVvvXX] [--ee _p_a_c_k_a_g_e] [--KK _p_k_g___d_b_d_i_r] [--ll _p_r_e_f_i_x] _p_k_g_-_n_a_m_e _._._. ppkkgg__iinnffoo [--aa | --uu] [flags] ppkkgg__iinnffoo [--QQ _v_a_r_i_a_b_l_e] _p_k_g_-_n_a_m_e _._._. @@ -115,6 +115,11 @@ DDEESSCCRRIIPPTTIIOONN --vv Turn on verbose output. + --XX Print summary information for each package. The summary format + is described in pkg_summary(5). Its primary use is to contain + all information about the contents of a (remote) binary package + repository needed by package managing software. + TTEECCHHNNIICCAALL DDEETTAAIILLSS Package info is either extracted from package files named on the command line, or from already installed package information in @@ -192,4 +197,4 @@ AAUUTTHHOORRSS NetBSD wildcard dependency processing, pkgdb, depends displaying, pkg size display etc. -NetBSD 3.0 November 1, 2005 NetBSD 3.0 +NetBSD 3.0 April 15, 2006 NetBSD 3.0 diff --git a/pkgtools/pkg_install/files/info/show.c b/pkgtools/pkg_install/files/info/show.c index 7b1b6aaf14f..38d42591b8c 100644 --- a/pkgtools/pkg_install/files/info/show.c +++ b/pkgtools/pkg_install/files/info/show.c @@ -1,4 +1,4 @@ -/* $NetBSD: show.c,v 1.9 2005/11/05 13:20:09 wiz Exp $ */ +/* $NetBSD: show.c,v 1.10 2006/04/24 13:52:05 dillo Exp $ */ #if HAVE_CONFIG_H #include "config.h" @@ -11,7 +11,7 @@ #if 0 static const char *rcsid = "from FreeBSD Id: show.c,v 1.11 1997/10/08 07:47:38 charnier Exp"; #else -__RCSID("$NetBSD: show.c,v 1.9 2005/11/05 13:20:09 wiz Exp $"); +__RCSID("$NetBSD: show.c,v 1.10 2006/04/24 13:52:05 dillo Exp $"); #endif #endif @@ -106,6 +106,8 @@ static const show_t showv[] = { {-1, NULL, NULL} }; +static int print_file_as_var(const char *, const char *); + void show_file(char *pkg, char *title, char *fname, Boolean separator) { @@ -341,3 +343,87 @@ show_bld_depends(char *title, package_t *plist) printf("\n"); } + + +/* + * Show entry for pkg_summary.txt file. + */ +void +show_summary(package_t *plist, const char *binpkgfile) +{ + static const char *bi_vars[] = { + "PKGPATH", + "CATEGORIES", + "PROVIDES", + "REQUIRES", + "PKG_OPTIONS", + "OPSYS", + "OS_VERSION", + "MACHINE_ARCH", + "LICENSE", + "HOMEPAGE", + "PKGTOOLS_VERSION", + "BUILD_DATE", + NULL + }; + + plist_t *p; + struct stat st; + + for (p = plist->head; p; p = p->next) { + switch (p->type) { + case PLIST_NAME: + printf("PKGNAME=%s\n", p->name); + break; + case PLIST_PKGDEP: + printf("DEPENDS=%s\n", p->name); + break; + case PLIST_PKGCFL: + printf("CONFLICTS=%s\n", p->name); + break; + + default: + break; + } + } + + print_file_as_var("COMMENT", COMMENT_FNAME); + print_file_as_var("SIZE_PKG", SIZE_PKG_FNAME); + + var_copy_list(BUILD_INFO_FNAME, bi_vars); + + if (binpkgfile != NULL && stat(binpkgfile, &st) == 0) { + printf("FILE_SIZE=%" PRIu64 "\n", (uint64_t)st.st_size); + /* XXX: DIGETS */ + } + + print_file_as_var("DESCRIPTION", DESC_FNAME); + putc('\n', stdout); +} + +/* + * Print the contents of file fname as value of variable var to stdout. + */ +static int +print_file_as_var(const char *var, const char *fname) +{ + FILE *fp; + char *line; + size_t len; + + fp = fopen(fname, "r"); + if (!fp) { + warn("unable to open %s file", fname); + return -1; + } + + while ((line = fgetln(fp, &len)) != (char *) NULL) { + if (line[len - 1] == '\n') + --len; + printf("%s=%.*s\n", var, (int)len, line); + } + + fclose(fp); + + return 0; +} diff --git a/pkgtools/pkg_install/files/lib/Makefile.in b/pkgtools/pkg_install/files/lib/Makefile.in index 05f0a184f1a..84eaeb5a170 100644 --- a/pkgtools/pkg_install/files/lib/Makefile.in +++ b/pkgtools/pkg_install/files/lib/Makefile.in @@ -1,8 +1,12 @@ -# $NetBSD: Makefile.in,v 1.11 2005/11/22 15:44:59 ben Exp $ +# $NetBSD: Makefile.in,v 1.12 2006/04/24 13:52:05 dillo Exp $ srcdir= @srcdir@ pkgdbdir= @pkgdbdir@ +mandir= @mandir@ + +man5dir= $(mandir)/man5 +cat5dir= $(mandir)/cat5 tar= @tar@ ftp= @ftp@ @@ -32,4 +36,7 @@ clean: rm -f $(OBJS) $(LIB) install: - @true # do nothing + $(INSTALL) -m 755 -d $(man5dir) + $(INSTALL) -m 755 -d $(cat5dir) + $(INSTALL) -m 444 pkg_summary.5 $(man5dir)/pkg_summary.5 + $(INSTALL) -m 444 pkg_summary.cat5 $(cat5dir)/pkg_summary.0 diff --git a/pkgtools/pkg_install/files/lib/defs.h b/pkgtools/pkg_install/files/lib/defs.h index 1c815087a80..964b7c5f717 100644 --- a/pkgtools/pkg_install/files/lib/defs.h +++ b/pkgtools/pkg_install/files/lib/defs.h @@ -1,4 +1,4 @@ -/* $NetBSD: defs.h,v 1.4 2003/09/23 07:13:52 grant Exp $ */ +/* $NetBSD: defs.h,v 1.5 2006/04/24 13:52:05 dillo Exp $ */ /* * Copyright (c) 1999-2000 Alistair G. Crooks. All rights reserved. @@ -96,4 +96,24 @@ to[(size) - 1] = 0; \ } while( /* CONSTCOND */ 0) +/* + * Some systems such as OpenBSD-3.6 do not provide PRIu64. + * Others such as AIX-4.3.2 have a broken PRIu64 which includes + * a leading "%". + */ +#ifdef NEED_PRI_MACRO +# ifdef PRIu64 +# undef PRIu64 +# endif +# if SIZEOF_INT == 8 +# define PRIu64 "u" +# elif SIZEOF_LONG == 8 +# define PRIu64 "lu" +# elif SIZEOF_LONG_LONG == 8 +# define PRIu64 "llu" +# else +# error "unable to find a suitable PRIu64" +# endif +#endif + #endif /* !DEFS_H_ */ diff --git a/pkgtools/pkg_install/files/lib/lib.h b/pkgtools/pkg_install/files/lib/lib.h index ae0501826a1..6d572f1d624 100644 --- a/pkgtools/pkg_install/files/lib/lib.h +++ b/pkgtools/pkg_install/files/lib/lib.h @@ -1,4 +1,4 @@ -/* $NetBSD: lib.h,v 1.23 2006/04/06 06:49:30 reed Exp $ */ +/* $NetBSD: lib.h,v 1.24 2006/04/24 13:52:05 dillo Exp $ */ /* from FreeBSD Id: lib.h,v 1.25 1997/10/08 07:48:03 charnier Exp */ @@ -322,6 +322,7 @@ int pipe_to_system_end(pipe_to_system_t *); char *var_get(const char *, const char *); int var_set(const char *, const char *, const char *); +int var_copy_list(const char *, const char **); /* automatically installed as dependency */ diff --git a/pkgtools/pkg_install/files/lib/pkg_summary.5 b/pkgtools/pkg_install/files/lib/pkg_summary.5 new file mode 100644 index 00000000000..e4b0d0c1003 --- /dev/null +++ b/pkgtools/pkg_install/files/lib/pkg_summary.5 @@ -0,0 +1,102 @@ +.\" $NetBSD: pkg_summary.5,v 1.1 2006/04/24 13:52:05 dillo Exp $ +.\" +.\" Copyright (c) 2006 The NetBSD Foundation +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of the NetBSD Foundation nor the names of its +.\" contributors may be used to endorse or promote products derived from +.\" this software without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION AND ITS CONTRIBUTORS +.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT +.\" NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +.\" FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +.\" SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +.\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.Dd April 24, 2006 +.Dt PKG_SUMMARY 5 +.Os +.Sh NAME +.Nm pkg_summary +.Nd summary of binary package repository +.Sh DESCRIPTION +The file +.Nm +contains information about each package in a binary package +repository as a list of variable-value pairs. +The variables describing different packages are separated by one empty +line. +Each line has the format +.Ev VARIABLE=VALUE . +If the value consists of more than one line, each line is prefixed with +.Ev VARIABLE= . +Multi-line variables are guaranteed to be in consecutive lines. +.Pp +The following variables are used: +.Bl -tag -width indent +.It Ev BUILD_DATE +(required) The date and time when the package was built. +.It Ev CATEGORIES +(required) A list of categories which this package fits in, separated by +space. +.It Ev COMMENT +(required) A one-line description of the package. +.It Ev CONFLICTS +(optional) A list of dewey patterns of packages the package conflicts +with, one per line. +If missing, this package has no conflicts. +.It Ev DEPENDS +(optional) A list of dewey patterns of packages the package depends +on, one per line. +If missing, this package has no dependencies. +.It Ev DESCRIPTION +(required) A more detailed description of the package. +.\" DIGEST +.It Ev FILE_SIZE +(optional) The size of the binary package file, in bytes. +.It Ev HOMEPAGE +(required) A URL where more information about the package can be found. +.It Ev LICENSE +(optional) The type of license this package is distributed under. +If empty or missing, it is OSI-approved. +.It Ev MACHINE_ARCH +(required) The architecture on which the package was compiled. +.It Ev OPSYS +(required) The operating system on which the package was compiled. +.It Ev OS_VERSION +(required) The version of the operating system on which the package +was compiled. +.It Ev PKG_OPTIONS +(optional) Any options selected to compile this package. +If missing, the package does not support options. +.It Ev PKGTOOLS_VERSION +(required) The version of the package tools used to create the package. +.It Ev PKGNAME +(required) The name of the package. +.It Ev PKGPATH +(required) The path of the package directory within pkgsrc. +.It Ev PROVIDES +(optional) A list of shared libraries provided by the package, +including major version number, one per line. +If missing, this package does not provide shared libraries. +.It Ev REQUIRES +(optional) A list of shared libraries needed by the package, including +major version number, one per line. +If missing, this package does not require shared libraries. +.It Ev SIZE_PKG +(required) The size of the package when installed, in bytes. +.El diff --git a/pkgtools/pkg_install/files/lib/pkg_summary.cat5 b/pkgtools/pkg_install/files/lib/pkg_summary.cat5 new file mode 100644 index 00000000000..2d4b7429d9a --- /dev/null +++ b/pkgtools/pkg_install/files/lib/pkg_summary.cat5 @@ -0,0 +1,82 @@ +PKG_SUMMARY(5) NetBSD File Formats Manual PKG_SUMMARY(5) + +NNAAMMEE + ppkkgg__ssuummmmaarryy -- summary of binary package repository + +DDEESSCCRRIIPPTTIIOONN + The file ppkkgg__ssuummmmaarryy contains information about each package in the + binary package repository as a list of variable-value pairs. The vari- + ables describing different packages are separated by one empty line. + Each line has the format VARIABLE=VALUE. If the value consits of more + than one line, each line is prefixed with VARIABLE=. Multi-line variables + are guaranteed to be contained in consecutive lines. + + The following variables are used: + + CATEGORIES + (required) A list of categories this package belongs in, sepa- + rated by space. + + COMMENT + (required) A one-line comment describing the package. + + CONFLICTS + (optional) A list of dewey patterns of packages the package con- + flicts with, one per line. If missing, this package has no con- + flicts. + + DEPENDS + (optional) A list of dewey patterns of packages the package + depends on, one per line. If missing, this package has no depen- + dencies. + + DESCRIPTION + (required) A more detailed description of the package. + + FILE_SIZE + (optional) The size of the binary package file, in bytes. + + HOMEPAGE + (mandtory) The URL of the package's original home page. + + LICENSE + (optional) The type of license this package is distributed under. + If empty or missing, it is OSI-approved. + + MACHINE_ARCH + (required) The architecture the package was compiled for. + + OPSYS (required) The operating system the package was compiled for. + + OS_VERSION + (required) The version of the operating system the package was + compiled for. + + PKG_OPTIONS + (optional) Any options selected to compile this package. If + missing, the package does not support options. + + PKGTOOLS_VERSION + (required) The version of the package tools used to create the + package. + + PKGNAME + (required) The name of the package. + + PKGPATH + (required) The path of the package directory within pkgsrc. + + PROVIDES + (optional) A list of shared libraries provided by the package, + including major version, one per line. If missing, this package + provides no shared libraries. + + REQUIRES + (optional) A list of shared libraries needed by the package, + including major version, one per line. If missing, this package + requires no shared libraries. + + SIZE_PKG + (required) The size of the installed package. + +NetBSD 3.0 April 15, 2006 NetBSD 3.0 diff --git a/pkgtools/pkg_install/files/lib/var.c b/pkgtools/pkg_install/files/lib/var.c index 1a8e68f969f..6945af32396 100644 --- a/pkgtools/pkg_install/files/lib/var.c +++ b/pkgtools/pkg_install/files/lib/var.c @@ -1,4 +1,4 @@ -/* $NetBSD: var.c,v 1.3 2006/04/04 06:37:15 wiz Exp $ */ +/* $NetBSD: var.c,v 1.4 2006/04/24 13:52:05 dillo Exp $ */ /*- * Copyright (c) 2005 The NetBSD Foundation, Inc. @@ -40,7 +40,7 @@ #include #endif #ifndef lint -__RCSID("$NetBSD: var.c,v 1.3 2006/04/04 06:37:15 wiz Exp $"); +__RCSID("$NetBSD: var.c,v 1.4 2006/04/24 13:52:05 dillo Exp $"); #endif #if HAVE_SYS_STAT_H @@ -61,6 +61,44 @@ __RCSID("$NetBSD: var.c,v 1.3 2006/04/04 06:37:15 wiz Exp $"); static const char *var_cmp(const char *, size_t, const char *, size_t); static void var_print(FILE *, const char *, const char *); +/* + * Copy the specified varibales from the file fname to stdout. + */ +int +var_copy_list(const char *fname, const char **variables) +{ + FILE *fp; + char *line; + size_t len; + const char *p; + int i; + + fp = fopen(fname, "r"); + if (!fp) { + if (errno != ENOENT) + warn("var_copy_list: can't open '%s' for reading", + fname); + return -1; + } + + while ((line = fgetln(fp, &len)) != (char *) NULL) { + if (line[len - 1] == '\n') + --len; + for (i=0; variables[i]; i++) { + if ((p=var_cmp(line, len, variables[i], + strlen(variables[i]))) != NULL) { + printf("%.*s\n", (int)len, line); + break; + } + } + } + (void) fclose(fp); + return 0; +} + +/* + * Print the value of variable from the file fname to stdout. + */ char * var_get(const char *fname, const char *variable) { @@ -108,6 +146,10 @@ var_get(const char *fname, const char *variable) return value; } +/* + * Add given variable with given value to file, overwriting any + * previous occurrence. + */ int var_set(const char *fname, const char *variable, const char *value) { @@ -213,6 +255,9 @@ var_set(const char *fname, const char *variable, const char *value) return 0; } +/* + * Check if line contains variable var, return pointer to its value or NULL. + */ static const char * var_cmp(const char *line, size_t linelen, const char *var, size_t varlen) { @@ -240,6 +285,9 @@ var_cmp(const char *line, size_t linelen, const char *var, size_t varlen) return line; } +/* + * Print given variable with value to file f. + */ static void var_print(FILE *f, const char *variable, const char *value) { diff --git a/pkgtools/pkg_install/files/lib/version.h b/pkgtools/pkg_install/files/lib/version.h index 44ee911c0be..784a75cbc03 100644 --- a/pkgtools/pkg_install/files/lib/version.h +++ b/pkgtools/pkg_install/files/lib/version.h @@ -1,4 +1,4 @@ -/* $NetBSD: version.h,v 1.58 2006/04/18 20:41:45 hubertf Exp $ */ +/* $NetBSD: version.h,v 1.59 2006/04/24 13:52:05 dillo Exp $ */ /* * Copyright (c) 2001 Thomas Klausner. All rights reserved. @@ -33,6 +33,6 @@ #ifndef _INST_LIB_VERSION_H_ #define _INST_LIB_VERSION_H_ -#define PKGTOOLS_VERSION "20060418" +#define PKGTOOLS_VERSION "20060424" #endif /* _INST_LIB_VERSION_H_ */ -- cgit v1.2.3