| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371 |
- ##
- ## rpm.patch.bugfix -- Annotated OpenPKG RPM Patch file
- ## Copyright (c) 2000-2004 The OpenPKG Project <http://www.openpkg.org/>
- ## Copyright (c) 2000-2004 Ralf S. Engelschall <rse@engelschall.com>
- ## Copyright (c) 2000-2004 Cable & Wireless <http://www.cw.com/>
- ##
- ## This file assembles changes to existing RPM source files between
- ## the original RedHat RPM and the OpenPKG RPM variant. It can be
- ## automatically applied to a vanilla RedHat RPM source tree with the
- ## 'patch' tool to upgrade those files. Each patch snippet is annotated
- ## with a short description.
- ##
- ## Created on: 15-May-2004
- ##
- ## ATTENTION: THIS PATCH FILE WAS AUTO-GENERATED FROM AN OPENPKG
- ## RPM CVS REPOSITORY, HENCE DO NOT EDIT THIS FILE.
- ##
- +---------------------------------------------------------------------------
- | %setup and %patch macros are treated very special internally, but
- | make sure they at least optically can be used like any other macro
- | and especially can have leading whitespaces.
- +---------------------------------------------------------------------------
- Index: build/parsePrep.c
- --- build/parsePrep.c 7 Aug 2002 14:20:45 -0000 1.1.1.10
- +++ build/parsePrep.c 12 Feb 2004 16:58:58 -0000 1.3
- @@ -584,12 +635,15 @@
- saveLines = splitString(getStringBuf(sb), strlen(getStringBuf(sb)), '\n');
- /*@-usereleased@*/
- for (lines = saveLines; *lines; lines++) {
- + char *cp;
- + for (cp = *lines; *cp == ' ' || *cp == '\t'; cp++)
- + ;
- res = 0;
- /*@-boundsread@*/
- - if (! strncmp(*lines, "%setup", sizeof("%setup")-1)) {
- - res = doSetupMacro(spec, *lines);
- - } else if (! strncmp(*lines, "%patch", sizeof("%patch")-1)) {
- - res = doPatchMacro(spec, *lines);
- + if (! strncmp(cp, "%setup", sizeof("%setup")-1)) {
- + res = doSetupMacro(spec, cp);
- + } else if (! strncmp(cp, "%patch", sizeof("%patch")-1)) {
- + res = doPatchMacro(spec, cp);
- } else {
- appendLineStringBuf(spec->prep, *lines);
- }
- +---------------------------------------------------------------------------
- | Do not pick of the vendor BeeCrypt package on RedHat Linux.
- +---------------------------------------------------------------------------
- Index: configure.ac
- --- configure.ac 2 Jul 2003 19:20:52 -0000 1.1.1.4
- +++ configure.ac 12 May 2004 14:34:30 -0000 1.3
- @@ -416,7 +417,7 @@
- AC_CHECK_HEADER([beecrypt/beecrypt.h], [
- AC_CHECK_LIB(beecrypt, mpfprintln, [
- AC_DEFINE(HAVE_LIBBEECRYPT, 1, [Define to 1 if you have the `beecrypt' library (-lbeecrypt).])
- - WITH_BEECRYPT_INCLUDE="-I/usr/include/beecrypt"
- + WITH_BEECRYPT_INCLUDE=""
- WITH_BEECRYPT_LIB="-lbeecrypt"
- ])
- ], [
- +---------------------------------------------------------------------------
- | Remove access to not-existing beecrypt/ subdirectory
- | to avoid the configure script to break building.
- +---------------------------------------------------------------------------
- Index: configure.ac
- --- configure.ac 2 Jul 2003 19:20:52 -0000 1.1.1.4
- +++ configure.ac 12 May 2004 14:34:30 -0000 1.3
- @@ -1274,7 +1299,6 @@
- python/rpmdb/Makefile
- python/test/Makefile
- ], [ echo timestamp > popt/stamp-h.in
- - echo timestamp > beecrypt/stamp-h.in
- echo timestamp > stamp-h.in
- ]
- )
- +---------------------------------------------------------------------------
- | Fix filedescriptor leakage.
- +---------------------------------------------------------------------------
- Index: lib/psm.c
- --- lib/psm.c 5 Jun 2003 12:43:18 -0000 1.1.1.6
- +++ lib/psm.c 22 Jan 2004 21:42:23 -0000 1.2
- @@ -940,6 +940,8 @@
- if (sfdno > STDERR_FILENO) {
- xx = Fclose (scriptFd);
- }
- + } else {
- + xx = Fclose(out);
- }
-
- { const char *ipath = rpmExpand("PATH=%{_install_script_path}", NULL);
- +---------------------------------------------------------------------------
- | Fix trigger argument passing. For more details see RPM BugDB under:
- | http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=100509
- +---------------------------------------------------------------------------
- Index: lib/psm.c
- --- lib/psm.c 5 Jun 2003 12:43:18 -0000 1.1.1.6
- +++ lib/psm.c 22 Jan 2004 21:42:23 -0000 1.2
- @@ -1106,11 +1108,13 @@
- const char ** triggerProgs;
- int_32 * triggerIndices;
- const char * sourceName;
- + const char * triggerName;
- rpmRC rc = RPMRC_OK;
- int xx;
- int i;
-
- xx = headerNVR(sourceH, &sourceName, NULL, NULL);
- + xx = headerNVR(triggeredH, &triggerName, NULL, NULL);
-
- trigger = rpmdsInit(rpmdsNew(triggeredH, RPMTAG_TRIGGERNAME, scareMem));
- if (trigger == NULL)
- @@ -1149,7 +1153,7 @@
- { int arg1;
- int index;
-
- - arg1 = rpmdbCountPackages(rpmtsGetRdb(ts), Name);
- + arg1 = rpmdbCountPackages(rpmtsGetRdb(ts), triggerName);
- if (arg1 < 0) {
- /* XXX W2DO? fails as "execution of script failed" */
- rc = RPMRC_FAIL;
- +---------------------------------------------------------------------------
- | Make sure RPM does not try to set file owner/group on files during
- | installation of _source_ RPMs. Instead, let it use the current
- | run-time owner/group, because most of the time the owner/group in
- | the source RPM (which is the owner/group of the files as staying on
- | the package author system) is not existing on the target system, of
- | course.
- +---------------------------------------------------------------------------
- Index: lib/psm.c
- --- lib/psm.c 5 Jun 2003 12:43:18 -0000 1.1.1.6
- +++ lib/psm.c 22 Jan 2004 21:42:23 -0000 1.2
- @@ -1710,6 +1714,7 @@
-
- uid = fi->uid;
- gid = fi->gid;
- + if (!headerIsEntry(fi->h, RPMTAG_SOURCEPACKAGE)) {
- if (fi->fuser && unameToUid(fi->fuser[i], &uid)) {
- rpmMessage(RPMMESS_WARNING,
- _("user %s does not exist - using root\n"),
- @@ -1727,6 +1732,7 @@
- /* XXX this diddles header memory. */
- fi->fmodes[i] &= ~S_ISGID; /* turn off the sgid bit */
- }
- + }
- if (fi->fuids) fi->fuids[i] = uid;
- if (fi->fgids) fi->fgids[i] = gid;
- }
- +---------------------------------------------------------------------------
- | Fix --justdb operation by consistently use the same rootDir checks
- | RPM uses everywhere else, too.
- +---------------------------------------------------------------------------
- Index: lib/psm.c
- --- lib/psm.c 5 Jun 2003 12:43:18 -0000 1.1.1.6
- +++ lib/psm.c 22 Jan 2004 21:42:23 -0000 1.2
- @@ -2027,7 +2033,8 @@
- case PSM_CHROOT_IN:
- { const char * rootDir = rpmtsRootDir(ts);
- /* Change root directory if requested and not already done. */
- - if (rootDir != NULL && !rpmtsChrootDone(ts) && !psm->chrootDone) {
- + if (rootDir != NULL && !(rootDir[0] == '/' && rootDir[1] == '\0')
- + && !rpmtsChrootDone(ts) && !psm->chrootDone) {
- static int _loaded = 0;
-
- /*
- +---------------------------------------------------------------------------
- | First, remove incorrectly introduced buffer assignment. Second, fix
- | second and subsequent "%{foo -x}" constructs for non-Linux systems
- | (without resetting the option index only the first construct would
- | work). Third, bugfix the handling of macros inside macro arguments
- | as in "%{foo bar%{quux}baz}": RPM correctly determined the pointer
- | to the terminating second closing brace, but instead of passing
- | this pointer to the subroutine which handles the macro argument
- | construction, it passed the underlying character. This in turn
- | obviously leaded to an incorrect determination of the argument end
- | (it then though the first closing brace is the end). We fix this by
- | passing the pointer and not the underlying character.
- +---------------------------------------------------------------------------
- Index: rpmio/macro.c
- --- rpmio/macro.c 15 May 2003 13:42:01 -0000 1.1.1.7
- +++ rpmio/macro.c 22 Jan 2004 21:42:32 -0000 1.2
- @@ -879,7 +882,7 @@
- */
- /*@-bounds@*/
- /*@dependent@*/ static const char *
- -grabArgs(MacroBuf mb, const MacroEntry me, /*@returned@*/ const char * se, char lastc)
- +grabArgs(MacroBuf mb, const MacroEntry me, /*@returned@*/ const char * se, char *lastc)
- /*@globals rpmGlobalMacroContext @*/
- /*@modifies mb, rpmGlobalMacroContext @*/
- {
- @@ -900,7 +903,7 @@
-
- /* Copy args into buf until lastc */
- *be++ = ' ';
- - while ((c = *se++) != '\0' && c != lastc) {
- + while ((c = *se++) != '\0' && (se-1) != lastc) {
- /*@-globs@*/
- if (!isblank(c)) {
- *be++ = c;
- @@ -968,6 +971,8 @@
- /*@-mods@*/
- optind = 0; /* XXX but posix != glibc */
- /*@=mods@*/
- +#else
- + optind = 1;
- #endif
-
- opts = me->opts;
- @@ -1168,7 +1175,7 @@
- int c;
- int rc = 0;
- int negate;
- - char grab;
- + char *grab;
- int chkexist;
-
- if (++mb->depth > max_macro_depth) {
- @@ -1202,7 +1209,7 @@
- if (mb->depth > 1) /* XXX full expansion for outermost level */
- t = mb->t; /* save expansion pointer for printExpand */
- negate = 0;
- - grab = '\0';
- + grab = NULL;
- chkexist = 0;
- switch ((c = *s)) {
- default: /* %name substitution */
- @@ -1237,7 +1244,8 @@
- /* For "%name " macros ... */
- /*@-globs@*/
- if ((c = *fe) && isblank(c))
- - grab = '\n';
- + if ((grab = strchr(fe,'\n')) == NULL)
- + grab = strchr(fe, '\0');
- /*@=globs@*/
- /*@switchbreak@*/ break;
- case '(': /* %(...) shell escape */
- @@ -1284,7 +1292,7 @@
- ge = se - 1;
- /*@innerbreak@*/ break;
- case ' ':
- - grab = se[-1];
- + grab = se-1;
- /*@innerbreak@*/ break;
- default:
- /*@innerbreak@*/ break;
- @@ -1438,7 +1446,7 @@
-
- /* Setup args for "%name " macros with opts */
- if (me && me->opts != NULL) {
- - if (grab != '\0') {
- + if (grab != NULL) {
- se = grabArgs(mb, me, fe, grab);
- } else {
- addMacro(mb->mc, "**", NULL, "", mb->depth);
- +---------------------------------------------------------------------------
- | Backported RPM vendor patch:
- | "fix: packages w/o file colors segfault"
- | (cvs diff -r2.41.2.6 -r2.41.2.7 lib/rpmfi.c)
- +---------------------------------------------------------------------------
- Index: lib/rpmfi.c
- --- lib/rpmfi.c 17 Jul 2003 22:44:28 -0000 1.1.1.3
- +++ lib/rpmfi.c 22 Jan 2004 21:42:24 -0000 1.2
- @@ -866,6 +866,7 @@
- *fn = '\0';
- fnlen = stpcpy( stpcpy(fn, dirNames[dirIndexes[i]]), baseNames[i]) - fn;
-
- +if (fColors != NULL)
- dColors[dirIndexes[i]] |= fColors[i];
- /*
- * See if this file path needs relocating.
- +---------------------------------------------------------------------------
- | The "%_excludedocs" macro is intended to set the _default_ if
- | both --excludedocs and --includedocs are not specified and it is
- | evaluated already before. So, do not override it here again, because
- | it would not allow us to make "%_excludedocs 1" the default.
- +---------------------------------------------------------------------------
- Index: lib/transaction.c
- --- lib/transaction.c 15 Jul 2003 15:15:47 -0000 1.1.1.15
- +++ lib/transaction.c 22 Jan 2004 21:42:26 -0000 1.2
- @@ -702,8 +702,10 @@
- int dc;
- int i, j;
-
- +#if 0
- if (!noDocs)
- noDocs = rpmExpandNumeric("%{_excludedocs}");
- +#endif
-
- { const char *tmpPath = rpmExpand("%{_netsharedpath}", NULL);
- /*@-branchstate@*/
- +---------------------------------------------------------------------------
- | Bugfix: POSIX/SUSv3 clearly expresses that fcntl(2) returns "value
- | other than -1" on success, so check for equality to -1 instead of
- | non-equality to 0. In practice this does not harm on most platforms,
- | because they fortunately (by conincidence and common practice)
- | return 0.
- | Additionally, at least Solaris may reject (see fcntl(2) manpage) the
- | (partial) locking, because DB mmap(2)'ed the file (or vice versa).
- | The workaround is to lock the entire(!) file.
- +---------------------------------------------------------------------------
- Index: db/mutex/mut_fcntl.c
- --- db/mutex/mut_fcntl.c 18 Jan 2003 14:05:03 -0000 1.1.1.5
- +++ db/mutex/mut_fcntl.c 22 Jan 2004 21:42:18 -0000 1.2
- @@ -84,8 +84,13 @@
-
- /* Initialize the lock. */
- k_lock.l_whence = SEEK_SET;
- +#if 0
- k_lock.l_start = mutexp->off;
- k_lock.l_len = 1;
- +#else
- + k_lock.l_start = 0;
- + k_lock.l_len = 0;
- +#endif
-
- for (locked = waited = 0;;) {
- /*
- @@ -101,7 +106,7 @@
-
- /* Acquire an exclusive kernel lock. */
- k_lock.l_type = F_WRLCK;
- - if (fcntl(dbenv->lockfhp->fd, F_SETLKW, &k_lock))
- + if (fcntl(dbenv->lockfhp->fd, F_SETLKW, &k_lock) == -1)
- return (__os_get_errno());
-
- /* If the resource is still available, it's ours. */
- @@ -112,7 +117,7 @@
-
- /* Release the kernel lock. */
- k_lock.l_type = F_UNLCK;
- - if (fcntl(dbenv->lockfhp->fd, F_SETLK, &k_lock))
- + if (fcntl(dbenv->lockfhp->fd, F_SETLK, &k_lock) == -1)
- return (__os_get_errno());
-
- /*
- +---------------------------------------------------------------------------
- | The O_DIRECT feature is fully broken under at least Linux 2.2 and
- | 2.4. It is sometimes accepted by open(2) without error and later
- | causes a write(2) to fail with EINVAL -- all depending on the
- | underlying filesystem (usually works on tmpfs and fails on ext3).
- | Sometimes it also causes open(2) to fail with EINVAL. In general,
- | it does especially no "graceful degradation" and so is useless for
- | use mostly all platforms except for those where we know it works
- | (currently FreeBSD only). Interestingly, RPM works on RedHat, just
- | because RedHat's "kernel" package contains a patch which masks out
- | O_DIRECT usage... ;-)
- +---------------------------------------------------------------------------
- Index: db/os/os_open.c
- --- db/os/os_open.c 18 Jan 2003 14:05:03 -0000 1.1.1.5
- +++ db/os/os_open.c 22 Jan 2004 21:42:19 -0000 1.2
- @@ -93,7 +93,7 @@
- if (LF_ISSET(DB_OSO_TRUNC))
- oflags |= O_TRUNC;
-
- -#ifdef HAVE_O_DIRECT
- +#if defined(HAVE_O_DIRECT) && defined(__FreeBSD__)
- if (LF_ISSET(DB_OSO_DIRECT))
- oflags |= O_DIRECT;
- #endif
|