From ba617e479df389ae2faf9866e92e365756ab2b6d Mon Sep 17 00:00:00 2001 From: jbj Date: Sat, 17 Apr 1999 14:23:42 +0000 Subject: [PATCH] check build prerequisites before building from specfile. CVS patchset: 3010 CVS date: 1999/04/17 14:23:42 --- CHANGES | 2 + build.c | 76 +++++++++++++-- build.h | 8 +- build/build.c | 4 +- build/files.c | 39 ++++++-- build/pack.c | 17 ---- build/rpmbuild.h | 1 + install.c | 4 +- install.h | 2 + po/rpm.pot | 244 ++++++++++++++++++++++++----------------------- rpm.c | 13 ++- rpm.spec | 2 +- 12 files changed, 238 insertions(+), 174 deletions(-) diff --git a/CHANGES b/CHANGES index e08fba6b1..af54a1c73 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,8 @@ - remove inconsistent use of __P((...)) throughout. - non-static inline functions caused IRIX cc pain. - CPIOERR_CHECK_ERRNO masking caused AIX cc warnings. + - solaris 2.6+ needs statvfs. + - check build prerequisites before building from specfile. 2.93 -> 2.94 - fix: segfault while parsing target string. diff --git a/build.c b/build.c index 1811c4d54..9c5b61a23 100644 --- a/build.c +++ b/build.c @@ -3,11 +3,56 @@ #include "build/rpmbuild.h" #include "popt/popt.h" #include "build.h" +#include "install.h" -static int buildForTarget(const char *arg, int buildAmount, const char *passPhrase, - const char *buildRoot, int fromTarball, int test, char *cookie, - int force) + +static int checkSpec(Header h) { + char *rootdir = NULL; + rpmdb db = NULL; + int mode = O_RDONLY; + rpmTransactionSet ts; + struct rpmDependencyConflict * conflicts; + int numConflicts; + int rc; + + if (!headerIsEntry(h, RPMTAG_REQUIREFLAGS)) + return 0; + + if (rpmdbOpen(rootdir, &db, mode, 0644)) { + const char *dn; + dn = rpmGetPath( (rootdir ? rootdir : ""), "%{_dbpath}", NULL); + rpmMessage(RPMMESS_ERROR, _("cannot open %s/packages.rpm\n"), dn); + xfree(dn); + exit(EXIT_FAILURE); + } + ts = rpmtransCreateSet(db, rootdir); + + rc = rpmtransAddPackage(ts, h, NULL, NULL, 0, NULL); + + rc = rpmdepCheck(ts, &conflicts, &numConflicts); + if (rc == 0 && conflicts) { + rpmMessage(RPMMESS_ERROR, _("failed build prerequisites:\n")); + printDepProblems(stderr, conflicts, numConflicts); + rpmdepFreeConflicts(conflicts, numConflicts); + rc = 1; + } + + if (ts) + rpmtransFree(ts); + if (db) + rpmdbClose(db); + + return rc; +} + +static int buildForTarget(const char *arg, struct rpmBuildArguments *ba, + const char *passPhrase, int fromTarball, char *cookie, + int force, int nodeps) +{ + int buildAmount = ba->buildAmount; + const char *buildRoot = ba->buildRootOverride; + int test = ba->noBuild; FILE *f; const char * specfile; @@ -140,6 +185,7 @@ static int buildForTarget(const char *arg, int buildAmount, const char *passPhra s++; } + /* Parse the spec file */ #define _anyarch(_f) \ (((_f)&(RPMBUILD_PREP|RPMBUILD_BUILD|RPMBUILD_INSTALL|RPMBUILD_PACKAGEBINARY)) == 0) if (parseSpec(&spec, specfile, buildRoot, 0, passPhrase, cookie, @@ -148,6 +194,15 @@ static int buildForTarget(const char *arg, int buildAmount, const char *passPhra } #undef _anyarch + /* Assemble source header from parsed components */ + initSourceHeader(spec); + + /* Check build prerequisites */ + if (!nodeps && checkSpec(spec->sourceHeader)) { + freeSpec(spec); + return 1; + } + if (buildSpec(spec, buildAmount, test)) { freeSpec(spec); return 1; @@ -160,16 +215,17 @@ static int buildForTarget(const char *arg, int buildAmount, const char *passPhra return res; } -int build(const char *arg, int buildAmount, const char *passPhrase, - const char *buildRoot, int fromTarball, int test, char *cookie, - const char * rcfile, char *targets, int force) +int build(const char *arg, struct rpmBuildArguments *ba, const char *passPhrase, + int fromTarball, char *cookie, const char * rcfile, int force, + int nodeps) { char *t, *te; int rc; + char *targets = ba->targets; if (targets == NULL) { - rc = buildForTarget(arg, buildAmount, passPhrase, buildRoot, - fromTarball, test, cookie, force); + rc = buildForTarget(arg, ba, passPhrase, fromTarball, cookie, + force, nodeps); return rc; } @@ -187,8 +243,8 @@ int build(const char *arg, int buildAmount, const char *passPhrase, printf("Building for target %s\n", target); rpmReadConfigFiles(rcfile, target); - rc = buildForTarget(arg, buildAmount, passPhrase, buildRoot, - fromTarball, test, cookie, force); + rc = buildForTarget(arg, ba, passPhrase, fromTarball, cookie, + force, nodeps); if (rc) return rc; diff --git a/build.h b/build.h index 92cbe9f66..64a6ff07a 100644 --- a/build.h +++ b/build.h @@ -9,7 +9,7 @@ extern struct poptOption rpmBuildPoptTable[]; struct rpmBuildArguments { int buildAmount; - char *buildRootOverride; + const char *buildRootOverride; char *targets; int useCatalog; int noLang; @@ -18,9 +18,9 @@ struct rpmBuildArguments { char buildChar; }; -int build(const char *arg, int buildAmount, const char *passPhrase, - const char *buildRoot, int fromTarball, int test, char *cookie, - const char * rcfile, char * buildplatforms, int force); +int build(const char *arg, struct rpmBuildArguments *ba, const char *passPhrase, + int fromTarball, char *cookie, const char * rcfile, int force, + int nodeps); #ifdef __cplusplus } diff --git a/build/build.c b/build/build.c index 544f22981..c33ee2884 100644 --- a/build/build.c +++ b/build/build.c @@ -153,15 +153,13 @@ int buildSpec(Spec spec, int what, int test) if (!spec->inBuildArchitectures && spec->buildArchitectureCount) { /* When iterating over buildArchitectures, do the source */ /* packaging on the first run, and skip RMSOURCE altogether */ - x = 0; - while (x < spec->buildArchitectureCount) { + for (x = 0; x < spec->buildArchitectureCount; x++) { if ((rc = buildSpec(spec->buildArchitectureSpecs[x], (what & ~RPMBUILD_RMSOURCE) | (x ? 0 : (what & RPMBUILD_PACKAGESOURCE)), test))) { return rc; } - x++; } } else { if (what & RPMBUILD_PREP) { diff --git a/build/files.c b/build/files.c index b29073464..2bf3252cc 100644 --- a/build/files.c +++ b/build/files.c @@ -1227,21 +1227,13 @@ static int processPackageFiles(Spec spec, Package pkg, return fl.processingFailed; } -int processSourceFiles(Spec spec) +void initSourceHeader(Spec spec) { - struct Source *srcPtr; - StringBuf sourceFiles; - int x, isSpec = 1; - struct FileList fl; - char *s, **files, **fp, *fn; HeaderIterator hi; int tag, type, count; - Package pkg; void * ptr; - sourceFiles = newStringBuf(); spec->sourceHeader = headerNew(); - /* Only specific tags are added to the source package header */ hi = headerInitIterator(spec->packages->header); while (headerNextIterator(hi, &tag, &type, &ptr, &count)) { @@ -1276,6 +1268,35 @@ int processSourceFiles(Spec spec) } headerFreeIterator(hi); + /* Add the build restrictions */ + hi = headerInitIterator(spec->buildRestrictions); + while (headerNextIterator(hi, &tag, &type, &ptr, &count)) { + headerAddEntry(spec->sourceHeader, tag, type, ptr, count); + if (type == RPM_STRING_ARRAY_TYPE || type == RPM_I18NSTRING_TYPE) + FREE(ptr); + } + headerFreeIterator(hi); + + if (spec->buildArchitectureCount) { + headerAddEntry(spec->sourceHeader, RPMTAG_BUILDARCHS, + RPM_STRING_ARRAY_TYPE, + spec->buildArchitectures, spec->buildArchitectureCount); + } +} + +int processSourceFiles(Spec spec) +{ + struct Source *srcPtr; + StringBuf sourceFiles; + int x, isSpec = 1; + struct FileList fl; + char *s, **files, **fp, *fn; + Package pkg; + + sourceFiles = newStringBuf(); + + /* XXX This is where the source header used to be initialized. */ + /* Construct the file list and source entries */ appendLineStringBuf(sourceFiles, spec->specFile); for (srcPtr = spec->sources; srcPtr != NULL; srcPtr = srcPtr->next) { diff --git a/build/pack.c b/build/pack.c index c185a2ee3..7a7035c5b 100644 --- a/build/pack.c +++ b/build/pack.c @@ -41,9 +41,6 @@ static int genSourceRpmName(Spec spec) int packageSources(Spec spec) { CSA_t csabuf, *csa = &csabuf; - HeaderIterator iter; - int_32 tag, type, count; - char **ptr; int rc; /* Add some cruft */ @@ -61,20 +58,6 @@ int packageSources(Spec spec) genSourceRpmName(spec); - /* Add the build restrictions */ - iter = headerInitIterator(spec->buildRestrictions); - while (headerNextIterator(iter, &tag, &type, (void **)&ptr, &count)) { - headerAddEntry(spec->sourceHeader, tag, type, ptr, count); - if (type == RPM_STRING_ARRAY_TYPE || type == RPM_I18NSTRING_TYPE) - FREE(ptr); - } - headerFreeIterator(iter); - if (spec->buildArchitectureCount) { - headerAddEntry(spec->sourceHeader, RPMTAG_BUILDARCHS, - RPM_STRING_ARRAY_TYPE, - spec->buildArchitectures, spec->buildArchitectureCount); - } - FREE(spec->cookie); /* XXX this should be %_srpmdir */ diff --git a/build/rpmbuild.h b/build/rpmbuild.h index d30713dcb..b2308ecf1 100644 --- a/build/rpmbuild.h +++ b/build/rpmbuild.h @@ -136,6 +136,7 @@ int addReqProv(Spec spec, Header h, /* from build/files.h */ int processBinaryFiles(Spec spec, int installSpecialDoc, int test); +void initSourceHeader(Spec spec); int processSourceFiles(Spec spec); /* global entry points */ diff --git a/install.c b/install.c index f48328e99..6b017173d 100644 --- a/install.c +++ b/install.c @@ -7,8 +7,6 @@ #include "ftp.h" static void printHash(const unsigned long amount, const unsigned long total); -static void printDepProblems(FILE * f, struct rpmDependencyConflict * conflicts, - int numConflicts); static void * showProgress(const Header h, const rpmCallbackType what, const unsigned long amount, const unsigned long total, @@ -490,7 +488,7 @@ void printDepFlags(FILE * f, const char * version, int flags) { fprintf(f, " %s", version); } -static void printDepProblems(FILE * f, struct rpmDependencyConflict * conflicts, +void printDepProblems(FILE * f, struct rpmDependencyConflict * conflicts, int numConflicts) { int i; diff --git a/install.h b/install.h index 40bba3cfb..761a8c500 100644 --- a/install.h +++ b/install.h @@ -20,6 +20,8 @@ int doSourceInstall(const char * prefix, const char * arg, const char ** specFil int doUninstall(const char * rootdir, const char ** argv, int uninstallFlags, int interfaceFlags); void printDepFlags(FILE * f, const char * version, int flags); +void printDepProblems(FILE * f, struct rpmDependencyConflict * conflicts, + int numConflicts); #endif diff --git a/po/rpm.pot b/po/rpm.pot index d1f73bd75..5a7df6539 100644 --- a/po/rpm.pot +++ b/po/rpm.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 1999-04-16 19:17-0400\n" +"POT-Creation-Date: 1999-04-17 10:16-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -14,86 +14,95 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: ENCODING\n" -#: ../build.c:39 ../build.c:52 +#: ../build.c:25 ../install.c:221 ../install.c:377 +#, c-format +msgid "cannot open %s/packages.rpm\n" +msgstr "" + +#: ../build.c:35 +msgid "failed build prerequisites:\n" +msgstr "" + +#: ../build.c:84 ../build.c:97 #, c-format msgid "Failed to open tar pipe: %s\n" msgstr "" #. Give up -#: ../build.c:60 +#: ../build.c:105 #, c-format msgid "Failed to read spec file from %s\n" msgstr "" -#: ../build.c:85 +#: ../build.c:130 #, c-format msgid "Failed to rename %s to %s: %s\n" msgstr "" -#: ../build.c:123 +#: ../build.c:168 #, c-format msgid "File is not a regular file: %s\n" msgstr "" -#: ../build.c:128 +#: ../build.c:173 #, c-format msgid "Unable to open spec file: %s\n" msgstr "" -#: ../build.c:136 +#: ../build.c:181 #, c-format msgid "File contains non-printable characters(%c): %s\n" msgstr "" -#: ../build.c:229 +#: ../build.c:285 msgid "buildroot already specified" msgstr "" -#: ../build.c:235 +#: ../build.c:291 msgid "--buildarch has been obsoleted. Use the --target option instead.\n" msgstr "" -#: ../build.c:239 +#: ../build.c:295 msgid "--buildos has been obsoleted. Use the --target option instead.\n" msgstr "" -#: ../build.c:260 +#: ../build.c:316 msgid "override build architecture" msgstr "" -#: ../build.c:262 +#: ../build.c:318 msgid "override build operating system" msgstr "" -#: ../build.c:264 +#: ../build.c:320 msgid "override build root" msgstr "" -#: ../build.c:266 ../rpm.c:454 +#: ../build.c:322 ../rpm.c:454 msgid "remove build tree when done" msgstr "" -#: ../build.c:268 +#: ../build.c:324 msgid "do not execute any stages of the build" msgstr "" -#: ../build.c:270 +#: ../build.c:326 msgid "do not accept I18N msgstr's from specfile" msgstr "" -#: ../build.c:272 +#: ../build.c:328 msgid "remove sources and specfile when done" msgstr "" -#: ../build.c:274 ../rpm.c:452 +#: ../build.c:330 ../rpm.c:452 msgid "skip straight to specified stage (only for c,i)" msgstr "" -#: ../build.c:276 +#: ../build.c:332 msgid "override target platform" msgstr "" -#: ../build.c:278 +#: ../build.c:334 msgid "lookup I18N strings in specfile catalog" msgstr "" @@ -130,7 +139,7 @@ msgstr "" msgid "Couldn't write header/archive to temp file" msgstr "" -#: ../build/pack.c:347 ../checksig.c:91 +#: ../build/pack.c:330 ../checksig.c:91 #, c-format msgid "Generating signature: %d\n" msgstr "" @@ -263,122 +272,117 @@ msgstr "" msgid "Unknown or unexpected error" msgstr "" -#: ../install.c:129 +#: ../install.c:127 msgid "counting packages to install\n" msgstr "" -#: ../install.c:133 +#: ../install.c:131 #, c-format msgid "found %d packages\n" msgstr "" -#: ../install.c:142 +#: ../install.c:140 msgid "looking for packages to download\n" msgstr "" -#: ../install.c:153 +#: ../install.c:151 #, c-format msgid "Retrieving %s\n" msgstr "" -#: ../install.c:162 +#: ../install.c:160 #, c-format msgid " ... as %s\n" msgstr "" -#: ../install.c:166 +#: ../install.c:164 #, c-format msgid "skipping %s - transfer failed - %s\n" msgstr "" -#: ../install.c:183 +#: ../install.c:181 #, c-format msgid "retrieved %d packages\n" msgstr "" -#: ../install.c:192 ../install.c:329 +#: ../install.c:190 ../install.c:327 #, c-format msgid "cannot open file %s\n" msgstr "" -#: ../install.c:204 ../lib/query.c:540 +#: ../install.c:202 ../lib/query.c:540 #, c-format msgid "%s does not appear to be a RPM package\n" msgstr "" -#: ../install.c:208 ../install.c:466 +#: ../install.c:206 ../install.c:464 #, c-format msgid "%s cannot be installed\n" msgstr "" -#: ../install.c:223 ../install.c:379 -#, c-format -msgid "cannot open %s/packages.rpm\n" -msgstr "" - -#: ../install.c:244 +#: ../install.c:242 #, c-format msgid "package %s is not relocateable\n" msgstr "" -#: ../install.c:256 +#: ../install.c:254 #, c-format msgid "error reading from file %s\n" msgstr "" -#: ../install.c:259 +#: ../install.c:257 #, c-format msgid "file %s requires a newer version of RPM\n" msgstr "" -#: ../install.c:274 +#: ../install.c:272 #, c-format msgid "found %d source and %d binary packages\n" msgstr "" -#: ../install.c:284 +#: ../install.c:282 msgid "failed dependencies:\n" msgstr "" -#: ../install.c:302 +#: ../install.c:300 msgid "installing binary packages\n" msgstr "" -#: ../install.c:390 ../lib/query.c:685 ../verify.c:243 +#: ../install.c:388 ../lib/query.c:685 ../verify.c:243 #, c-format msgid "package %s is not installed\n" msgstr "" -#: ../install.c:394 +#: ../install.c:392 #, c-format msgid "searching for package %s\n" msgstr "" -#: ../install.c:403 +#: ../install.c:401 #, c-format msgid "\"%s\" specifies multiple packages\n" msgstr "" -#: ../install.c:429 +#: ../install.c:427 msgid "removing these packages would break dependencies:\n" msgstr "" -#: ../install.c:456 +#: ../install.c:454 #, c-format msgid "cannot open %s\n" msgstr "" -#: ../install.c:461 +#: ../install.c:459 #, c-format msgid "Installing %s\n" msgstr "" -#: ../install.c:505 +#: ../install.c:503 #, c-format msgid " is needed by %s-%s-%s\n" msgstr "" -#: ../install.c:508 +#: ../install.c:506 #, c-format msgid " conflicts with %s-%s-%s\n" msgstr "" @@ -1310,129 +1314,129 @@ msgid "" "verification" msgstr "" -#: ../rpm.c:1031 +#: ../rpm.c:1032 msgid "" -"--nodeps may only be specified during package installation, erasure, and " -"verification" +"--nodeps may only be specified during package building, installation, " +"erasure, and verification" msgstr "" -#: ../rpm.c:1035 +#: ../rpm.c:1036 msgid "--nofiles may only be specified during package verification" msgstr "" -#: ../rpm.c:1040 +#: ../rpm.c:1041 msgid "" "--test may only be specified during package installation, erasure, and " "building" msgstr "" -#: ../rpm.c:1045 +#: ../rpm.c:1046 msgid "" "--root (-r) may only be specified during installation, erasure, querying, " "and database rebuilds" msgstr "" -#: ../rpm.c:1050 +#: ../rpm.c:1051 msgid "arguments to --root (-r) must begin with a /" msgstr "" -#: ../rpm.c:1054 +#: ../rpm.c:1055 msgid "--clean may only be used with -b and -t" msgstr "" -#: ../rpm.c:1057 +#: ../rpm.c:1058 msgid "--rmsource may only be used with -b and -t" msgstr "" -#: ../rpm.c:1060 +#: ../rpm.c:1061 msgid "--short-circuit may only be used during package building" msgstr "" -#: ../rpm.c:1064 +#: ../rpm.c:1065 msgid "--short-circuit may only be used with -bc, -bi, -bs, -tc -ti, or -ts" msgstr "" -#: ../rpm.c:1070 +#: ../rpm.c:1071 msgid "--oldpackage may only be used during upgrades" msgstr "" -#: ../rpm.c:1075 +#: ../rpm.c:1076 msgid "" "ftp options can only be used during package queries, installs, and upgrades" msgstr "" -#: ../rpm.c:1081 +#: ../rpm.c:1082 msgid "" "http options can only be used during package queries, installs, and upgrades" msgstr "" -#: ../rpm.c:1085 +#: ../rpm.c:1086 msgid "--nopgp may only be used during signature checking" msgstr "" -#: ../rpm.c:1088 +#: ../rpm.c:1089 msgid "--nogpg may only be used during signature checking" msgstr "" -#: ../rpm.c:1091 +#: ../rpm.c:1092 msgid "" "--nomd5 may only be used during signature checking and package verification" msgstr "" -#: ../rpm.c:1117 +#: ../rpm.c:1118 #, c-format msgid "cannot access file %s\n" msgstr "" -#: ../rpm.c:1134 +#: ../rpm.c:1135 msgid "pgp not found: " msgstr "" -#: ../rpm.c:1137 +#: ../rpm.c:1138 msgid "Use `%%_signature pgp5' instead of `%%_signature pgp' in macro file.\n" msgstr "" -#: ../rpm.c:1144 +#: ../rpm.c:1145 msgid "pgp version 5 not found: " msgstr "" -#: ../rpm.c:1147 +#: ../rpm.c:1148 msgid "Use `%%_signature pgp' instead of `%%_signature pgp5' in macro file.\n" msgstr "" -#: ../rpm.c:1154 +#: ../rpm.c:1155 msgid "Pass phrase check failed\n" msgstr "" -#: ../rpm.c:1157 +#: ../rpm.c:1158 msgid "Pass phrase is good.\n" msgstr "" -#: ../rpm.c:1164 +#: ../rpm.c:1165 msgid "Invalid %%_signature spec in macro file.\n" msgstr "" -#: ../rpm.c:1169 +#: ../rpm.c:1170 msgid "--sign may only be used during package building" msgstr "" -#: ../rpm.c:1186 +#: ../rpm.c:1187 msgid "exec failed\n" msgstr "" -#: ../rpm.c:1205 +#: ../rpm.c:1206 msgid "unexpected arguments to --querytags " msgstr "" -#: ../rpm.c:1216 +#: ../rpm.c:1217 msgid "no packages given for signature check" msgstr "" -#: ../rpm.c:1224 +#: ../rpm.c:1225 msgid "no packages given for signing" msgstr "" -#: ../rpm.c:1233 +#: ../rpm.c:1234 msgid "no packages files given for rebuild" msgstr "" @@ -1444,23 +1448,23 @@ msgstr "" msgid "no tar files given for build" msgstr "" -#: ../rpm.c:1305 +#: ../rpm.c:1304 msgid "no packages given for uninstall" msgstr "" -#: ../rpm.c:1354 +#: ../rpm.c:1353 msgid "no packages given for install" msgstr "" -#: ../rpm.c:1376 +#: ../rpm.c:1375 msgid "extra arguments given for query of all packages" msgstr "" -#: ../rpm.c:1382 +#: ../rpm.c:1381 msgid "no arguments given for query" msgstr "" -#: ../rpm.c:1400 +#: ../rpm.c:1399 msgid "no arguments given for verify" msgstr "" @@ -1550,7 +1554,7 @@ msgstr "" msgid "error looking for package %s\n" msgstr "" -#: ../build/build.c:81 ../build/pack.c:265 +#: ../build/build.c:81 ../build/pack.c:248 msgid "Unable to open temp file" msgstr "" @@ -1721,65 +1725,65 @@ msgstr "" msgid "Could not open %%files file: %s" msgstr "" -#: ../build/files.c:1097 ../build/pack.c:450 +#: ../build/files.c:1097 ../build/pack.c:433 #, c-format msgid "line: %s" msgstr "" -#: ../build/files.c:1365 ../build/parsePrep.c:31 +#: ../build/files.c:1386 ../build/parsePrep.c:31 #, c-format msgid "Bad owner/group: %s" msgstr "" -#: ../build/files.c:1419 +#: ../build/files.c:1440 #, c-format msgid "Couldn't exec %s" msgstr "" -#: ../build/files.c:1423 +#: ../build/files.c:1444 #, c-format msgid "Couldn't fork %s" msgstr "" -#: ../build/files.c:1473 +#: ../build/files.c:1494 #, c-format msgid "%s failed" msgstr "" -#: ../build/files.c:1477 +#: ../build/files.c:1498 #, c-format msgid "failed to write all data to %s" msgstr "" -#: ../build/files.c:1511 +#: ../build/files.c:1532 msgid "Finding provides...\n" msgstr "" -#: ../build/files.c:1518 +#: ../build/files.c:1539 msgid "Failed to find provides" msgstr "" -#: ../build/files.c:1537 +#: ../build/files.c:1558 msgid "Finding requires...\n" msgstr "" -#: ../build/files.c:1544 +#: ../build/files.c:1565 msgid "Failed to find requires" msgstr "" -#: ../build/files.c:1578 +#: ../build/files.c:1599 msgid "Provides:" msgstr "" -#: ../build/files.c:1593 +#: ../build/files.c:1614 msgid "Prereqs:" msgstr "" -#: ../build/files.c:1605 +#: ../build/files.c:1626 msgid "Requires:" msgstr "" -#: ../build/files.c:1629 +#: ../build/files.c:1650 #, c-format msgid "Processing files: %s\n" msgstr "" @@ -1797,96 +1801,96 @@ msgstr "" msgid "Could not canonicalize hostname: %s\n" msgstr "" -#: ../build/pack.c:151 +#: ../build/pack.c:134 #, c-format msgid "Could not generate output filename for package %s: %s\n" msgstr "" -#: ../build/pack.c:184 +#: ../build/pack.c:167 #, c-format msgid "readRPM: open %s: %s\n" msgstr "" -#: ../build/pack.c:194 +#: ../build/pack.c:177 #, c-format msgid "readRPM: read %s: %s\n" msgstr "" -#: ../build/pack.c:214 +#: ../build/pack.c:197 #, c-format msgid "readRPM: %s is not an RPM package\n" msgstr "" -#: ../build/pack.c:220 +#: ../build/pack.c:203 #, c-format msgid "readRPM: reading header from %s\n" msgstr "" -#: ../build/pack.c:276 +#: ../build/pack.c:259 msgid "Bad CSA data" msgstr "" -#: ../build/pack.c:299 +#: ../build/pack.c:282 #, c-format msgid "Could not open %s\n" msgstr "" -#: ../build/pack.c:331 ../build/pack.c:374 +#: ../build/pack.c:314 ../build/pack.c:357 #, c-format msgid "Unable to write package: %s" msgstr "" -#: ../build/pack.c:364 +#: ../build/pack.c:347 #, c-format msgid "Unable to read sigtarget: %s" msgstr "" -#: ../build/pack.c:389 +#: ../build/pack.c:372 #, c-format msgid "Wrote: %s\n" msgstr "" -#: ../build/pack.c:404 +#: ../build/pack.c:387 #, c-format msgid "create archive failed on file %s: %s" msgstr "" -#: ../build/pack.c:420 +#: ../build/pack.c:403 #, c-format msgid "cpio_copy write failed: %s" msgstr "" -#: ../build/pack.c:427 +#: ../build/pack.c:410 #, c-format msgid "cpio_copy read failed: %s" msgstr "" -#: ../build/pack.c:506 +#: ../build/pack.c:489 #, c-format msgid "Could not open PreIn file: %s" msgstr "" -#: ../build/pack.c:513 +#: ../build/pack.c:496 #, c-format msgid "Could not open PreUn file: %s" msgstr "" -#: ../build/pack.c:520 +#: ../build/pack.c:503 #, c-format msgid "Could not open PostIn file: %s" msgstr "" -#: ../build/pack.c:527 +#: ../build/pack.c:510 #, c-format msgid "Could not open PostUn file: %s" msgstr "" -#: ../build/pack.c:535 +#: ../build/pack.c:518 #, c-format msgid "Could not open VerifyScript file: %s" msgstr "" -#: ../build/pack.c:551 +#: ../build/pack.c:534 #, c-format msgid "Could not open Trigger script file: %s" msgstr "" diff --git a/rpm.c b/rpm.c index 2c9864e4a..22f694f19 100755 --- a/rpm.c +++ b/rpm.c @@ -611,7 +611,7 @@ int main(int argc, char ** argv) { if (queryArgs.queryFormat) free(queryArgs.queryFormat); memset(&queryArgs, 0, sizeof(queryArgs)); - if (buildArgs.buildRootOverride) free(buildArgs.buildRootOverride); + if (buildArgs.buildRootOverride) xfree(buildArgs.buildRootOverride); if (buildArgs.targets) free(buildArgs.targets); memset(&buildArgs, 0, sizeof(buildArgs)); buildArgs.buildChar = ' '; @@ -1027,9 +1027,10 @@ int main(int argc, char ** argv) { "installation, erasure, and verification")); if (bigMode != MODE_INSTALL && bigMode != MODE_UNINSTALL && + bigMode != MODE_BUILD && bigMode != MODE_TARBUILD && bigMode != MODE_VERIFY && noDeps) argerror(_("--nodeps may only be specified during package " - "installation, erasure, and verification")); + "building, installation, erasure, and verification")); if (bigMode != MODE_VERIFY && noFiles) argerror(_("--nofiles may only be specified during package " @@ -1244,8 +1245,7 @@ int main(int argc, char ** argv) { if (doSourceInstall("/", pkg, &specFile, &cookie)) exit(EXIT_FAILURE); - if (build(specFile, buildArgs.buildAmount, passPhrase, buildArgs.buildRootOverride, - 0, buildArgs.noBuild, cookie, rcfile, buildArgs.targets, force)) { + if (build(specFile, &buildArgs, passPhrase, 0, cookie, rcfile, force, noDeps)) { exit(EXIT_FAILURE); } free(cookie); @@ -1293,9 +1293,8 @@ int main(int argc, char ** argv) { } while ((pkg = poptGetArg(optCon))) - if (build(pkg, buildArgs.buildAmount, passPhrase, buildArgs.buildRootOverride, - bigMode == MODE_TARBUILD, buildArgs.noBuild, NULL, - rcfile, buildArgs.targets, force)) { + if (build(pkg, &buildArgs, passPhrase, bigMode == MODE_TARBUILD, + NULL, rcfile, force, noDeps)) { exit(EXIT_FAILURE); } break; diff --git a/rpm.spec b/rpm.spec index 2191e62ea..f655a4e1b 100644 --- a/rpm.spec +++ b/rpm.spec @@ -2,7 +2,7 @@ Summary: The Red Hat package management system. Name: rpm %define version 2.95 Version: %{version} -Release: 7 +Release: 8 Group: System Environment/Base Source: ftp://ftp.rpm.org/pub/rpm/dist/rpm-2.5.x/rpm-%{version}.tar.gz Copyright: GPL