Home | History | Annotate | Line # | Download | only in create
      1  1.3    nia /*	$NetBSD: main.c,v 1.3 2021/04/10 19:49:59 nia Exp $	*/
      2  1.1  joerg 
      3  1.1  joerg #if HAVE_CONFIG_H
      4  1.1  joerg #include "config.h"
      5  1.1  joerg #endif
      6  1.1  joerg #include <nbcompat.h>
      7  1.1  joerg #if HAVE_SYS_CDEFS_H
      8  1.1  joerg #include <sys/cdefs.h>
      9  1.1  joerg #endif
     10  1.3    nia __RCSID("$NetBSD: main.c,v 1.3 2021/04/10 19:49:59 nia Exp $");
     11  1.1  joerg 
     12  1.1  joerg /*
     13  1.1  joerg  * FreeBSD install - a package for the installation and maintainance
     14  1.1  joerg  * of non-core utilities.
     15  1.1  joerg  *
     16  1.1  joerg  * Jordan K. Hubbard
     17  1.1  joerg  * 18 July 1993
     18  1.1  joerg  *
     19  1.1  joerg  * This is the create module.
     20  1.1  joerg  *
     21  1.1  joerg  */
     22  1.1  joerg 
     23  1.1  joerg #if HAVE_ERR_H
     24  1.1  joerg #include <err.h>
     25  1.1  joerg #endif
     26  1.1  joerg #include "lib.h"
     27  1.1  joerg #include "create.h"
     28  1.1  joerg 
     29  1.2  joerg /* -U is silently ignored, it used to inhibit pkgdb changes. */
     30  1.2  joerg static const char Options[] = "B:C:D:F:I:K:L:OP:S:T:UVb:c:d:f:g:i:k:ln:p:r:s:u:v";
     31  1.1  joerg 
     32  1.1  joerg char   *Prefix = NULL;
     33  1.1  joerg char   *Comment = NULL;
     34  1.1  joerg char   *Desc = NULL;
     35  1.1  joerg char   *Display = NULL;
     36  1.1  joerg char   *Install = NULL;
     37  1.1  joerg char   *DeInstall = NULL;
     38  1.1  joerg char   *Contents = NULL;
     39  1.1  joerg char   *Pkgdeps = NULL;
     40  1.1  joerg char   *BuildPkgdeps = NULL;
     41  1.1  joerg char   *Pkgcfl = NULL;
     42  1.1  joerg char   *BuildVersion = NULL;
     43  1.1  joerg char   *BuildInfo = NULL;
     44  1.1  joerg char   *SizePkg = NULL;
     45  1.1  joerg char   *SizeAll = NULL;
     46  1.1  joerg char   *Preserve = NULL;
     47  1.1  joerg char   *DefaultOwner = NULL;
     48  1.1  joerg char   *DefaultGroup = NULL;
     49  1.1  joerg char   *realprefix = NULL;
     50  1.2  joerg const char *CompressionType = NULL;
     51  1.1  joerg int     PlistOnly = 0;
     52  1.1  joerg int     RelativeLinks = 0;
     53  1.1  joerg Boolean File2Pkg = FALSE;
     54  1.1  joerg 
     55  1.1  joerg static void
     56  1.1  joerg usage(void)
     57  1.1  joerg {
     58  1.1  joerg 	fprintf(stderr,
     59  1.2  joerg 	    "usage: pkg_create [-lOUVv] [-B build-info-file] [-b build-version-file]\n"
     60  1.2  joerg             "                  [-C cpkgs] [-D displayfile] [-F compression] \n"
     61  1.2  joerg 	    "                  [-I realprefix] [-i iscript]\n"
     62  1.2  joerg             "                  [-K pkg_dbdir] [-k dscript]\n"
     63  1.1  joerg             "                  [-n preserve-file] [-P dpkgs] [-p prefix] [-r rscript]\n"
     64  1.1  joerg             "                  [-S size-all-file] [-s size-pkg-file]\n"
     65  1.1  joerg 	    "                  [-T buildpkgs] [-u owner] [-g group]\n"
     66  1.1  joerg             "                  -c comment -d description -f packlist\n"
     67  1.1  joerg             "                  pkg-name\n");
     68  1.1  joerg 	exit(1);
     69  1.1  joerg }
     70  1.1  joerg 
     71  1.1  joerg int
     72  1.1  joerg main(int argc, char **argv)
     73  1.1  joerg {
     74  1.1  joerg 	int     ch;
     75  1.1  joerg 
     76  1.1  joerg 	setprogname(argv[0]);
     77  1.1  joerg 	while ((ch = getopt(argc, argv, Options)) != -1)
     78  1.1  joerg 		switch (ch) {
     79  1.1  joerg 		case 'v':
     80  1.1  joerg 			Verbose = TRUE;
     81  1.1  joerg 			break;
     82  1.1  joerg 
     83  1.2  joerg 		case 'F':
     84  1.2  joerg 			CompressionType = optarg;
     85  1.1  joerg 			break;
     86  1.1  joerg 
     87  1.1  joerg 		case 'I':
     88  1.1  joerg 			realprefix = optarg;
     89  1.1  joerg 			break;
     90  1.1  joerg 
     91  1.1  joerg 		case 'O':
     92  1.1  joerg 			PlistOnly = 1;
     93  1.1  joerg 			break;
     94  1.1  joerg 
     95  1.1  joerg 		case 'U':
     96  1.1  joerg 			break;
     97  1.1  joerg 
     98  1.1  joerg 		case 'p':
     99  1.1  joerg 			Prefix = optarg;
    100  1.1  joerg 			break;
    101  1.1  joerg 
    102  1.1  joerg 		case 's':
    103  1.1  joerg 			SizePkg = optarg;
    104  1.1  joerg 			break;
    105  1.1  joerg 
    106  1.1  joerg 		case 'S':
    107  1.1  joerg 			SizeAll = optarg;
    108  1.1  joerg 			break;
    109  1.1  joerg 
    110  1.1  joerg 		case 'f':
    111  1.1  joerg 			Contents = optarg;
    112  1.1  joerg 			break;
    113  1.1  joerg 
    114  1.1  joerg 		case 'c':
    115  1.1  joerg 			Comment = optarg;
    116  1.1  joerg 			break;
    117  1.1  joerg 
    118  1.1  joerg 		case 'd':
    119  1.1  joerg 			Desc = optarg;
    120  1.1  joerg 			break;
    121  1.1  joerg 
    122  1.1  joerg 		case 'g':
    123  1.1  joerg 			DefaultGroup = optarg;
    124  1.1  joerg 			break;
    125  1.1  joerg 
    126  1.1  joerg 		case 'i':
    127  1.1  joerg 			Install = optarg;
    128  1.1  joerg 			break;
    129  1.1  joerg 
    130  1.1  joerg 		case 'K':
    131  1.2  joerg 			pkgdb_set_dir(optarg, 3);
    132  1.1  joerg 			break;
    133  1.1  joerg 
    134  1.1  joerg 		case 'k':
    135  1.1  joerg 			DeInstall = optarg;
    136  1.1  joerg 			break;
    137  1.1  joerg 
    138  1.1  joerg 		case 'l':
    139  1.1  joerg 			RelativeLinks = 1;
    140  1.1  joerg 			break;
    141  1.1  joerg 
    142  1.1  joerg 		case 'L':
    143  1.2  joerg 			warnx("Obsolete -L option ignored");
    144  1.1  joerg 			break;
    145  1.1  joerg 
    146  1.1  joerg 		case 'u':
    147  1.1  joerg 			DefaultOwner = optarg;
    148  1.1  joerg 			break;
    149  1.1  joerg 
    150  1.1  joerg 		case 'D':
    151  1.1  joerg 			Display = optarg;
    152  1.1  joerg 			break;
    153  1.1  joerg 
    154  1.1  joerg 		case 'n':
    155  1.1  joerg 			Preserve = optarg;
    156  1.1  joerg 			break;
    157  1.1  joerg 
    158  1.1  joerg 		case 'P':
    159  1.1  joerg 			Pkgdeps = optarg;
    160  1.1  joerg 			break;
    161  1.1  joerg 
    162  1.1  joerg 		case 'T':
    163  1.1  joerg 			BuildPkgdeps = optarg;
    164  1.1  joerg 			break;
    165  1.1  joerg 
    166  1.1  joerg 		case 'C':
    167  1.1  joerg 			Pkgcfl = optarg;
    168  1.1  joerg 			break;
    169  1.1  joerg 
    170  1.1  joerg 		case 'b':
    171  1.1  joerg 			BuildVersion = optarg;
    172  1.1  joerg 			break;
    173  1.1  joerg 
    174  1.1  joerg 		case 'B':
    175  1.1  joerg 			BuildInfo = optarg;
    176  1.1  joerg 			break;
    177  1.1  joerg 
    178  1.1  joerg 		case 'V':
    179  1.1  joerg 			show_version();
    180  1.1  joerg 			/* NOTREACHED */
    181  1.1  joerg 
    182  1.1  joerg 		case '?':
    183  1.1  joerg 		default:
    184  1.1  joerg 			usage();
    185  1.1  joerg 			break;
    186  1.1  joerg 		}
    187  1.1  joerg 
    188  1.1  joerg 	argc -= optind;
    189  1.1  joerg 	argv += optind;
    190  1.1  joerg 
    191  1.2  joerg 	pkg_install_config();
    192  1.2  joerg 
    193  1.1  joerg 	if (argc == 0) {
    194  1.1  joerg 		warnx("missing package name");
    195  1.1  joerg 		usage();
    196  1.1  joerg 	}
    197  1.1  joerg 	if (argc != 1) {
    198  1.1  joerg 		warnx("only one package name allowed");
    199  1.1  joerg 		usage();
    200  1.1  joerg 	}
    201  1.1  joerg 
    202  1.1  joerg 	if (pkg_perform(*argv))
    203  1.1  joerg 		return 0;
    204  1.1  joerg 	if (Verbose) {
    205  1.1  joerg 		if (PlistOnly)
    206  1.2  joerg 			warnx("PLIST adjustment failed");
    207  1.1  joerg 		else
    208  1.1  joerg 			warnx("package creation failed");
    209  1.1  joerg 	}
    210  1.1  joerg 	return 1;
    211  1.1  joerg }
    212