fix: make a copy of retrieved header before loading.

handle out-of-sync hardlinks as sub-state, don't save the file name.
fix: on build, was broke, add --fsmdebug as well.

CVS patchset: 4537
CVS date: 2001/02/09 20:58:37
This commit is contained in:
jbj 2001-02-09 20:58:37 +00:00
parent 2f9fa168c8
commit d991f23281
13 changed files with 187 additions and 152 deletions

View File

@ -19,10 +19,6 @@
/*@access TFI_t @*/
/*@access FSM_t @*/
#define CPIO_NEWC_MAGIC "070701"
#define CPIO_CRC_MAGIC "070702"
#define CPIO_TRAILER "TRAILER!!!"
#define alloca_strdup(_s) strcpy(alloca(strlen(_s)+1), (_s))
static /*@null@*/ void * _free(/*@only@*/ /*@null@*/ const void * this) {
@ -37,7 +33,6 @@ int _fsm_debug = 0;
*/
struct hardLink {
/*@owned@*/ struct hardLink * next;
/*@owned@*/ const char ** files; /* nlink of these, used by install */
/*@owned@*/ const char ** nsuffix;
/*@owned@*/ int * filex;
dev_t dev;
@ -215,10 +210,14 @@ static /*@null@*/ void * dnlFreeIterator(/*@only@*//*@null@*/ const void * this)
return _free(this);
}
/**
*/
static inline int dnlCount(const DNLI_t dnli) {
return (dnli ? dnli->fi->dc : 0);
}
/**
*/
static inline int dnlIndex(const DNLI_t dnli) {
return (dnli ? dnli->isave : -1);
}
@ -360,6 +359,8 @@ static int mapFind(void * this, const char * fsmPath) {
static int saveHardLink(FSM_t fsm)
{
struct stat * st = &fsm->sb;
int rc = 0;
int ix = -1;
int j;
/* Find hard link set. */
@ -368,7 +369,7 @@ static int saveHardLink(FSM_t fsm)
break;
}
/* New har link encountered, add new set. */
/* New hard link encountered, add new link to set. */
if (fsm->li == NULL) {
fsm->li = xcalloc(1, sizeof(*fsm->li));
fsm->li->next = NULL;
@ -381,7 +382,6 @@ static int saveHardLink(FSM_t fsm)
fsm->li->filex = xcalloc(st->st_nlink, sizeof(fsm->li->filex[0]));
memset(fsm->li->filex, -1, (st->st_nlink * sizeof(fsm->li->filex[0])));
fsm->li->nsuffix = xcalloc(st->st_nlink, sizeof(*fsm->li->nsuffix));
fsm->li->files = xcalloc(st->st_nlink, sizeof(*fsm->li->files));
if (fsm->goal == FSM_PKGBUILD)
fsm->li->linksLeft = st->st_nlink;
@ -394,7 +394,6 @@ static int saveHardLink(FSM_t fsm)
if (fsm->goal == FSM_PKGBUILD) --fsm->li->linksLeft;
fsm->li->filex[fsm->li->linksLeft] = fsm->ix;
fsm->li->files[fsm->li->linksLeft] = xstrdup(fsm->path);
/*@-observertrans@*/
fsm->li->nsuffix[fsm->li->linksLeft] = fsm->nsuffix;
/*@=observertrans@*/
@ -417,23 +416,23 @@ fprintf(stderr, "*** %p link[%d:%d] %d filex %d %s\n", fsm->li, fsm->li->linksLe
{ TFI_t fi = fsmGetFi(fsm);
for (j = fsm->li->linksLeft - 1; j >= 0; j--) {
int i;
i = fsm->li->filex[j];
if (i < 0 || XFA_SKIPPING(fi->actions[i]))
ix = fsm->li->filex[j];
if (ix < 0 || XFA_SKIPPING(fi->actions[ix]))
continue;
break;
}
}
/* Are all links skipped or not encountered yet? */
if (j < 0)
if (ix < 0 || j < 0)
return 1; /* XXX W2DO? */
/* Save the non-skipped file name and map index. */
fsm->li->linkIndex = j;
fsm->path = _free(fsm->path);
fsm->path = xstrdup(fsm->li->files[j]);
return 0;
fsm->ix = ix;
rc = fsmStage(fsm, FSM_MAP);
return rc;
}
/**
@ -443,15 +442,6 @@ fprintf(stderr, "*** %p link[%d:%d] %d filex %d %s\n", fsm->li, fsm->li->linksLe
static /*@null@*/ void * freeHardLink(/*@only@*/ /*@null@*/ struct hardLink * li)
{
if (li) {
if (li->files) {
int i;
for (i = 0; i < li->nlink; i++) {
/*@-unqualifiedtrans@*/
li->files[i] = _free(li->files[i]);
/*@=unqualifiedtrans@*/
}
}
li->files = _free(li->files);
li->nsuffix = _free(li->nsuffix); /* XXX elements are shared */
li->filex = _free(li->filex);
}
@ -731,8 +721,6 @@ fprintf(stderr, "*** %s:%s %s\n", fiTypeString(fi), fileActionString(fsm->action
break;
case FA_CREATE:
if (_fsm_debug && !(fsm->goal == FSM_PKGINSTALL || fsm->goal == FSM_PKGCOMMIT))
fprintf(stderr, "*** %s:%s %s\n", fiTypeString(fi), fileActionString(fsm->action), (fsm->path ? fsm->path : ""));
assert(fi->type == TR_ADDED);
break;
@ -1001,33 +989,37 @@ static int writeLinkedFile(FSM_t fsm)
/*@modifies fsm @*/
{
const char * path = fsm->path;
int rc = 0;
const char * nsuffix = fsm->nsuffix;
int iterIndex = fsm->ix;
int ec = 0;
int rc;
int i;
fsm->path = NULL;
fsm->nsuffix = NULL;
fsm->ix = -1;
for (i = fsm->li->nlink - 1; i >= 0; i--) {
if (fsm->li->filex[i] < 0) continue;
if (fsm->li->files[i] == NULL) continue;
fsm->path = fsm->li->files[i];
fsm->li->filex[i] = -1;
fsm->li->files[i] = NULL;
fsm->ix = fsm->li->filex[i];
rc = fsmStage(fsm, FSM_MAP);
/* Write data after last link. */
rc = writeFile(fsm, (i == 0));
if (rc) break;
if (rc && fsm->failedFile && *fsm->failedFile == NULL) {
ec = rc;
*fsm->failedFile = xstrdup(fsm->path);
}
#ifdef DYING
/*@-unqualifiedtrans@*/
fsm->li->files[i] = _free(fsm->li->files[i]);
/*@=unqualifiedtrans@*/
#endif
fsm->path = _free(fsm->path);
fsm->li->filex[i] = -1;
}
if (rc && fsm->failedFile && *fsm->failedFile == NULL)
*fsm->failedFile = xstrdup(fsm->path);
fsm->ix = iterIndex;
fsm->nsuffix = nsuffix;
fsm->path = path;
return rc;
return ec;
}
/**
@ -1036,40 +1028,47 @@ static int fsmMakeLinks(FSM_t fsm)
{
const char * path = fsm->path;
const char * opath = fsm->opath;
int rc = 0;
const char * nsuffix = fsm->nsuffix;
int iterIndex = fsm->ix;
int ec = 0;
int rc;
int i;
fsm->opath = fsm->li->files[fsm->li->createdPath];
fsm->path = NULL;
fsm->opath = NULL;
fsm->nsuffix = NULL;
fsm->ix = -1;
fsm->ix = fsm->li->filex[fsm->li->createdPath];
rc = fsmStage(fsm, FSM_MAP);
fsm->opath = fsm->path;
fsm->path = NULL;
for (i = 0; i < fsm->li->nlink; i++) {
if (fsm->li->filex[i] < 0) continue;
if (fsm->li->files[i] == NULL) continue;
if (i == fsm->li->createdPath) continue;
fsm->path = fsm->li->files[i];
fsm->ix = fsm->li->filex[i];
rc = fsmStage(fsm, FSM_MAP);
rc = fsmStage(fsm, FSM_VERIFY);
if (!rc) continue;
if (rc != CPIOERR_LSTAT_FAILED) break;
/* XXX link(fsm->opath, fsm->path) */
rc = fsmStage(fsm, FSM_LINK);
if (rc) break;
#ifdef DYING /* XXX late commit needs to rename. */
/*@-unqualifiedtrans@*/
fsm->li->files[i] = _free(fsm->li->files[i]);
/*@=unqualifiedtrans@*/
#endif
if (rc && fsm->failedFile && *fsm->failedFile == NULL) {
ec = rc;
*fsm->failedFile = xstrdup(fsm->path);
}
fsm->li->linksLeft--;
}
fsm->opath = _free(fsm->opath);
if (rc && fsm->failedFile && *fsm->failedFile == NULL)
*fsm->failedFile = xstrdup(fsm->path);
fsm->ix = iterIndex;
fsm->nsuffix = nsuffix;
fsm->path = path;
fsm->opath = opath;
return rc;
return ec;
}
/**
@ -1094,13 +1093,11 @@ static int fsmCommitLinks(FSM_t fsm)
for (i = 0; i < fsm->li->nlink; i++) {
if (fsm->li->filex[i] < 0) continue;
if (fsm->li->files[i] == NULL) continue;
fsm->ix = fsm->li->filex[i];
rc = fsmStage(fsm, FSM_MAP);
rc = fsmStage(fsm, FSM_COMMIT);
fsm->path = _free(fsm->path);
fsm->li->filex[i] = -1;
fsm->li->files[i] = _free(fsm->li->files[i]);
}
fsm->ix = iterIndex;
@ -1277,14 +1274,6 @@ int fsmStage(FSM_t fsm, fileStage stage)
fsm->nsuffix = NULL;
if (fsm->goal == FSM_PKGINSTALL) {
#ifdef DYING
/* Detect and create directories not explicitly in package. */
if (!fsm->mkdirsdone) {
rc = fsmStage(fsm, FSM_MKDIRS);
fsm->mkdirsdone = 1;
}
#endif
/* Read next header from payload, checking for end-of-payload. */
rc = fsmStage(fsm, FSM_NEXT);
}
@ -1499,16 +1488,19 @@ int fsmStage(FSM_t fsm, fileStage stage)
if (fsm->osuffix)
fsm->path = fsmFsPath(fsm, st, NULL, NULL);
rc = fsmStage(fsm, FSM_VERIFY);
if (rc == 0 && fsm->osuffix) {
const char * opath = fsm->opath;
fsm->opath = fsm->path;
fsm->path = fsmFsPath(fsm, st, NULL, fsm->osuffix);
rc = fsmStage(fsm, FSM_RENAME);
if (!rc)
rpmMessage(RPMMESS_WARNING, _("%s saved as %s\n"), fsm->opath, fsm->path);
if (!rc)
rpmMessage(RPMMESS_WARNING,
_("%s saved as %s\n"), fsm->opath, fsm->path);
fsm->path = _free(fsm->path);
fsm->opath = opath;
}
fsm->path = path;
if (rc != CPIOERR_LSTAT_FAILED) return rc;
rc = expandRegular(fsm);
@ -1551,7 +1543,10 @@ rpmMessage(RPMMESS_WARNING, _("%s saved as %s\n"), fsm->opath, fsm->path);
rc = fsmStage(fsm, FSM_MKFIFO);
st->st_mode = st_mode; /* XXX restore st->st_mode */
}
} else if (S_ISCHR(st->st_mode) || S_ISBLK(st->st_mode) || S_ISSOCK(st->st_mode)) {
} else if (S_ISCHR(st->st_mode) ||
S_ISBLK(st->st_mode) ||
S_ISSOCK(st->st_mode))
{
rc = fsmStage(fsm, FSM_VERIFY);
if (rc == CPIOERR_LSTAT_FAILED)
rc = fsmStage(fsm, FSM_MKNOD);
@ -1708,13 +1703,18 @@ rpmMessage(RPMMESS_WARNING, _("%s saved as %s\n"), fsm->opath, fsm->path);
while ((fsm->li = fsm->links) != NULL) {
fsm->links = fsm->li->next;
fsm->li->next = NULL;
if (fsm->goal == FSM_PKGINSTALL && fsm->commit && fsm->li->linksLeft) {
if (fsm->goal == FSM_PKGINSTALL && fsm->commit && fsm->li->linksLeft)
{
for (i = 0 ; i < fsm->li->linksLeft; i++) {
if (fsm->li->filex[i] < 0) continue;
rc = CPIOERR_MISSING_HARDLINK;
if (!(fsm->li->files && fsm->li->files[i])) continue;
if (fsm->failedFile && *fsm->failedFile == NULL)
*fsm->failedFile = xstrdup(fsm->li->files[i]);
if (fsm->failedFile && *fsm->failedFile == NULL) {
fsm->ix = fsm->li->filex[i];
if (!fsmStage(fsm, FSM_MAP)) {
*fsm->failedFile = fsm->path;
fsm->path = NULL;
}
}
break;
}
}

View File

@ -65,6 +65,10 @@ typedef enum cpioMapFlags_e {
CPIO_MULTILIB = (1 << 31) /* internal, only for building. */
} cpioMapFlags;
#define CPIO_NEWC_MAGIC "070701"
#define CPIO_CRC_MAGIC "070702"
#define CPIO_TRAILER "TRAILER!!!"
/** \ingroup payload
* Cpio archive header information.
*/

View File

@ -566,6 +566,25 @@ assert(rdlen == dl);
return h;
}
Header headerCopyLoad(void *uh)
{
int_32 *ei = (int_32 *) uh;
int_32 il = ntohl(ei[0]); /* index length */
int_32 dl = ntohl(ei[1]); /* data length */
int pvlen = sizeof(il) + sizeof(dl) +
(il * sizeof(struct entryInfo)) + dl;
void * nuh = memcpy(xmalloc(pvlen), uh, pvlen);
Header h;
h = headerLoad(nuh);
if (h == NULL) {
free(nuh);
return h;
}
h->region_allocated = 1;
return h;
}
static /*@only@*/ void * doHeaderUnload(Header h, /*@out@*/ int * lengthPtr)
/*@modifies h, *lengthPtr @*/
{

View File

@ -210,6 +210,13 @@ unsigned int headerSizeof(Header h, enum hMagic magicp)
*/
Header headerLoad(/*@kept@*/ void *p) /*@*/;
/** \ingroup header
* Make a copy and convert header to in-memory representation.
* @param p on-disk header (with offsets)
* @return header
*/
Header headerCopyLoad(void *p) /*@*/;
/** \ingroup header
* Convert header to on-disk representation.
* @param h header (with pointers)

View File

@ -44,6 +44,7 @@ struct rpmBuildArguments rpmBTArgs;
#define POPT_TS 0x7473
extern int _noDirTokens;
extern int _fsm_debug;
static int force = 0;
int noLang = 0;
static int noBuild = 0;
@ -174,6 +175,8 @@ struct poptOption rpmBuildPoptTable[] = {
N_("generate headers compatible with rpm4 packaging"), NULL},
{ "force", '\0', POPT_ARGFLAG_DOC_HIDDEN, &force, POPT_FORCE,
N_("ignore ExcludeArch: directives from spec file"), NULL},
{ "fsmdebug", '\0', (POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN), &_fsm_debug, -1,
N_("debug file state machine"), NULL},
{ "nobuild", '\0', 0, &noBuild, POPT_NOBUILD,
N_("do not execute any stages of the build"), NULL },
{ "nodeps", '\0', 0, &noDeps, POPT_NODEPS,

View File

@ -25,7 +25,7 @@ typedef /*@abstract@*/ struct fsm_s * FSM_t;
#define _fd(_a) ((_a) | (FSM_INTERNAL | FSM_DEAD))
typedef enum fileStage_e {
FSM_UNKNOWN = 0,
FSM_INIT = _fd(1),
FSM_INIT = _fi(1),
FSM_PRE = _fd(2),
FSM_PROCESS = _fv(3),
FSM_POST = _fd(4),
@ -39,14 +39,14 @@ typedef enum fileStage_e {
FSM_PKGUNDO = _fd(11),
FSM_CREATE = _fd(17),
FSM_MAP = _fd(18),
FSM_MAP = _fi(18),
FSM_MKDIRS = _fi(19),
FSM_RMDIRS = _fi(20),
FSM_MKLINKS = _fi(21),
FSM_NOTIFY = _fd(22),
FSM_DESTROY = _fd(23),
FSM_VERIFY = _fd(24),
FSM_COMMIT = _fd(25),
FSM_COMMIT = _fi(25),
FSM_UNLINK = _fs(33),
FSM_RENAME = _fs(34),

View File

@ -1383,7 +1383,7 @@ top:
mi->mi_h = NULL;
}
mi->mi_h = headerLoad(uh);
mi->mi_h = headerCopyLoad(uh);
if (mi->mi_release) {
const char *release;

View File

@ -45,8 +45,7 @@ int removeBinaryPackage(const rpmTransactionSet ts, TFI_t fi)
rpmdbFreeIterator(mi);
return 2;
}
/* XXX was headerLink but iterators destroy dbh data. */
h = headerCopy(h);
h = headerLink(h);
rpmdbFreeIterator(mi);
}

View File

@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2001-02-08 17:41-0500\n"
"POT-Creation-Date: 2001-02-09 15:54-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -503,7 +503,7 @@ msgid ""
"options as -q"
msgstr ""
#: lib/poptBT.c:180 lib/verify.c:56 rpm.c:393 rpm.c:435 rpm.c:470 rpmqv.c:263
#: lib/poptBT.c:183 lib/verify.c:56 rpm.c:393 rpm.c:435 rpm.c:470 rpmqv.c:263
#: rpmqv.c:533 rpmqv.c:581 rpmqv.c:615
msgid "do not verify package dependencies"
msgstr ""
@ -697,15 +697,15 @@ msgstr ""
msgid "bin/src package (prep, compile, install, package)"
msgstr ""
#: lib/poptBT.c:191 rpm.c:496
#: lib/poptBT.c:194 rpm.c:496
msgid "skip straight to specified stage (only for c,i)"
msgstr ""
#: lib/poptBT.c:172 rpm.c:498
#: lib/poptBT.c:173 rpm.c:498
msgid "remove build tree when done"
msgstr ""
#: lib/poptBT.c:187 rpm.c:500
#: lib/poptBT.c:190 rpm.c:500
msgid "remove sources when done"
msgstr ""
@ -713,7 +713,7 @@ msgstr ""
msgid "remove spec file when done"
msgstr ""
#: lib/poptBT.c:193 rpm.c:504 rpmqv.c:201
#: lib/poptBT.c:196 rpm.c:504 rpmqv.c:201
msgid "generate PGP/GPG signature"
msgstr ""
@ -1169,7 +1169,7 @@ msgstr ""
msgid "generate headers compatible with (legacy) rpm[23] packaging"
msgstr ""
#: lib/poptBT.c:174 rpmqv.c:188
#: lib/poptBT.c:175 rpmqv.c:188
msgid "generate headers compatible with rpm4 packaging"
msgstr ""
@ -2185,41 +2185,41 @@ msgstr ""
msgid "line %d: Bad %s number: %s\n"
msgstr ""
#: lib/cpio.c:285
#: lib/cpio.c:284
msgid "========= Directories not explictly included in package:\n"
msgstr ""
#: lib/cpio.c:287
#: lib/cpio.c:286
#, c-format
msgid "%9d %s\n"
msgstr ""
#: lib/cpio.c:1408
#: lib/cpio.c:1397
#, c-format
msgid "%s directory created with perms %04o.\n"
msgstr ""
#: lib/cpio.c:1508 lib/cpio.c:1620
#: lib/cpio.c:1499 lib/cpio.c:1615
#, c-format
msgid "%s saved as %s\n"
msgstr ""
#: lib/cpio.c:1645
#: lib/cpio.c:1640
#, c-format
msgid "%s rmdir of %s failed: Directory not empty\n"
msgstr ""
#: lib/cpio.c:1650
#: lib/cpio.c:1645
#, c-format
msgid "%s rmdir of %s failed: %s\n"
msgstr ""
#: lib/cpio.c:1659
#: lib/cpio.c:1654
#, c-format
msgid "%s unlink of %s failed: %s\n"
msgstr ""
#: lib/cpio.c:1676
#: lib/cpio.c:1671
#, c-format
msgid "%s created as %s\n"
msgstr ""
@ -2498,7 +2498,7 @@ msgid ""
msgstr ""
#: lib/formats.c:86 lib/formats.c:112 lib/formats.c:141 lib/formats.c:182
#: lib/header.c:2532 lib/header.c:2549 lib/header.c:2569
#: lib/header.c:2551 lib/header.c:2568 lib/header.c:2588
msgid "(not a number)"
msgstr ""
@ -2536,88 +2536,88 @@ msgstr ""
msgid "dataLength() RPM_STRING_TYPE count must be 1.\n"
msgstr ""
#: lib/header.c:207 lib/header.c:1017 lib/install.c:236
#: lib/header.c:207 lib/header.c:1036 lib/install.c:236
#, c-format
msgid "Data type %d not supported\n"
msgstr ""
#: lib/header.c:1440
#: lib/header.c:1459
#, c-format
msgid "Bad count for headerAddEntry(): %d\n"
msgstr ""
#. @-observertrans@
#: lib/header.c:1885
#: lib/header.c:1904
#, c-format
msgid "missing { after %"
msgstr ""
#. @-observertrans@
#: lib/header.c:1915
#: lib/header.c:1934
msgid "missing } after %{"
msgstr ""
#. @-observertrans@
#: lib/header.c:1929
#: lib/header.c:1948
msgid "empty tag format"
msgstr ""
#. @-observertrans@
#: lib/header.c:1941
#: lib/header.c:1960
msgid "empty tag name"
msgstr ""
#. @-observertrans@
#: lib/header.c:1958
#: lib/header.c:1977
msgid "unknown tag"
msgstr ""
#. @-observertrans@
#: lib/header.c:1985
#: lib/header.c:2004
msgid "] expected at end of array"
msgstr ""
#. @-observertrans@
#: lib/header.c:2003
#: lib/header.c:2022
msgid "unexpected ]"
msgstr ""
#. @-observertrans@
#: lib/header.c:2007
#: lib/header.c:2026
msgid "unexpected }"
msgstr ""
#. @-observertrans@
#: lib/header.c:2067
#: lib/header.c:2086
msgid "? expected in expression"
msgstr ""
#. @-observertrans@
#: lib/header.c:2076
#: lib/header.c:2095
msgid "{ expected after ? in expression"
msgstr ""
#. @-observertrans@
#: lib/header.c:2089 lib/header.c:2130
#: lib/header.c:2108 lib/header.c:2149
msgid "} expected in expression"
msgstr ""
#. @-observertrans@
#: lib/header.c:2099
#: lib/header.c:2118
msgid ": expected following ? subexpression"
msgstr ""
#. @-observertrans@
#: lib/header.c:2115
#: lib/header.c:2134
msgid "{ expected after : in expression"
msgstr ""
#. @-observertrans@
#: lib/header.c:2140
#: lib/header.c:2159
msgid "| expected at end of expression"
msgstr ""
#: lib/header.c:2311
#: lib/header.c:2330
msgid "(unknown type)"
msgstr ""
@ -2672,7 +2672,7 @@ msgstr ""
msgid "%s: %s-%s-%s has %d files, test = %d\n"
msgstr ""
#: lib/install.c:797 lib/install.c:879 lib/uninstall.c:70 lib/uninstall.c:92
#: lib/install.c:797 lib/install.c:879 lib/uninstall.c:69 lib/uninstall.c:91
#, c-format
msgid "%s: running %s script(s) (if any)\n"
msgstr ""
@ -2695,123 +2695,127 @@ msgid ""
"only packaging with major numbers <= 4 is supported by this version of RPM\n"
msgstr ""
#: lib/poptBT.c:94
#: lib/poptBT.c:95
#, c-format
msgid "buildroot already specified, ignoring %s\n"
msgstr ""
#: lib/poptBT.c:119
#: lib/poptBT.c:120
#, c-format
msgid "build through %prep (unpack sources and apply patches) from <specfile>"
msgstr ""
#: lib/poptBT.c:120 lib/poptBT.c:123 lib/poptBT.c:126 lib/poptBT.c:129
#: lib/poptBT.c:132 lib/poptBT.c:135 lib/poptBT.c:138
#: lib/poptBT.c:121 lib/poptBT.c:124 lib/poptBT.c:127 lib/poptBT.c:130
#: lib/poptBT.c:133 lib/poptBT.c:136 lib/poptBT.c:139
msgid "<specfile>"
msgstr ""
#: lib/poptBT.c:122
#: lib/poptBT.c:123
msgid "build through %build (%prep, then compile) from <specfile>"
msgstr ""
#: lib/poptBT.c:125
#: lib/poptBT.c:126
msgid "build through %install (%prep, %build, then install) from <specfile>"
msgstr ""
#: lib/poptBT.c:128
#: lib/poptBT.c:129
#, c-format
msgid "verify %files section from <specfile>"
msgstr ""
#: lib/poptBT.c:131
#: lib/poptBT.c:132
msgid "build source and binary packages from <specfile>"
msgstr ""
#: lib/poptBT.c:134
#: lib/poptBT.c:135
msgid "build binary package only from <specfile>"
msgstr ""
#: lib/poptBT.c:137
#: lib/poptBT.c:138
msgid "build source package only from <specfile>"
msgstr ""
#: lib/poptBT.c:141
#: lib/poptBT.c:142
#, c-format
msgid "build through %prep (unpack sources and apply patches) from <tarball>"
msgstr ""
#: lib/poptBT.c:142 lib/poptBT.c:145 lib/poptBT.c:148 lib/poptBT.c:151
#: lib/poptBT.c:154 lib/poptBT.c:157 lib/poptBT.c:160
#: lib/poptBT.c:143 lib/poptBT.c:146 lib/poptBT.c:149 lib/poptBT.c:152
#: lib/poptBT.c:155 lib/poptBT.c:158 lib/poptBT.c:161
msgid "<tarball>"
msgstr ""
#: lib/poptBT.c:144
#: lib/poptBT.c:145
msgid "build through %build (%prep, then compile) from <tarball>"
msgstr ""
#: lib/poptBT.c:147
#: lib/poptBT.c:148
msgid "build through %install (%prep, %build, then install) from <tarball>"
msgstr ""
#: lib/poptBT.c:150
#: lib/poptBT.c:151
#, c-format
msgid "verify %files section from <tarball>"
msgstr ""
#: lib/poptBT.c:153
#: lib/poptBT.c:154
msgid "build source and binary packages from <tarball>"
msgstr ""
#: lib/poptBT.c:156
#: lib/poptBT.c:157
msgid "build binary package only from <tarball>"
msgstr ""
#: lib/poptBT.c:159
#: lib/poptBT.c:160
msgid "build source package only from <tarball>"
msgstr ""
#: lib/poptBT.c:163
#: lib/poptBT.c:164
msgid "build binary package from <source package>"
msgstr ""
#: lib/poptBT.c:164 lib/poptBT.c:167
#: lib/poptBT.c:165 lib/poptBT.c:168
msgid "<source package>"
msgstr ""
#: lib/poptBT.c:166
#: lib/poptBT.c:167
msgid ""
"build through %install (%prep, %build, then install) from <source package>"
msgstr ""
#: lib/poptBT.c:170
#: lib/poptBT.c:171
msgid "override build root"
msgstr ""
#: lib/poptBT.c:176
#: lib/poptBT.c:177
msgid "ignore ExcludeArch: directives from spec file"
msgstr ""
#: lib/poptBT.c:178
#: lib/poptBT.c:179
msgid "debug file state machine"
msgstr ""
#: lib/poptBT.c:181
msgid "do not execute any stages of the build"
msgstr ""
#: lib/poptBT.c:182
#: lib/poptBT.c:185
msgid "generate package header(s) compatible with (legacy) rpm[23] packaging"
msgstr ""
#: lib/poptBT.c:185
#: lib/poptBT.c:188
msgid "do not accept i18N msgstr's from specfile"
msgstr ""
#: lib/poptBT.c:189
#: lib/poptBT.c:192
msgid "remove specfile when done"
msgstr ""
#: lib/poptBT.c:195
#: lib/poptBT.c:198
msgid "override target platform"
msgstr ""
#: lib/poptBT.c:197
#: lib/poptBT.c:200
msgid "lookup i18N strings in specfile catalog"
msgstr ""

View File

@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2001-01-16 08:53-0500\n"
"POT-Creation-Date: 2001-02-09 10:46-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -367,7 +367,6 @@ static int findPackagesWithRelocatedFiles(struct pkgSet *psp,
DEBUG (("Found file in %s: %s%s\n", name,
availDirs[availDirIndexes[i]], availFiles[i]))
(*pip)->selected = 1;
break;
}
}
free(availFiles);

View File

@ -25,11 +25,11 @@
#define rpmDecreaseVerbosity() \
((void)rpmlogSetMask(((rpmlogSetMask(0) & 0xff) >> 1)))
#define rpmIsNormal() \
(rpmlogSetMask(0) & RPMLOG_MASK( RPMMESS_NORMAL ))
(rpmlogSetMask(0) >= RPMLOG_MASK( RPMMESS_NORMAL ))
#define rpmIsVerbose() \
(rpmlogSetMask(0) & RPMLOG_MASK( RPMMESS_VERBOSE ))
(rpmlogSetMask(0) >= RPMLOG_MASK( RPMMESS_VERBOSE ))
#define rpmIsDebug() \
(rpmlogSetMask(0) & RPMLOG_MASK( RPMMESS_DEBUG ))
(rpmlogSetMask(0) >= RPMLOG_MASK( RPMMESS_DEBUG ))
/**
*/

View File

@ -1234,8 +1234,8 @@ int main(int argc, const char ** argv)
case MODE_REBUILD:
case MODE_RECOMPILE:
{ const char * pkg;
if (rpmIsNormal())
rpmSetVerbosity(RPMMESS_VERBOSE);
while (!rpmIsVerbose())
rpmIncreaseVerbosity();
if (!poptPeekArg(optCon))
argerror(_("no packages files given for rebuild"));
@ -1272,8 +1272,8 @@ int main(int argc, const char ** argv)
case MODE_BUILD:
case MODE_TARBUILD:
{ const char * pkg;
if (rpmIsNormal())
rpmSetVerbosity(RPMMESS_VERBOSE);
while (!rpmIsVerbose())
rpmIncreaseVerbosity();
switch (ba->buildChar) {
case 'a':