diff options
author | jlam <jlam@pkgsrc.org> | 2004-08-06 16:57:03 +0000 |
---|---|---|
committer | jlam <jlam@pkgsrc.org> | 2004-08-06 16:57:03 +0000 |
commit | fa97dd7fdd6ef1fd58b8475c1f438b99621455d8 (patch) | |
tree | c52cec9d133cf45db43c49564b948deb3eab3071 /pkgtools/pkg_install | |
parent | d80f435723d764ebf202242ff4359ec5b4d69b11 (diff) | |
download | pkgsrc-fa97dd7fdd6ef1fd58b8475c1f438b99621455d8.tar.gz |
Sync with version 20040730 from src/usr.sbin/pkg_install on the HEAD:
> Re-work the code which checks the recorded build versions of a binary
> package to make pkg_add work properly when no +BUILD_INFO file exists.
>
> Modify the return value from read_buildinfo() to return 1 for success
> and 0 for failure.
>
> Use symbolic constants, rather than integers.
>
> If we can't read the build information, always tell of this fact.
>
> Bump version to 20040730
>
> Addresses PR 26429; a different version of these mods were verified to
> allow a +BUILD_INFO-less binary package to be added by Martin Husemann.
Diffstat (limited to 'pkgtools/pkg_install')
22 files changed, 332 insertions, 300 deletions
diff --git a/pkgtools/pkg_install/files/add/extract.c b/pkgtools/pkg_install/files/add/extract.c index a9fda32f92a..7f29fb9cba4 100644 --- a/pkgtools/pkg_install/files/add/extract.c +++ b/pkgtools/pkg_install/files/add/extract.c @@ -1,4 +1,4 @@ -/* $NetBSD: extract.c,v 1.7 2003/09/23 13:22:37 grant Exp $ */ +/* $NetBSD: extract.c,v 1.8 2004/08/06 16:57:03 jlam Exp $ */ #if HAVE_CONFIG_H #include "config.h" @@ -11,7 +11,7 @@ #if 0 static const char *rcsid = "FreeBSD - Id: extract.c,v 1.17 1997/10/08 07:45:35 charnier Exp"; #else -__RCSID("$NetBSD: extract.c,v 1.7 2003/09/23 13:22:37 grant Exp $"); +__RCSID("$NetBSD: extract.c,v 1.8 2004/08/06 16:57:03 jlam Exp $"); #endif #endif diff --git a/pkgtools/pkg_install/files/add/perform.c b/pkgtools/pkg_install/files/add/perform.c index 947d249c69f..f48e5d2c4e1 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.23 2004/05/08 16:54:28 grant Exp $ */ +/* $NetBSD: perform.c,v 1.24 2004/08/06 16:57:03 jlam 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.23 2004/05/08 16:54:28 grant Exp $"); +__RCSID("$NetBSD: perform.c,v 1.24 2004/08/06 16:57:03 jlam Exp $"); #endif #endif @@ -58,14 +58,75 @@ __RCSID("$NetBSD: perform.c,v 1.23 2004/05/08 16:54:28 grant Exp $"); #include <sys/utsname.h> #endif -static int read_buildinfo(char **); - static char LogDir[FILENAME_MAX]; static int zapLogDir; /* Should we delete LogDir? */ static package_t Plist; static char *Home; +/* used in build information */ +enum { + Good, + Missing, + Warning, + Fatal +}; + +/* Read package build information */ +static int +read_buildinfo(char **buildinfo) +{ + char *key; + char *line; + size_t len; + FILE *fp; + + if ((fp = fopen(BUILD_INFO_FNAME, "r")) == NULL) { + warnx("unable to open %s file.", BUILD_INFO_FNAME); + return 0; + } + + while ((line = fgetln(fp, &len)) != NULL) { + if (line[len - 1] == '\n') + line[len - 1] = '\0'; + + if ((key = strsep(&line, "=")) == NULL) + continue; + + /* + * pkgsrc used to create the BUILDINFO file using + * "key= value", so skip the space if it's there. + */ + if (line == NULL) + continue; + if (line[0] == ' ') + line += sizeof(char); + + /* + * we only care about opsys, arch, version, and + * dependency recommendations + */ + if (line[0] != '\0') { + if (strcmp(key, "OPSYS") == 0) + buildinfo[BI_OPSYS] = strdup(line); + else if (strcmp(key, "OS_VERSION") == 0) + buildinfo[BI_OS_VERSION] = strdup(line); + else if (strcmp(key, "MACHINE_ARCH") == 0) + buildinfo[BI_MACHINE_ARCH] = strdup(line); + else if (strcmp(key, "IGNORE_RECOMMENDED") == 0) + buildinfo[BI_IGNORE_RECOMMENDED] = strdup(line); + } + } + (void) fclose(fp); + if (buildinfo[BI_OPSYS] == NULL || + buildinfo[BI_OS_VERSION] == NULL || + buildinfo[BI_MACHINE_ARCH] == NULL) { + warnx("couldn't extract build information from package."); + return 0; + } + return 1; +} + static int sanity_check(const char *pkg) { @@ -288,10 +349,13 @@ pkg_do(const char *pkg) } } - /* Check OS, version and architecture */ - if (read_buildinfo(buildinfo) != 0 && !Force) { - warnx("aborting."); - goto bomb; + /* Read the OS, version and architecture from BUILD_INFO file */ + if (!read_buildinfo(buildinfo)) { + warn("can't read build information from %s", BUILD_INFO_FNAME); + if (!Force) { + warnx("aborting."); + goto bomb; + } } if (uname(&host_uname) < 0) { @@ -301,34 +365,54 @@ pkg_do(const char *pkg) goto bomb; } } else { - int osbad = 0; - - /* If either the OS or arch are different, bomb */ - if (strcmp(OPSYS_NAME, buildinfo[BI_OPSYS]) != 0 || - strcmp(MACHINE_ARCH, buildinfo[BI_MACHINE_ARCH]) != 0) - osbad = 2; - - /* If OS and arch are the same, warn if version differs */ - if (strcmp(OPSYS_NAME, buildinfo[BI_OPSYS]) == 0 && - strcmp(MACHINE_ARCH, buildinfo[BI_MACHINE_ARCH]) == 0) { - if (strcmp(host_uname.release, buildinfo[BI_OS_VERSION]) != 0) - osbad = 1; - } else - osbad = 2; - - if (osbad) { - warnx("Package `%s' OS mismatch:", pkg); - warnx("%s/%s %s (pkg) vs. %s/%s %s (this host)", - buildinfo[BI_OPSYS], - buildinfo[BI_MACHINE_ARCH], - buildinfo[BI_OS_VERSION], - OPSYS_NAME, - MACHINE_ARCH, - host_uname.release); - } - if (!Force && (osbad >= 2)) { - warnx("aborting."); - goto bomb; + int status = Good; + + /* check that we have read some values from buildinfo */ + if (buildinfo[BI_OPSYS] == NULL) { + warnx("Missing operating system value from build information"); + status = Missing; + } + if (buildinfo[BI_MACHINE_ARCH] == NULL) { + warnx("Missing machine architecture value from build information"); + status = Missing; + } + if (buildinfo[BI_OS_VERSION] == NULL) { + warnx("Missing operating system version value from build information"); + status = Missing; + } + + if (status == Good) { + /* If either the OS or arch are different, bomb */ + if (strcmp(OPSYS_NAME, buildinfo[BI_OPSYS]) != 0 || + strcmp(MACHINE_ARCH, buildinfo[BI_MACHINE_ARCH]) != 0) { + status = Fatal; + } + + /* If OS and arch are the same, warn if version differs */ + if (strcmp(OPSYS_NAME, buildinfo[BI_OPSYS]) == 0 && + strcmp(MACHINE_ARCH, buildinfo[BI_MACHINE_ARCH]) == 0) { + if (strcmp(host_uname.release, buildinfo[BI_OS_VERSION]) != 0) { + status = Warning; + } + } else { + status = Fatal; + } + + if (status != Good) { + warnx("Package `%s' OS mismatch:", pkg); + warnx("%s/%s %s (pkg) vs. %s/%s %s (this host)", + buildinfo[BI_OPSYS], + buildinfo[BI_MACHINE_ARCH], + buildinfo[BI_OS_VERSION], + OPSYS_NAME, + MACHINE_ARCH, + host_uname.release); + } + } + + if (!Force && status == Fatal) { + warnx("aborting."); + goto bomb; } } @@ -957,57 +1041,3 @@ pkg_perform(lpkg_head_t *pkgs) return err_cnt; } -/* Read package build information */ -static int -read_buildinfo(char **buildinfo) -{ - char *key; - char *line; - size_t len; - FILE *fp; - - fp = fopen(BUILD_INFO_FNAME, "r"); - if (!fp) { - warnx("unable to open %s file.", BUILD_INFO_FNAME); - return 1; - } - - while ((line = fgetln(fp, &len)) != NULL) { - if (line[len - 1] == '\n') - line[len - 1] = '\0'; - - if ((key = strsep(&line, "=")) == NULL) - continue; - - /* - * pkgsrc used to create the BUILDINFO file using - * "key= value", so skip the space if it's there. - */ - if (line == NULL) - continue; - if (line[0] == ' ') - line += sizeof(char); - - /* - * we only care about opsys, arch, version, and - * dependency recommendations - */ - if (line[0] != '\0') { - if (strcmp(key, "OPSYS") == 0) - buildinfo[BI_OPSYS] = strdup(line); - else if (strcmp(key, "OS_VERSION") == 0) - buildinfo[BI_OS_VERSION] = strdup(line); - else if (strcmp(key, "MACHINE_ARCH") == 0) - buildinfo[BI_MACHINE_ARCH] = strdup(line); - else if (strcmp(key, "IGNORE_RECOMMENDED") == 0) - buildinfo[BI_IGNORE_RECOMMENDED] = strdup(line); - } - } - if (buildinfo[BI_OPSYS] == NULL || - buildinfo[BI_OS_VERSION] == NULL || - buildinfo[BI_MACHINE_ARCH] == NULL) { - warnx("couldn't extract build information from package."); - return 1; - } - return 0; -} diff --git a/pkgtools/pkg_install/files/add/pkg_add.1 b/pkgtools/pkg_install/files/add/pkg_add.1 index d0e368d5b50..bfd27d3f045 100644 --- a/pkgtools/pkg_install/files/add/pkg_add.1 +++ b/pkgtools/pkg_install/files/add/pkg_add.1 @@ -1,4 +1,4 @@ -.\" $NetBSD: pkg_add.1,v 1.8 2004/04/11 06:56:11 rh Exp $ +.\" $NetBSD: pkg_add.1,v 1.9 2004/08/06 16:57:03 jlam Exp $ .\" .\" FreeBSD install - a package for the installation and maintenance .\" of non-core utilities. @@ -17,7 +17,7 @@ .\" .\" @(#)pkg_add.1 .\" -.Dd December 20, 2003 +.Dd April 11, 2004 .Dt PKG_ADD 1 .Os .Sh NAME diff --git a/pkgtools/pkg_install/files/add/pkg_add.cat1 b/pkgtools/pkg_install/files/add/pkg_add.cat1 index a46791605de..028b3d9293a 100644 --- a/pkgtools/pkg_install/files/add/pkg_add.cat1 +++ b/pkgtools/pkg_install/files/add/pkg_add.cat1 @@ -1,4 +1,4 @@ -PKG_ADD(1) NetBSD General Commands Manual PKG_ADD(1) +PKG_ADD(1) NetBSD Reference Manual PKG_ADD(1) NNAAMMEE ppkkgg__aadddd - a utility for installing and upgrading software package distri- @@ -14,14 +14,13 @@ DDEESSCCRRIIPPTTIIOONN been previously created with the pkg_create(1) command. Packages are prepared collections of pre-built binaries, documentation, configura- tions, installation instructions and/or other files. ppkkgg__aadddd can recur- - sively install other packages that the current package depends on or - requires from both local disk and via FTP or HTTP. + sively install other packages that the current package depends on or re- + quires from both local disk and via FTP or HTTP. WWAARRNNIINNGG - _S_i_n_c_e _t_h_e ppkkgg__aadddd _c_o_m_m_a_n_d _m_a_y _e_x_e_c_u_t_e _s_c_r_i_p_t_s _o_r _p_r_o_g_r_a_m_s _c_o_n_t_a_i_n_e_d - _w_i_t_h_i_n _a _p_a_c_k_a_g_e _f_i_l_e_, _y_o_u_r _s_y_s_t_e_m _m_a_y _b_e _s_u_s_c_e_p_t_i_b_l_e _t_o _`_`_T_r_o_j_a_n - _h_o_r_s_e_s_'_' _o_r _o_t_h_e_r _s_u_b_t_l_e _a_t_t_a_c_k_s _f_r_o_m _m_i_s_c_r_e_a_n_t_s _w_h_o _c_r_e_a_t_e _d_a_n_g_e_r_o_u_s - _p_a_c_k_a_g_e _f_i_l_e_s_. + _S_i_n_c_e _t_h_e ppkkgg__aadddd _c_o_m_m_a_n_d _m_a_y _e_x_e_c_u_t_e _s_c_r_i_p_t_s _o_r _p_r_o_g_r_a_m_s _c_o_n_t_a_i_n_e_d _w_i_t_h_- + _i_n _a _p_a_c_k_a_g_e _f_i_l_e_, _y_o_u_r _s_y_s_t_e_m _m_a_y _b_e _s_u_s_c_e_p_t_i_b_l_e _t_o _`_`_T_r_o_j_a_n _h_o_r_s_e_s_'_' _o_r + _o_t_h_e_r _s_u_b_t_l_e _a_t_t_a_c_k_s _f_r_o_m _m_i_s_c_r_e_a_n_t_s _w_h_o _c_r_e_a_t_e _d_a_n_g_e_r_o_u_s _p_a_c_k_a_g_e _f_i_l_e_s_. _Y_o_u _a_r_e _a_d_v_i_s_e_d _t_o _v_e_r_i_f_y _t_h_e _c_o_m_p_e_t_e_n_c_e _a_n_d _i_d_e_n_t_i_t_y _o_f _t_h_o_s_e _w_h_o _p_r_o_- _v_i_d_e _i_n_s_t_a_l_l_a_b_l_e _p_a_c_k_a_g_e _f_i_l_e_s_. _F_o_r _e_x_t_r_a _p_r_o_t_e_c_t_i_o_n_, _u_s_e _t_h_e _d_i_g_i_t_a_l @@ -41,17 +40,16 @@ OOPPTTIIOONNSS or a local pathname, a package name of "-" will cause ppkkgg__aadddd to read from stdin. If the packages are not found in the current working directory, ppkkgg__aadddd will search them in each directory - named by the PKG_PATH environment variable. Any dependencies - required by the installed package will be searched in the same - location that the original package was installed from. + named by the PKG_PATH environment variable. Any dependencies re- + quired by the installed package will be searched in the same lo- + cation that the original package was installed from. --ff Force installation to proceed even if prerequisite packages are not installed or the requirements script fails. Although ppkkgg__aadddd will still try to find and auto-install missing prerequisite - packages, a failure to find one will not be fatal. This flag - also overrides the fatal error when the operating system or - architecture the package was built on differ from that of the - host. + packages, a failure to find one will not be fatal. This flag al- + so overrides the fatal error when the operating system or archi- + tecture the package was built on differ from that of the host. --II If an installation script exists for a given package, do not exe- cute it. @@ -81,12 +79,12 @@ OOPPTTIIOONNSS Set _p_r_e_f_i_x as the directory in which to extract files from a package. If a package has set its default directory, it will be overridden by this flag. Note that only the first @@ccwwdd directive - will be replaced, since ppkkgg__aadddd has no way of knowing which - directory settings are relative and which are absolute. It is - rare in any case to see more than one directory transition made, - but when such does happen and you wish to have control over *all* - directory transitions, then you may then wish to look into the - use of MMAASSTTEERR and SSLLAAVVEE modes (see the --MM and --SS options). + will be replaced, since ppkkgg__aadddd has no way of knowing which di- + rectory settings are relative and which are absolute. It is rare + in any case to see more than one directory transition made, but + when such does happen and you wish to have control over *all* di- + rectory transitions, then you may then wish to look into the use + of MMAASSTTEERR and SSLLAAVVEE modes (see the --MM and --SS options). --RR Do not record the installation of a package. This means that you cannot deinstall it later, so only use this option if you know @@ -108,14 +106,14 @@ OOPPTTIIOONNSS are defined: none, gpg and pgp5. The signature will be verified at install time, and the results will be displayed. If the sig- nature type is anything other than none, the user will be asked - if ppkkgg__aadddd should proceed to install the binary package. The - user must then take the decision whether to proceed or not, - depending upon the amount of trust that is placed in the signa- - tory of the binary package. Please note that, at the current - time, it is not possible to use the verification feature when - using ppkkgg__aadddd to add a binary package via a URL - the package, - and the related detached signature file, must be local for the - verification to work. + if ppkkgg__aadddd should proceed to install the binary package. The us- + er must then take the decision whether to proceed or not, depend- + ing upon the amount of trust that is placed in the signatory of + the binary package. Please note that, at the current time, it is + not possible to use the verification feature when using ppkkgg__aadddd + to add a binary package via a URL - the package, and the related + detached signature file, must be local for the verification to + work. --tt _t_e_m_p_l_a_t_e Use _t_e_m_p_l_a_t_e as the input to mktemp(3) when creating a ``staging @@ -129,10 +127,9 @@ OOPPTTIIOONNSS _t_e_m_p_l_a_t_e to reside on the same disk partition as target directo- ries for package file installation; often this is _/_u_s_r. - --uu If the package that's being installed is already installed, - either in the same or a different version, an update is per- - formed. See below for a more detailed description of the - process. + --uu If the package that's being installed is already installed, ei- + ther in the same or a different version, an update is performed. + See below for a more detailed description of the process. --VV Print version number and exit. @@ -140,8 +137,8 @@ OOPPTTIIOONNSS --WW _v_i_e_w_b_a_s_e Set _v_i_e_w_b_a_s_e as the base directory for the managed views. The - default _v_i_e_w_b_a_s_e directory is set by pkg_view(1). This value - also may be set from the LOCALBASE environment variable. + default _v_i_e_w_b_a_s_e directory is set by pkg_view(1). This value al- + so may be set from the LOCALBASE environment variable. --ww _v_i_e_w Set the _v_i_e_w to which packages should be added after installa- @@ -155,15 +152,15 @@ OOPPTTIIOONNSS ppkkgg__aadddd ftp://ftp.NetBSD.org/pub/NetBSD/pack- ages/1.5/i386/shells/bash-2.04.tgz or ppkkgg__aadddd http://www.exam- ple.org/packages/screen-4.0.tbz). Note: For ftp transfers, if you wish - to use _p_a_s_s_i_v_e _m_o_d_e ftp in such transfers, set the variable _F_T_P___P_A_S_- - _S_I_V_E___M_O_D_E to some value in your environment. Otherwise, the more stan- + to use _p_a_s_s_i_v_e _m_o_d_e ftp in such transfers, set the variable _F_T_P___P_A_S_- + _S_I_V_E___M_O_D_E to some value in your environment. Otherwise, the more stan- dard ACTIVE mode may be used. If ppkkgg__aadddd consistently fails to fetch a package from a site known to work, it may be because you have a firewall - that demands the usage of _p_a_s_s_i_v_e _m_o_d_e ftp. + that demands the usage of _p_a_s_s_i_v_e _m_o_d_e ftp. TTEECCHHNNIICCAALL DDEETTAAIILLSS - ppkkgg__aadddd extracts each package's "packing list" into a special staging - directory in /var/tmp (or $PKG_TMPDIR if set) and then runs through the + ppkkgg__aadddd extracts each package's "packing list" into a special staging di- + rectory in /var/tmp (or $PKG_TMPDIR if set) and then runs through the following sequence to fully extract the contents of the package: 1. A check is made to determine if the package or another version @@ -177,18 +174,18 @@ TTEECCHHNNIICCAALL DDEETTAAIILLSS ful, replacing is prepared by moving an existing _+_R_E_Q_U_I_R_E_D___B_Y file aside (if it exists), and running pkg_delete(1) on the installed package. Installation then proceeds as if the pack- - age was not installed, and restores the _+_R_E_Q_U_I_R_E_D___B_Y file - afterwards. + age was not installed, and restores the _+_R_E_Q_U_I_R_E_D___B_Y file af- + terwards. 2. A check is made to determine if the package conflicts (from - @@ppkkggccffll directives, see pkg_create(1)) with an already - recorded as installed package. If it is, installation is ter- - minated. + @@ppkkggccffll directives, see pkg_create(1)) with an already record- + ed as installed package. If it is, installation is terminat- + ed. 3. All package dependencies (from @@ppkkggddeepp directives, see pkg_create(1)) are read from the packing list. If any of - these required packages are not currently installed, an - attempt is made to find and install it; if the missing package + these required packages are not currently installed, an at- + tempt is made to find and install it; if the missing package cannot be found or installed, the installation is terminated. 4. A search is made for any @@ooppttiioonn directives which control how @@ -197,9 +194,9 @@ TTEECCHHNNIICCAALL DDEETTAAIILLSS package to be extracted directly into its prefix directory rather than moving it through a staging area in _/_v_a_r_/_t_m_p. - 5. If @@ooppttiioonn eexxttrraacctt--iinn--ppllaaccee is enabled, the package is now - extracted directly into its final location, otherwise it is - extracted into the staging area. + 5. If @@ooppttiioonn eexxttrraacctt--iinn--ppllaaccee is enabled, the package is now ex- + tracted directly into its final location, otherwise it is ex- + tracted into the staging area. 6. The package build information is extracted from the _+_B_U_I_L_D___I_N_F_O file and compared against the result of uname(3). @@ -232,8 +229,8 @@ TTEECCHHNNIICCAALL DDEETTAAIILLSS _p_k_g_-_n_a_m_e The name of the package being installed. PPRREE--IINNSSTTAALLLL Keyword denoting that the script is to perform - any actions needed before the package is - installed. + any actions needed before the package is in- + stalled. If the _i_n_s_t_a_l_l script exits with a non-zero status code, the installation is terminated. @@ -267,8 +264,8 @@ TTEECCHHNNIICCAALL DDEETTAAIILLSS an alternate package database directory is specified, then it overrides the _/_v_a_r_/_d_b_/_p_k_g path shown above). - 14. If the package is a depoted package, then add it to the - default view. + 14. If the package is a depoted package, then add it to the de- + fault view. 15. The staging area is deleted and the program terminates. @@ -292,12 +289,12 @@ EENNVVIIRROONNMMEENNTT directory is _/_v_a_r_/_d_b_/_p_k_g. PKG_PATH The value of the PKG_PATH is used if a given package can't be - found, it's usually set to _/_u_s_r_/_p_k_g_s_r_c_/_p_a_c_k_a_g_e_s_/_A_l_l. The - environment variable should be a series of entries separated - by semicolons. Each entry consists of a directory name or - URL. The current directory may be indicated implicitly by an - empty directory name, or explicitly by a single period. FTP - URLs may not end with a slash. + found, it's usually set to _/_u_s_r_/_p_k_g_s_r_c_/_p_a_c_k_a_g_e_s_/_A_l_l. The en- + vironment variable should be a series of entries separated by + semicolons. Each entry consists of a directory name or URL. + The current directory may be indicated implicitly by an empty + directory name, or explicitly by a single period. FTP URLs + may not end with a slash. PKG_TMPDIR Staging directory for installing packages, defaults to /var/tmp. Set to directory with lots of free disk if you run @@ -307,8 +304,8 @@ EENNVVIIRROONNMMEENNTT variable. EEXXAAMMPPLLEESS - In all cases, ppkkgg__aadddd will try to install binary packages listed in - dependencies list. + In all cases, ppkkgg__aadddd will try to install binary packages listed in de- + pendencies list. You can specify a compiled binary package explicitly on the command line. @@ -354,4 +351,4 @@ BBUUGGSS Sure to be others. -NetBSD 1.6 December 20, 2003 NetBSD 1.6 +NetBSD 1.6.2 April 11, 2004 6 diff --git a/pkgtools/pkg_install/files/admin/main.c b/pkgtools/pkg_install/files/admin/main.c index 2fa200527ea..78608666178 100644 --- a/pkgtools/pkg_install/files/admin/main.c +++ b/pkgtools/pkg_install/files/admin/main.c @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.14 2004/02/07 10:37:52 grant Exp $ */ +/* $NetBSD: main.c,v 1.15 2004/08/06 16:57:03 jlam Exp $ */ #if HAVE_CONFIG_H #include "config.h" @@ -8,7 +8,7 @@ #include <sys/cdefs.h> #endif #ifndef lint -__RCSID("$NetBSD: main.c,v 1.14 2004/02/07 10:37:52 grant Exp $"); +__RCSID("$NetBSD: main.c,v 1.15 2004/08/06 16:57:03 jlam Exp $"); #endif /* @@ -156,7 +156,7 @@ check1pkg(const char *pkgdir) (void) strlcpy(buf, SYMLINK_HEADER, sizeof(buf)); if ((cc = readlink(file, &buf[SymlinkHeaderLen], - sizeof(buf) - SymlinkHeaderLen)) < 0) { + sizeof(buf) - SymlinkHeaderLen - 1)) < 0) { warnx("can't readlink `%s'", file); } else { buf[SymlinkHeaderLen + cc] = 0x0; diff --git a/pkgtools/pkg_install/files/bpm/bpm.sh b/pkgtools/pkg_install/files/bpm/bpm.sh.in index eb6361bac8d..04e9850e883 100644 --- a/pkgtools/pkg_install/files/bpm/bpm.sh +++ b/pkgtools/pkg_install/files/bpm/bpm.sh.in @@ -1,6 +1,6 @@ #! /bin/sh # -# $NetBSD: bpm.sh,v 1.2 2004/03/30 15:28:08 tv Exp $ +# $NetBSD: bpm.sh.in,v 1.1 2004/08/06 16:57:03 jlam Exp $ # # Copyright (c) 2003 Alistair G. Crooks. All rights reserved. # diff --git a/pkgtools/pkg_install/files/configure b/pkgtools/pkg_install/files/configure index ddb153da113..50f249a01c0 100755 --- a/pkgtools/pkg_install/files/configure +++ b/pkgtools/pkg_install/files/configure @@ -4487,7 +4487,7 @@ done - ac_config_files="$ac_config_files Makefile add/Makefile admin/Makefile create/Makefile delete/Makefile info/Makefile lib/Makefile view/Makefile view/linkfarm.sh view/pkg_view.sh" + ac_config_files="$ac_config_files Makefile add/Makefile admin/Makefile bpm/bpm.sh create/Makefile delete/Makefile info/Makefile lib/Makefile view/Makefile view/linkfarm.sh view/pkg_view.sh" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -5017,6 +5017,7 @@ do "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "add/Makefile" ) CONFIG_FILES="$CONFIG_FILES add/Makefile" ;; "admin/Makefile" ) CONFIG_FILES="$CONFIG_FILES admin/Makefile" ;; + "bpm/bpm.sh" ) CONFIG_FILES="$CONFIG_FILES bpm/bpm.sh" ;; "create/Makefile" ) CONFIG_FILES="$CONFIG_FILES create/Makefile" ;; "delete/Makefile" ) CONFIG_FILES="$CONFIG_FILES delete/Makefile" ;; "info/Makefile" ) CONFIG_FILES="$CONFIG_FILES info/Makefile" ;; diff --git a/pkgtools/pkg_install/files/configure.ac b/pkgtools/pkg_install/files/configure.ac index 777fde93792..94e652e8d57 100644 --- a/pkgtools/pkg_install/files/configure.ac +++ b/pkgtools/pkg_install/files/configure.ac @@ -87,7 +87,7 @@ AH_BOTTOM( #endif ) -AC_CONFIG_FILES([Makefile add/Makefile admin/Makefile create/Makefile \ - delete/Makefile info/Makefile lib/Makefile view/Makefile \ - view/linkfarm.sh view/pkg_view.sh]) +AC_CONFIG_FILES([Makefile add/Makefile admin/Makefile bpm/bpm.sh \ + create/Makefile delete/Makefile info/Makefile lib/Makefile \ + view/Makefile view/linkfarm.sh view/pkg_view.sh]) AC_OUTPUT diff --git a/pkgtools/pkg_install/files/create/pkg_create.1 b/pkgtools/pkg_install/files/create/pkg_create.1 index 6111f35c6d4..8aeba5faa36 100644 --- a/pkgtools/pkg_install/files/create/pkg_create.1 +++ b/pkgtools/pkg_install/files/create/pkg_create.1 @@ -1,4 +1,4 @@ -.\" $NetBSD: pkg_create.1,v 1.6 2003/09/23 07:13:49 grant Exp $ +.\" $NetBSD: pkg_create.1,v 1.7 2004/08/06 16:57:03 jlam Exp $ .\" .\" FreeBSD install - a package for the installation and maintenance .\" of non-core utilities. @@ -288,7 +288,7 @@ Store the given file for later querying with the .Xr pkg_info 1 .Fl s flag. -The file is expected to contain the the size (in bytes) of all files of +The file is expected to contain the size (in bytes) of all files of this package added up and stored as a ASCII string, terminated by a newline. .It Fl t Ar template Use diff --git a/pkgtools/pkg_install/files/create/pkg_create.cat1 b/pkgtools/pkg_install/files/create/pkg_create.cat1 index 22a8cb8602f..3aa299e3250 100644 --- a/pkgtools/pkg_install/files/create/pkg_create.cat1 +++ b/pkgtools/pkg_install/files/create/pkg_create.cat1 @@ -1,4 +1,4 @@ -PKG_CREATE(1) NetBSD General Commands Manual PKG_CREATE(1) +PKG_CREATE(1) NetBSD Reference Manual PKG_CREATE(1) NNAAMMEE ppkkgg__ccrreeaattee - a utility for creating software package distributions @@ -9,13 +9,13 @@ SSYYNNOOPPSSIISS [--KK _p_k_g___d_b_d_i_r] [--kk _d_s_c_r_i_p_t] [--LL _S_r_c_D_i_r] [--mm _m_t_r_e_e_f_i_l_e] [--nn _p_r_e_s_e_r_v_e_-_f_i_l_e] [--PP _d_p_k_g_s] [--pp _p_r_e_f_i_x] [--rr _r_s_c_r_i_p_t] [--SS _s_i_z_e_-_a_l_l_-_f_i_l_e] [--ss _s_i_z_e_-_p_k_g_-_f_i_l_e] [--tt _t_e_m_p_l_a_t_e] - [--XX _e_x_c_l_u_d_e_f_i_l_e] --cc _c_o_m_m_e_n_t --dd _d_e_s_c_r_i_p_t_i_o_n --ff _p_a_c_k_l_i_s_t - _p_k_g_-_n_a_m_e + [--XX _e_x_c_l_u_d_e_f_i_l_e] --cc _c_o_m_m_e_n_t --dd _d_e_s_c_r_i_p_t_i_o_n --ff _p_a_c_k_l_i_s_t _p_k_g_- + _n_a_m_e DDEESSCCRRIIPPTTIIOONN The ppkkgg__ccrreeaattee command is used to create packages that will subsequently - be fed to one of the package extraction/info utilities. The input - description and command line arguments for the creation of a package are + be fed to one of the package extraction/info utilities. The input de- + scription and command line arguments for the creation of a package are not really meant to be human-generated, though it is easy enough to do so. It is more expected that you will use a front-end tool for the job rather than muddling through it yourself. Nonetheless, a short descrip- @@ -35,16 +35,16 @@ OOPPTTIIOONNSS Install the file _b_u_i_l_d_-_v_e_r_s_i_o_n_-_f_i_l_e so that users of binary pack- ages can see what versions of the files used to control the build were used when creating the binary package. This allows some - fine-grained version control information to be retained in a - binary package and viewed wherever it is installed, using + fine-grained version control information to be retained in a bi- + nary package and viewed wherever it is installed, using pkg_info(1). --CC _c_p_k_g_s Set the initial package conflict list to _c_p_k_g_s. This is assumed to be a whitespace separated list of package names and is meant as a convenient shorthand for specifying multiple @@ppkkggccffll direc- - tives in the packing list (see PACKING LIST DETAILS section - below). + tives in the packing list (see PACKING LIST DETAILS section be- + low). --cc _[_-_]_d_e_s_c Fetch package (one line description) from file _d_e_s_c or, if pre- @@ -75,8 +75,8 @@ OOPPTTIIOONNSS --ii _i_s_c_r_i_p_t Set _i_s_c_r_i_p_t to be the install procedure for the package. This - can be any executable program (or shell script). It will be - invoked automatically when the package is later installed. + can be any executable program (or shell script). It will be in- + voked automatically when the package is later installed. --KK _p_k_g___d_b_d_i_r Set _p_k_g___d_b_d_i_r as the package database directory. If this option @@ -86,9 +86,9 @@ OOPPTTIIOONNSS --kk _d_s_c_r_i_p_t Set _d_s_c_r_i_p_t to be the de-install procedure for the package. This - can be any executable program (or shell script). It will be - invoked automatically when the package is later (if ever) de- - installed. + can be any executable program (or shell script). It will be in- + voked automatically when the package is later (if ever) de-in- + stalled. --LL _S_r_c_D_i_r This sets the package's @src directive; see below for a descrip- @@ -100,15 +100,15 @@ OOPPTTIIOONNSS which are targeted at full path names. --mm _m_t_r_e_e_f_i_l_e - Run mtree(8) with input from mtreefile before the package is - installed. Mtree is invoked as mmttrreeee --uu --ff _m_t_r_e_e_f_i_l_e --dd --ee --pp + Run mtree(8) with input from mtreefile before the package is in- + stalled. Mtree is invoked as mmttrreeee --uu --ff _m_t_r_e_e_f_i_l_e --dd --ee --pp _p_r_e_f_i_x, where _p_r_e_f_i_x is the name of the first directory named by a @@ccwwdd directive. --nn _p_r_e_s_e_r_v_e_-_f_i_l_e - The file is used to denote that the package should not be - deleted. This is intended for use where the deletion of packages - may present a bootstrap problem. + The file is used to denote that the package should not be delet- + ed. This is intended for use where the deletion of packages may + present a bootstrap problem. --OO Go into a (packing list only) mode. This is used to do (fake pkg_add) operations when a package is installed. In such cases, @@ -116,8 +116,8 @@ OOPPTTIIOONNSS will look like. --PP _d_p_k_g_s - Set the initial package dependency list to _d_p_k_g_s. This is - assumed to be a whitespace separated list of package names and is + Set the initial package dependency list to _d_p_k_g_s. This is as- + sumed to be a whitespace separated list of package names and is meant as a convenient shorthand for specifying multiple @@ppkkggddeepp directives in the packing list (see PACKING LIST DETAILS section below). In addition, the exact versions of the packages referred @@ -125,18 +125,18 @@ OOPPTTIIOONNSS form of @@bbllddddeepp directives. --pp _p_r_e_f_i_x - Set _p_r_e_f_i_x as the initial directory (base) to start from in - selecting files for the package. + Set _p_r_e_f_i_x as the initial directory (base) to start from in se- + lecting files for the package. - --RR Re-order any directories in the pkg/PLIST file into reverse - alphabetic order, so that child directories will automatically be + --RR Re-order any directories in the pkg/PLIST file into reverse al- + phabetic order, so that child directories will automatically be removed before parent directories. --rr _r_s_c_r_i_p_t Set _r_s_c_r_i_p_t to be the (requirements) procedure for the package. This can be any executable program (or shell script). It will be - invoked automatically at installation/deinstallation time to - determine whether or not installation/deinstallation should pro- + invoked automatically at installation/deinstallation time to de- + termine whether or not installation/deinstallation should pro- ceed. --SS _s_i_z_e_-_a_l_l_-_f_i_l_e @@ -147,9 +147,9 @@ OOPPTTIIOONNSS --ss _s_i_z_e_-_p_k_g_-_f_i_l_e Store the given file for later querying with the pkg_info(1) --ss - flag. The file is expected to contain the the size (in bytes) of - all files of this package added up and stored as a ASCII string, - terminated by a newline. + flag. The file is expected to contain the size (in bytes) of all + files of this package added up and stored as a ASCII string, ter- + minated by a newline. --tt _t_e_m_p_l_a_t_e Use _t_e_m_p_l_a_t_e as the input to mktemp(3). By default, this is the @@ -176,9 +176,9 @@ PPAACCKKIINNGG LLIISSTT DDEETTAAIILLSS since absolute pathnames are generally a bad idea for a package that could be installed potentially anywhere, there is another method of spec- ifying where things are supposed to go and, optionally, what ownership - and mode information they should be installed with. This is done by - embedding specialized command sequences in the packing list. Briefly - described, these sequences are: + and mode information they should be installed with. This is done by em- + bedding specialized command sequences in the packing list. Briefly de- + scribed, these sequences are: @@ccwwdd _d_i_r_e_c_t_o_r_y Set the internal directory pointer to point to _d_i_r_e_c_t_o_r_y. All subsequent filenames will be assumed relative to this directory. @@ -255,17 +255,17 @@ PPAACCKKIINNGG LLIISSTT DDEETTAAIILLSS Set the name of the package. This is mandatory and is usually put at the top. This name is potentially different than the name of the file it came in, and is used when keeping track of the - package for later deinstallation. Note that ppkkgg__ccrreeaattee will - derive this field from the package name and add it automatically - if none is given. + package for later deinstallation. Note that ppkkgg__ccrreeaattee will de- + rive this field from the package name and add it automatically if + none is given. @@ddiirrrrmm _n_a_m_e - Declare directory _n_a_m_e to be deleted at deinstall time. By - default, directories created by a package installation are not - deleted when the package is deinstalled; this provides an - explicit directory cleanup method. This directive should appear - at the end of the package list. If more than one @@ddiirrrrmm direc- - tives are used, the directories are removed in the order speci- - fied. The _n_a_m_e directory will not be removed unless it is empty. + Declare directory _n_a_m_e to be deleted at deinstall time. By de- + fault, directories created by a package installation are not + deleted when the package is deinstalled; this provides an explic- + it directory cleanup method. This directive should appear at the + end of the package list. If more than one @@ddiirrrrmm directives are + used, the directories are removed in the order specified. The + _n_a_m_e directory will not be removed unless it is empty. @@mmttrreeee _n_a_m_e Declare _n_a_m_e as an mtree(8) input file to be used at install time (see --mm above). Only the first @@mmttrreeee directive is honored. @@ -280,8 +280,8 @@ PPAACCKKIINNGG LLIISSTT DDEETTAAIILLSS depends on multiple other packages. @@bbllddddeepp _p_k_g_n_a_m_e Declare that this package was built with the exact version of - _p_k_g_n_a_m_e (since the @@ppkkggddeepp directive may contain wildcards or - relational package version information). + _p_k_g_n_a_m_e (since the @@ppkkggddeepp directive may contain wildcards or re- + lational package version information). @@ppkkggccffll _p_k_g_c_f_l_n_a_m_e Declare a conflict with the _p_k_g_c_f_l_n_a_m_e package, as the two pack- ages contain references to the same files, and so cannot co-exist @@ -304,10 +304,10 @@ AAUUTTHHOORRSS etc. BBUUGGSS - Hard links between files in a distribution must be bracketed by @@ccwwdd - directives in order to be preserved as hard links when the package is - extracted. They additionally must not end up being split between ttaarr - invocations due to exec argument-space limitations (this depends on the - value returned by ssyyssccoonnff(___S_C___A_R_G___M_A_X)). + Hard links between files in a distribution must be bracketed by @@ccwwdd di- + rectives in order to be preserved as hard links when the package is ex- + tracted. They additionally must not end up being split between ttaarr invo- + cations due to exec argument-space limitations (this depends on the value + returned by ssyyssccoonnff(___S_C___A_R_G___M_A_X)). -NetBSD 1.6 September 2, 2003 NetBSD 1.6 +NetBSD 1.6.2 September 2, 2003 5 diff --git a/pkgtools/pkg_install/files/create/pl.c b/pkgtools/pkg_install/files/create/pl.c index 2dfabc53290..5b67b3c6ddc 100644 --- a/pkgtools/pkg_install/files/create/pl.c +++ b/pkgtools/pkg_install/files/create/pl.c @@ -1,4 +1,4 @@ -/* $NetBSD: pl.c,v 1.7 2004/02/07 10:37:52 grant Exp $ */ +/* $NetBSD: pl.c,v 1.8 2004/08/06 16:57:03 jlam Exp $ */ #if HAVE_CONFIG_H #include "config.h" @@ -11,7 +11,7 @@ #if 0 static const char *rcsid = "from FreeBSD Id: pl.c,v 1.11 1997/10/08 07:46:35 charnier Exp"; #else -__RCSID("$NetBSD: pl.c,v 1.7 2004/02/07 10:37:52 grant Exp $"); +__RCSID("$NetBSD: pl.c,v 1.8 2004/08/06 16:57:03 jlam Exp $"); #endif #endif @@ -208,7 +208,7 @@ check_list(char *home, package_t *pkg, const char *PkgName) (void) strlcpy(target, SYMLINK_HEADER, sizeof(target)); if ((cc = readlink(name, &target[SymlinkHeaderLen], - sizeof(target) - SymlinkHeaderLen)) < 0) { + sizeof(target) - SymlinkHeaderLen - 1)) < 0) { warnx("can't readlink `%s'", name); continue; } diff --git a/pkgtools/pkg_install/files/info/pkg_info.1 b/pkgtools/pkg_install/files/info/pkg_info.1 index 3c0c084473f..5567187b3e9 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.9 2004/05/07 16:40:41 jlam Exp $ +.\" $NetBSD: pkg_info.1,v 1.10 2004/08/06 16:57:03 jlam Exp $ .\" .\" FreeBSD install - a package for the installation and maintenance .\" of non-core utilities. @@ -17,7 +17,7 @@ .\" .\" @(#)pkg_info.1 .\" -.Dd January 6, 2004 +.Dd May 7, 2004 .Dt PKG_INFO 1 .Os .Sh NAME @@ -228,7 +228,7 @@ Similarly will sort before .Pa name-1.3beta1 and they both sort before -.Pa name-1.3rc1 +.Pa name-1.3rc1 . In addition, alphabetic characters sort in the same place as their numeric counterparts, so that .Pa name-1.2e diff --git a/pkgtools/pkg_install/files/info/pkg_info.cat1 b/pkgtools/pkg_install/files/info/pkg_info.cat1 index 589e49a4ee0..607b7aad32e 100644 --- a/pkgtools/pkg_install/files/info/pkg_info.cat1 +++ b/pkgtools/pkg_install/files/info/pkg_info.cat1 @@ -1,4 +1,4 @@ -PKG_INFO(1) NetBSD General Commands Manual PKG_INFO(1) +PKG_INFO(1) NetBSD Reference Manual PKG_INFO(1) NNAAMMEE ppkkgg__iinnffoo - a utility for displaying information on software packages @@ -85,6 +85,10 @@ DDEESSCCRRIIPPTTIIOONN --pp Show the installation prefix for each package. + --QQ Show the definition of _v_a_r_i_a_b_l_e from the build information for + each package. An empty string is returned if no such variable + definition is found for the package(s). + --qq Be ``quiet'' in emitting report headers and such, just dump the raw info (basically, assume a non-human reading). @@ -130,7 +134,7 @@ PPAACCKKAAGGEE WWIILLDDCCAARRDDSS candidate. The magic string ``rc'' equates to _r_e_l_e_a_s_e _c_a_n_d_i_d_a_t_e and sorts before a release. For example, _n_a_m_e_-_1_._3_r_c_3 will sort before _n_a_m_e_-_1_._3 and after _n_a_m_e_-_1_._2_._9 Similarly _n_a_m_e_-_1_._3_a_l_p_h_a_2 will sort before - _n_a_m_e_-_1_._3_b_e_t_a_1 and they both sort before _n_a_m_e_-_1_._3_r_c_1 In addition, alpha- + _n_a_m_e_-_1_._3_b_e_t_a_1 and they both sort before _n_a_m_e_-_1_._3_r_c_1. In addition, alpha- betic characters sort in the same place as their numeric counterparts, so that _n_a_m_e_-_1_._2_e has the same sorting value as _n_a_m_e_-_1_._2_._5 The magic string ``pl'' equates to a _p_a_t_c_h _l_e_v_e_l and has the same value as a dot in the @@ -173,4 +177,4 @@ AAUUTTHHOORRSS NetBSD wildcard dependency processing, pkgdb, depends displaying, pkg size display etc. -NetBSD 1.6 January 6, 2004 NetBSD 1.6 +NetBSD 1.6.2 May 7, 2004 3 diff --git a/pkgtools/pkg_install/files/info/show.c b/pkgtools/pkg_install/files/info/show.c index d6d5ce0e466..6f972290a60 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.6 2004/05/07 16:40:41 jlam Exp $ */ +/* $NetBSD: show.c,v 1.7 2004/08/06 16:57:03 jlam 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.6 2004/05/07 16:40:41 jlam Exp $"); +__RCSID("$NetBSD: show.c,v 1.7 2004/08/06 16:57:03 jlam Exp $"); #endif #endif @@ -151,8 +151,8 @@ show_var(const char *fname, const char *variable) /* * We expect lines to look like one of the following * forms: - * VAR=value - * VAR= value + * VAR=value + * VAR= value * We print out the value of VAR, or nothing if it * doesn't exist. */ diff --git a/pkgtools/pkg_install/files/lib/pen.c b/pkgtools/pkg_install/files/lib/pen.c index 2a6bec8bbd0..3f5a9be5631 100644 --- a/pkgtools/pkg_install/files/lib/pen.c +++ b/pkgtools/pkg_install/files/lib/pen.c @@ -1,4 +1,4 @@ -/* $NetBSD: pen.c,v 1.13 2004/06/01 17:29:09 minskim Exp $ */ +/* $NetBSD: pen.c,v 1.14 2004/08/06 16:57:03 jlam Exp $ */ #if HAVE_CONFIG_H #include "config.h" @@ -11,7 +11,7 @@ #if 0 static const char *rcsid = "from FreeBSD Id: pen.c,v 1.25 1997/10/08 07:48:12 charnier Exp"; #else -__RCSID("$NetBSD: pen.c,v 1.13 2004/06/01 17:29:09 minskim Exp $"); +__RCSID("$NetBSD: pen.c,v 1.14 2004/08/06 16:57:03 jlam Exp $"); #endif #endif @@ -51,7 +51,7 @@ __RCSID("$NetBSD: pen.c,v 1.13 2004/06/01 17:29:09 minskim Exp $"); #if HAVE_SYS_VFS_H #include <sys/vfs.h> #endif -#ifdef HAVE_SYS_STATVFS_H +#if HAVE_SYS_STATVFS_H #include <sys/statvfs.h> #endif @@ -211,18 +211,11 @@ leave_playpen(char *save) uint64_t min_free(char *tmpdir) { -#ifdef HAVE_SYS_STATVFS_H struct statvfs buf; if (statvfs(tmpdir, &buf) != 0) { warn("statvfs"); -#else - struct statfs buf; - - if (statfs(tmpdir, &buf) != 0) { - warn("statfs"); -#endif - return -1; + return 0; } - return (uint64_t) buf.f_bavail * (uint64_t) buf.f_bsize; + return buf.f_bavail * buf.f_bsize; } diff --git a/pkgtools/pkg_install/files/lib/pkgdb.c b/pkgtools/pkg_install/files/lib/pkgdb.c index a49da580c1b..8734e837ad0 100644 --- a/pkgtools/pkg_install/files/lib/pkgdb.c +++ b/pkgtools/pkg_install/files/lib/pkgdb.c @@ -1,4 +1,4 @@ -/* $NetBSD: pkgdb.c,v 1.19 2003/09/09 13:34:21 jlam Exp $ */ +/* $NetBSD: pkgdb.c,v 1.20 2004/08/06 16:57:03 jlam Exp $ */ #if HAVE_CONFIG_H #include "config.h" @@ -8,7 +8,7 @@ #include <sys/cdefs.h> #endif #ifndef lint -__RCSID("$NetBSD: pkgdb.c,v 1.19 2003/09/09 13:34:21 jlam Exp $"); +__RCSID("$NetBSD: pkgdb.c,v 1.20 2004/08/06 16:57:03 jlam Exp $"); #endif /* diff --git a/pkgtools/pkg_install/files/lib/plist.c b/pkgtools/pkg_install/files/lib/plist.c index 30b12881bd5..3f5a534c542 100644 --- a/pkgtools/pkg_install/files/lib/plist.c +++ b/pkgtools/pkg_install/files/lib/plist.c @@ -1,4 +1,4 @@ -/* $NetBSD: plist.c,v 1.9 2004/06/01 17:32:21 minskim Exp $ */ +/* $NetBSD: plist.c,v 1.10 2004/08/06 16:57:03 jlam 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.9 2004/06/01 17:32:21 minskim Exp $"); +__RCSID("$NetBSD: plist.c,v 1.10 2004/08/06 16:57:03 jlam Exp $"); #endif #endif @@ -403,7 +403,7 @@ delete_package(Boolean ign_err, Boolean nukedirs, package_t *pkg) (void) strlcpy(buf, SYMLINK_HEADER, sizeof(buf)); if ((cc = readlink(tmp, &buf[SymlinkHeaderLen], - sizeof(buf) - SymlinkHeaderLen)) < 0) { + sizeof(buf) - SymlinkHeaderLen - 1)) < 0) { warnx("can't readlink `%s'", tmp); continue; } diff --git a/pkgtools/pkg_install/files/lib/version.h b/pkgtools/pkg_install/files/lib/version.h index f9e403241a0..ab353cdd6ea 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.31 2004/06/01 17:32:21 minskim Exp $ */ +/* $NetBSD: version.h,v 1.32 2004/08/06 16:57:03 jlam 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 "20040601" +#define PKGTOOLS_VERSION "20040730" #endif /* _INST_LIB_VERSION_H_ */ diff --git a/pkgtools/pkg_install/files/view/linkfarm.sh.in b/pkgtools/pkg_install/files/view/linkfarm.sh.in index 06b0d2920b7..2c0523d8f82 100644 --- a/pkgtools/pkg_install/files/view/linkfarm.sh.in +++ b/pkgtools/pkg_install/files/view/linkfarm.sh.in @@ -1,6 +1,6 @@ #! /bin/sh -# $NetBSD: linkfarm.sh.in,v 1.2 2003/09/13 09:24:22 jlam Exp $ +# $NetBSD: linkfarm.sh.in,v 1.3 2004/08/06 16:57:03 jlam Exp $ # # Copyright (c) 2002 Alistair G. Crooks. All rights reserved. @@ -137,20 +137,21 @@ esac case $check in yes) checkdir $fromdir - (cd $fromdir; - ex=0; - for f in `$findprog . ! -type d -print`; do - newf=`echo $f | $sedprog -e 's|^\./||'` - if [ -e $todir/$newf ]; then + (cd $fromdir + ex=0 + $findprog . ! -type d -print | \ + $sedprog -e 's|^\./||' | \ + while read f; do + if [ -e $todir/$f ]; then ignore=no for i in $ignorefiles; do - case $newf in + case $f in $i) ignore=yes; break ;; esac done case $ignore in no) - echo "${newf}"; ex=1 ;; + echo "${f}"; ex=1 ;; esac fi done @@ -162,24 +163,28 @@ esac case $delete in yes) checkdir $fromdir - (cd $fromdir; - for f in `$findprog . ! -type d -print`; do - newf=`echo $f | $sedprog -e 's|^\./||'` + (cd $fromdir + $findprog . ! -type d -print | \ + $sedprog -e 's|^\./||' | \ + while read f; do ignore=no for i in $ignorefiles; do - case $newf in + case $f in $i) ignore=yes; break ;; esac done case $ignore in no) if [ $verbose -gt 0 ]; then - echo "$rmprog -f $todir/$newf" + echo "$rmprog -f $todir/$f" fi $doit $rmprog -f $todir/$f ;; esac done - for d in `$findprog . -type d -print | $sortprog -r`; do + $findprog . -type d -print | \ + $sedprog -e 's|^\./||' | \ + $sortprog -r | \ + while read d; do if [ $verbose -gt 0 ]; then echo "$rmdirprog $todir/$d" fi @@ -192,31 +197,33 @@ esac case $create in yes) checkdir $fromdir - (cd $fromdir; - for d in `$findprog . -type d -print`; do - newd=`echo $d | $sedprog -e 's|^\./||'` + (cd $fromdir + $findprog . -type d -print | \ + $sedprog -e 's|^\./||' | \ + while read d; do case "$d" in "") continue ;; esac if [ $verbose -gt 0 ]; then - echo "$mkdirprog -p $todir/$newd" + echo "$mkdirprog -p $todir/$d" fi - $doit $mkdirprog -p $todir/$newd > /dev/null 2>&1 + $doit $mkdirprog -p $todir/$d > /dev/null 2>&1 done - for f in `$findprog . ! -type d -print`; do - newf=`echo $f | $sedprog -e 's|^\./||'` + $findprog . ! -type d -print | \ + $sedprog -e 's|^\./||' | \ + while read f; do ignore=no for i in $ignorefiles; do - case $newf in + case $f in $i) ignore=yes; break ;; esac done case $ignore in no) if [ $verbose -gt 0 ]; then - echo "$lnprog ${linktype} $fromdir/$newf $todir/$newf" + echo "$lnprog ${linktype} $fromdir/$f $todir/$f" fi - $doit $lnprog ${linktype} $fromdir/$newf $todir/$newf ;; + $doit $lnprog ${linktype} $fromdir/$f $todir/$f ;; esac done) ;; diff --git a/pkgtools/pkg_install/files/view/pkg_view.1 b/pkgtools/pkg_install/files/view/pkg_view.1 index fb0399fd62b..ece84c5f0a2 100644 --- a/pkgtools/pkg_install/files/view/pkg_view.1 +++ b/pkgtools/pkg_install/files/view/pkg_view.1 @@ -1,4 +1,4 @@ -.\" $NetBSD: pkg_view.1,v 1.7 2003/12/08 13:50:50 grant Exp $ +.\" $NetBSD: pkg_view.1,v 1.8 2004/08/06 16:57:03 jlam Exp $ .\" .\" Copyright (c) 2003 The NetBSD Foundation, Inc. .\" All rights reserved. @@ -39,7 +39,7 @@ .Nd add and delete instances of depoted packages in views .Sh SYNOPSIS .Nm -.Op Ar nVv +.Op Fl nVv .Op Fl d Ar stowdir .Op Fl i Ar ignore .Op Fl k Ar pkg_dbdir diff --git a/pkgtools/pkg_install/files/view/pkg_view.cat1 b/pkgtools/pkg_install/files/view/pkg_view.cat1 index edae38ae310..afd9cf62065 100644 --- a/pkgtools/pkg_install/files/view/pkg_view.cat1 +++ b/pkgtools/pkg_install/files/view/pkg_view.cat1 @@ -1,11 +1,11 @@ -PKG_VIEW(1) NetBSD General Commands Manual PKG_VIEW(1) +PKG_VIEW(1) NetBSD Reference Manual PKG_VIEW(1) NNAAMMEE ppkkgg__vviieeww - add and delete instances of depoted packages in views SSYYNNOOPPSSIISS - ppkkgg__vviieeww [_n_V_v] [--dd _s_t_o_w_d_i_r] [--ii _i_g_n_o_r_e] [--kk _p_k_g___d_b_d_i_r] [--WW _v_i_e_w_b_a_s_e] - [--ww _v_i_e_w] _c_o_m_m_a_n_d _p_a_c_k_a_g_e _._._. + ppkkgg__vviieeww [--nnVVvv] [--dd _s_t_o_w_d_i_r] [--ii _i_g_n_o_r_e] [--kk _p_k_g___d_b_d_i_r] [--WW _v_i_e_w_b_a_s_e] [--ww + _v_i_e_w] _c_o_m_m_a_n_d _p_a_c_k_a_g_e _._._. DDEESSCCRRIIPPTTIIOONN The ppkkgg__vviieeww command is used to add and delete instances of depoted pack- @@ -13,17 +13,17 @@ DDEESSCCRRIIPPTTIIOONN WWAARRNNIINNGG _S_i_n_c_e _t_h_e ppkkgg__vviieeww _c_o_m_m_a_n_d _m_a_y _e_x_e_c_u_t_e _s_c_r_i_p_t_s _o_r _p_r_o_g_r_a_m_s _p_r_o_v_i_d_e_d _b_y _a - _p_a_c_k_a_g_e _f_i_l_e_, _y_o_u_r _s_y_s_t_e_m _m_a_y _b_e _s_u_s_c_e_p_t_i_b_l_e _t_o _`_`_T_r_o_j_a_n _h_o_r_s_e_s_'_' _o_r - _o_t_h_e_r _s_u_b_t_l_e _a_t_t_a_c_k_s _f_r_o_m _m_i_s_c_r_e_a_n_t_s _w_h_o _c_r_e_a_t_e _d_a_n_g_e_r_o_u_s _p_a_c_k_a_g_e _f_i_l_e_s_. + _p_a_c_k_a_g_e _f_i_l_e_, _y_o_u_r _s_y_s_t_e_m _m_a_y _b_e _s_u_s_c_e_p_t_i_b_l_e _t_o _`_`_T_r_o_j_a_n _h_o_r_s_e_s_'_' _o_r _o_t_h_- + _e_r _s_u_b_t_l_e _a_t_t_a_c_k_s _f_r_o_m _m_i_s_c_r_e_a_n_t_s _w_h_o _c_r_e_a_t_e _d_a_n_g_e_r_o_u_s _p_a_c_k_a_g_e _f_i_l_e_s_. _Y_o_u _a_r_e _a_d_v_i_s_e_d _t_o _v_e_r_i_f_y _t_h_e _c_o_m_p_e_t_e_n_c_e _a_n_d _i_d_e_n_t_i_t_y _o_f _t_h_o_s_e _w_h_o _p_r_o_- _v_i_d_e _i_n_s_t_a_l_l_a_b_l_e _p_a_c_k_a_g_e _f_i_l_e_s_. _F_o_r _e_x_t_r_a _p_r_o_t_e_c_t_i_o_n_, _e_x_a_m_i_n_e _a_l_l _t_h_e _p_a_c_k_a_g_e _c_o_n_t_r_o_l _f_i_l_e_s _i_n _t_h_e _p_a_c_k_a_g_e _d_a_t_a_b_a_s_e _d_i_r_e_c_t_o_r_y - _(_/_u_s_r_/_p_k_g_/_p_a_c_k_a_g_e_s_/_<_p_k_g_-_n_a_m_e_>_/_)_. _P_a_y _p_a_r_t_i_c_u_l_a_r _a_t_t_e_n_t_i_o_n _t_o _a_n_y - _+_I_N_S_T_A_L_L_, _+_D_E_I_N_S_T_A_L_L_, _+_R_E_Q_U_I_R_E _o_r _+_M_T_R_E_E___D_I_R_S _f_i_l_e_s_, _a_n_d _i_n_s_p_e_c_t _t_h_e - _+_C_O_N_T_E_N_T_S _f_i_l_e _f_o_r @@ccwwdd_, @@mmooddee _(_c_h_e_c_k _f_o_r _s_e_t_u_i_d_)_, @@ddiirrrrmm_, @@eexxeecc_, _a_n_d - @@uunneexxeecc _d_i_r_e_c_t_i_v_e_s_, _a_n_d_/_o_r _u_s_e _t_h_e pkg_info(_1) _c_o_m_m_a_n_d _t_o _e_x_a_m_i_n_e _t_h_e - _i_n_s_t_a_l_l_e_d _p_a_c_k_a_g_e _c_o_n_t_r_o_l _f_i_l_e_s_. + _(_/_u_s_r_/_p_k_g_/_p_a_c_k_a_g_e_s_/_<_p_k_g_-_n_a_m_e_>_/_)_. _P_a_y _p_a_r_t_i_c_u_l_a_r _a_t_t_e_n_t_i_o_n _t_o _a_n_y _+_I_N_- + _S_T_A_L_L_, _+_D_E_I_N_S_T_A_L_L_, _+_R_E_Q_U_I_R_E _o_r _+_M_T_R_E_E___D_I_R_S _f_i_l_e_s_, _a_n_d _i_n_s_p_e_c_t _t_h_e _+_C_O_N_- + _T_E_N_T_S _f_i_l_e _f_o_r @@ccwwdd_, @@mmooddee _(_c_h_e_c_k _f_o_r _s_e_t_u_i_d_)_, @@ddiirrrrmm_, @@eexxeecc_, _a_n_d @@uunneexxeecc + _d_i_r_e_c_t_i_v_e_s_, _a_n_d_/_o_r _u_s_e _t_h_e pkg_info(_1) _c_o_m_m_a_n_d _t_o _e_x_a_m_i_n_e _t_h_e _i_n_s_t_a_l_l_e_d + _p_a_c_k_a_g_e _c_o_n_t_r_o_l _f_i_l_e_s_. OOPPTTIIOONNSS The following command-line options are supported: @@ -59,10 +59,10 @@ OOPPTTIIOONNSS by the LOCALBASE environment variable. --ww _v_i_e_w - Set _v_i_e_w as the directory in _v_i_e_w_b_a_s_e in which the package - instances should be added or deleted. The default _v_i_e_w is the - empty view but may be overridden by the PKG_VIEW environment - variable. + Set _v_i_e_w as the directory in _v_i_e_w_b_a_s_e in which the package in- + stances should be added or deleted. The default _v_i_e_w is the emp- + ty view but may be overridden by the PKG_VIEW environment vari- + able. The following commands are supported: @@ -85,8 +85,8 @@ EENNVVIIRROONNMMEENNTT PKG_DBDIR If the --kk flag isn't given, then the value of the environment - variable PKG_DBDIR is the package database directory for the - default view, otherwise it defaults to _/_v_a_r_/_d_b_/_p_k_g. + variable PKG_DBDIR is the package database directory for the de- + fault view, otherwise it defaults to _/_v_a_r_/_d_b_/_p_k_g. PLIST_IGNORE_FILES This can be used to specify files in _p_a_c_k_a_g_e that should ignored @@ -110,12 +110,12 @@ FFIILLEESS _p_a_c_k_a_g_e The name of the package instance being added. VVIIEEWW--IINNSSTTAALLLL - Keyword denoting that the script is to perform any - actions needed after the package instance is added to a + Keyword denoting that the script is to perform any ac- + tions needed after the package instance is added to a view. - If the _i_n_s_t_a_l_l script exits with a non-zero status code, the - installation is terminated. + If the _i_n_s_t_a_l_l script exits with a non-zero status code, the in- + stallation is terminated. <pkg-dbdir>/<package>/+DEINSTALL If the package contains an _d_e_i_n_s_t_a_l_l script (see pkg_create(1)), @@ -125,9 +125,9 @@ FFIILLEESS _p_a_c_k_a_g_e The name of the package instance being deleted. VVIIEEWW--DDEEIINNSSTTAALLLL - Keyword denoting that the script is to perform any - actions needed before the package instance is deleted - from a view. + Keyword denoting that the script is to perform any ac- + tions needed before the package instance is deleted from + a view. If the _d_e_i_n_s_t_a_l_l script exits with a non-zero status code, the de-installation is terminated. @@ -141,4 +141,4 @@ SSEEEE AALLSSOO AAUUTTHHOORRSS The ppkkgg__vviieeww utility was written by Alistair G. Crooks <agc@NetBSD.org>. -NetBSD 1.6 September 8, 2003 NetBSD 1.6 +NetBSD 1.6.2 September 8, 2003 3 diff --git a/pkgtools/pkg_install/files/view/pkg_view.sh.in b/pkgtools/pkg_install/files/view/pkg_view.sh.in index 080a4d08025..5e15c87362c 100644 --- a/pkgtools/pkg_install/files/view/pkg_view.sh.in +++ b/pkgtools/pkg_install/files/view/pkg_view.sh.in @@ -1,6 +1,6 @@ #! /bin/sh -# $NetBSD: pkg_view.sh.in,v 1.4 2004/06/01 17:32:21 minskim Exp $ +# $NetBSD: pkg_view.sh.in,v 1.5 2004/08/06 16:57:03 jlam Exp $ # # Copyright (c) 2001 Alistair G. Crooks. All rights reserved. |