1 diff -ur rpm-4.4.7.org/build/build.c rpm-4.4.7/build/build.c
2 --- rpm-4.4.7.org/build/build.c 2005-02-10 21:09:43.000000000 +0100
3 +++ rpm-4.4.7/build/build.c 2007-01-13 20:28:18.114303000 +0100
5 (rc = processSourceFiles(spec)))
8 + /* XXX Reset buildroot to its expansion to insure invariant. */
9 + { const char *buildroot = rpmExpand("%{?buildroot}", NULL);
10 + if (buildroot && *buildroot) {
11 + (void) delMacro(NULL, "buildroot");
12 + (void) addMacro(NULL, ".buildroot", NULL, buildroot, -1);
14 + buildroot = _free(buildroot);
17 if (((what & RPMBUILD_INSTALL) || (what & RPMBUILD_PACKAGEBINARY) ||
18 (what & RPMBUILD_FILECHECK)) &&
19 (rc = processBinaryFiles(spec, what & RPMBUILD_INSTALL, test)))
20 diff -ur rpm-4.4.7.org/build/files.c rpm-4.4.7/build/files.c
21 --- rpm-4.4.7.org/build/files.c 2007-01-13 20:27:16.002421000 +0100
22 +++ rpm-4.4.7/build/files.c 2007-01-13 20:28:18.118303250 +0100
24 if (pkg->fileList == NULL)
27 + (void) headerMacrosLoad(pkg->header);
29 (void) headerNVR(pkg->header, &n, &v, &r);
30 rpmMessage(RPMMESS_NORMAL, _("Processing files: %s-%s-%s\n"), n, v, r);
34 /* XXX this should be earlier for deps to be entirely sorted. */
35 providePackageNVR(pkg->header);
37 + (void) headerMacrosUnload(pkg->header);
40 /* Now we have in fileList list of files from all packages.
41 diff -ur rpm-4.4.7.org/lib/psm.c rpm-4.4.7/lib/psm.c
42 --- rpm-4.4.7.org/lib/psm.c 2007-01-13 20:27:16.102427000 +0100
43 +++ rpm-4.4.7/lib/psm.c 2007-01-13 20:28:41.251749000 +0100
48 - * Macros to be defined from per-header tag values.
49 - * @todo Should other macros be added from header when installing a package?
51 -/*@observer@*/ /*@unchecked@*/
52 -static struct tagMacro {
53 -/*@observer@*/ /*@null@*/ const char * macroname; /*!< Macro name to define. */
54 - rpmTag tag; /*!< Header tag to use for value. */
56 - { "name", RPMTAG_NAME },
57 - { "version", RPMTAG_VERSION },
58 - { "release", RPMTAG_RELEASE },
59 - { "epoch", RPMTAG_EPOCH },
64 - * Define per-header macros.
65 - * @param fi transaction element file info
69 -static int rpmInstallLoadMacros(rpmfi fi, Header h)
70 - /*@globals rpmGlobalMacroContext @*/
71 - /*@modifies rpmGlobalMacroContext @*/
73 - HGE_t hge = (HGE_t) fi->hge;
74 - struct tagMacro * tagm;
76 -/*@unused@*/ void * ptr;
77 -/*@unused@*/ const char ** argv;
84 - for (tagm = tagMacros; tagm->macroname != NULL; tagm++) {
85 - if (!hge(h, tagm->tag, &type, (void **) &body, NULL))
88 - case RPM_INT32_TYPE:
90 - sprintf(numbuf, "%d", *body.i32p);
92 - addMacro(NULL, tagm->macroname, NULL, numbuf, -1);
93 - /*@switchbreak@*/ break;
94 - case RPM_STRING_TYPE:
95 - addMacro(NULL, tagm->macroname, NULL, body.str, -1);
96 - /*@switchbreak@*/ break;
100 - case RPM_INT16_TYPE:
102 - case RPM_STRING_ARRAY_TYPE:
103 - case RPM_I18NSTRING_TYPE:
105 - /*@switchbreak@*/ break;
112 * Mark files in database shared with this package as "replaced".
113 * @param psm package state machine data
119 -/*@i@*/ (void) rpmInstallLoadMacros(fi, fi->h);
120 +/*@i@*/ (void) headerMacrosLoad(fi->h);
122 psm->fi = rpmfiLink(fi, NULL);
123 /*@-assignexpose -usereleased @*/
124 diff -ur rpm-4.4.7.org/lib/rpmlib.h rpm-4.4.7/lib/rpmlib.h
125 --- rpm-4.4.7.org/lib/rpmlib.h 2006-10-08 21:01:41.000000000 +0200
126 +++ rpm-4.4.7/lib/rpmlib.h 2007-01-13 20:28:18.118303250 +0100
129 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmgi_s * rpmgi;
132 + * Define per-header macros.
136 +int headerMacrosLoad(Header h)
137 + /*@globals rpmGlobalMacroContext @*/
138 + /*@modifies rpmGlobalMacroContext @*/;
141 + * Define per-header macros.
145 +int headerMacrosUnload(Header h)
146 + /*@globals rpmGlobalMacroContext @*/
147 + /*@modifies rpmGlobalMacroContext @*/;
150 * Return name, version, release strings from header.
152 diff -ur rpm-4.4.7.org/macros.in rpm-4.4.7/macros.in
153 --- rpm-4.4.7.org/macros.in 2007-01-13 20:27:16.078426000 +0100
154 +++ rpm-4.4.7/macros.in 2007-01-13 20:28:18.122303500 +0100
155 @@ -1348,8 +1348,8 @@
157 # Note: Used iff _use_internal_dependency_generator is non-zero. The
158 # helpers are also used by @RPMCONFIGDIR@/rpmdeps {--provides|--requires}.
159 -%__libtool_provides @RPMCONFIGDIR@/libtooldeps.sh --provides %{buildroot}
160 -%__libtool_requires @RPMCONFIGDIR@/libtooldeps.sh --requires %{buildroot}
161 +%__libtool_provides @RPMCONFIGDIR@/libtooldeps.sh --provides %{buildroot} %{name}
162 +%__libtool_requires @RPMCONFIGDIR@/libtooldeps.sh --requires %{buildroot} %{name}
164 #------------------------------------------------------------------------
165 # pkgconfig(...) configuration.
166 diff -ur rpm-4.4.7.org/rpmdb/hdrNVR.c rpm-4.4.7/rpmdb/hdrNVR.c
167 --- rpm-4.4.7.org/rpmdb/hdrNVR.c 2003-01-17 18:43:45.000000000 +0100
168 +++ rpm-4.4.7/rpmdb/hdrNVR.c 2007-01-13 20:28:18.122303500 +0100
173 -#include "lib/rpmlib.h"
175 +#include <rpmmacro.h>
179 + * Macros to be defined from per-header tag values.
180 + * @todo Should other macros be added from header when installing a package?
182 +/*@observer@*/ /*@unchecked@*/
183 +static struct tagMacro {
184 +/*@observer@*/ /*@null@*/
185 + const char *macroname; /*!< Macro name to define. */
186 + rpmTag tag; /*!< Header tag to use for value. */
188 + { "name", RPMTAG_NAME },
189 + { "version", RPMTAG_VERSION },
190 + { "release", RPMTAG_RELEASE },
191 + { "epoch", RPMTAG_EPOCH },
192 + { "arch", RPMTAG_ARCH },
193 + { "os", RPMTAG_OS },
197 +int headerMacrosLoad(Header h)
199 + struct tagMacro * tagm;
203 + const char ** argv;
211 + for (tagm = tagMacros; tagm->macroname != NULL; tagm++) {
212 + xx = headerGetEntryMinMemory(h, tagm->tag, &type, (hPTR_t *) &body.ptr, NULL);
216 + case RPM_INT32_TYPE:
218 + sprintf(numbuf, "%d", *body.i32p);
220 + addMacro(NULL, tagm->macroname, NULL, numbuf, -1);
221 + /*@switchbreak@*/ break;
222 + case RPM_STRING_TYPE:
223 + addMacro(NULL, tagm->macroname, NULL, body.str, -1);
224 + /*@switchbreak@*/ break;
225 + case RPM_STRING_ARRAY_TYPE:
226 + case RPM_I18NSTRING_TYPE:
228 + body.ptr = headerFreeData(body.ptr, type);
230 + case RPM_NULL_TYPE:
231 + case RPM_CHAR_TYPE:
232 + case RPM_INT8_TYPE:
233 + case RPM_INT16_TYPE:
235 + /*@switchbreak@*/ break;
240 +int headerMacrosUnload(Header h)
242 + struct tagMacro * tagm;
246 + const char ** argv;
253 + for (tagm = tagMacros; tagm->macroname != NULL; tagm++) {
254 + xx = headerGetEntryMinMemory(h, tagm->tag, &type, (hPTR_t *) &body.ptr, NULL);
258 + case RPM_INT32_TYPE:
259 + delMacro(NULL, tagm->macroname);
260 + /*@switchbreak@*/ break;
261 + case RPM_STRING_TYPE:
262 + delMacro(NULL, tagm->macroname);
263 + /*@switchbreak@*/ break;
264 + case RPM_STRING_ARRAY_TYPE:
265 + case RPM_I18NSTRING_TYPE:
267 + body.ptr = headerFreeData(body.ptr, type);
269 + case RPM_NULL_TYPE:
270 + case RPM_CHAR_TYPE:
271 + case RPM_INT8_TYPE:
272 + case RPM_INT16_TYPE:
274 + /*@switchbreak@*/ break;
280 int headerNVR(Header h, const char **np, const char **vp, const char **rp)
283 diff -ur rpm-4.4.7.org/rpmdb/librpmdb.vers rpm-4.4.7/rpmdb/librpmdb.vers
284 --- rpm-4.4.7.org/rpmdb/librpmdb.vers 2006-07-08 18:53:54.000000000 +0200
285 +++ rpm-4.4.7/rpmdb/librpmdb.vers 2007-01-13 20:28:18.122303500 +0100
291 + headerMacrosUnload;