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