SOURCES: rpm-mcontext.patch (NEW) - set some macros on per subpack...

arekm arekm at pld-linux.org
Sat Jan 13 20:44:27 CET 2007


Author: arekm                        Date: Sat Jan 13 19:44:27 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- set some macros on per subpackage basis

---- Files affected:
SOURCES:
   rpm-mcontext.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/rpm-mcontext.patch
diff -u /dev/null SOURCES/rpm-mcontext.patch:1.1
--- /dev/null	Sat Jan 13 20:44:27 2007
+++ SOURCES/rpm-mcontext.patch	Sat Jan 13 20:44:22 2007
@@ -0,0 +1,294 @@
+diff -ur rpm-4.4.7.org/build/build.c rpm-4.4.7/build/build.c
+--- rpm-4.4.7.org/build/build.c	2005-02-10 21:09:43.000000000 +0100
++++ rpm-4.4.7/build/build.c	2007-01-13 20:28:18.114303000 +0100
+@@ -330,6 +330,15 @@
+ 	    (rc = processSourceFiles(spec)))
+ 		goto exit;
+ 
++	/* XXX Reset buildroot to its expansion to insure invariant. */
++	{   const char *buildroot = rpmExpand("%{?buildroot}", NULL);
++	    if (buildroot && *buildroot) {
++		(void) delMacro(NULL, "buildroot");
++		(void) addMacro(NULL, ".buildroot", NULL, buildroot, -1);
++	    }
++	    buildroot = _free(buildroot);
++	}
++
+ 	if (((what & RPMBUILD_INSTALL) || (what & RPMBUILD_PACKAGEBINARY) ||
+ 	    (what & RPMBUILD_FILECHECK)) &&
+ 	    (rc = processBinaryFiles(spec, what & RPMBUILD_INSTALL, test)))
+diff -ur rpm-4.4.7.org/build/files.c rpm-4.4.7/build/files.c
+--- rpm-4.4.7.org/build/files.c	2007-01-13 20:27:16.002421000 +0100
++++ rpm-4.4.7/build/files.c	2007-01-13 20:28:18.118303250 +0100
+@@ -2640,6 +2640,8 @@
+ 	if (pkg->fileList == NULL)
+ 	    continue;
+ 
++	(void) headerMacrosLoad(pkg->header);
++
+ 	(void) headerNVR(pkg->header, &n, &v, &r);
+ 	rpmMessage(RPMMESS_NORMAL, _("Processing files: %s-%s-%s\n"), n, v, r);
+ 		   
+@@ -2654,6 +2656,8 @@
+ 
+ 	/* XXX this should be earlier for deps to be entirely sorted. */
+ 	providePackageNVR(pkg->header);
++
++	(void) headerMacrosUnload(pkg->header);
+     }
+ 
+     /* Now we have in fileList list of files from all packages.
+diff -ur rpm-4.4.7.org/lib/psm.c rpm-4.4.7/lib/psm.c
+--- rpm-4.4.7.org/lib/psm.c	2007-01-13 20:27:16.102427000 +0100
++++ rpm-4.4.7/lib/psm.c	2007-01-13 20:28:41.251749000 +0100
+@@ -82,70 +82,6 @@
+ }
+ 
+ /**
+- * Macros to be defined from per-header tag values.
+- * @todo Should other macros be added from header when installing a package?
+- */
+-/*@observer@*/ /*@unchecked@*/
+-static struct tagMacro {
+-/*@observer@*/ /*@null@*/ const char *	macroname; /*!< Macro name to define. */
+-    rpmTag	tag;		/*!< Header tag to use for value. */
+-} tagMacros[] = {
+-    { "name",		RPMTAG_NAME },
+-    { "version",	RPMTAG_VERSION },
+-    { "release",	RPMTAG_RELEASE },
+-    { "epoch",		RPMTAG_EPOCH },
+-    { NULL, 0 }
+-};
+-
+-/**
+- * Define per-header macros.
+- * @param fi		transaction element file info
+- * @param h		header
+- * @return		0 always
+- */
+-static int rpmInstallLoadMacros(rpmfi fi, Header h)
+-	/*@globals rpmGlobalMacroContext @*/
+-	/*@modifies rpmGlobalMacroContext @*/
+-{
+-    HGE_t hge = (HGE_t) fi->hge;
+-    struct tagMacro * tagm;
+-    union {
+-/*@unused@*/ void * ptr;
+-/*@unused@*/ const char ** argv;
+-	const char * str;
+-	int_32 * i32p;
+-    } body;
+-    char numbuf[32];
+-    rpmTagType type;
+-
+-    for (tagm = tagMacros; tagm->macroname != NULL; tagm++) {
+-	if (!hge(h, tagm->tag, &type, (void **) &body, NULL))
+-	    continue;
+-	switch (type) {
+-	case RPM_INT32_TYPE:
+-/*@-boundsread@*/
+-	    sprintf(numbuf, "%d", *body.i32p);
+-/*@=boundsread@*/
+-	    addMacro(NULL, tagm->macroname, NULL, numbuf, -1);
+-	    /*@switchbreak@*/ break;
+-	case RPM_STRING_TYPE:
+-	    addMacro(NULL, tagm->macroname, NULL, body.str, -1);
+-	    /*@switchbreak@*/ break;
+-	case RPM_NULL_TYPE:
+-	case RPM_CHAR_TYPE:
+-	case RPM_INT8_TYPE:
+-	case RPM_INT16_TYPE:
+-	case RPM_BIN_TYPE:
+-	case RPM_STRING_ARRAY_TYPE:
+-	case RPM_I18NSTRING_TYPE:
+-	default:
+-	    /*@switchbreak@*/ break;
+-	}
+-    }
+-    return 0;
+-}
+-
+-/**
+  * Mark files in database shared with this package as "replaced".
+  * @param psm		package state machine data
+  * @return		0 always
+@@ -294,7 +230,7 @@
+     hge = fi->hge;
+     hfd = fi->hfd;
+ 
+-/*@i@*/ (void) rpmInstallLoadMacros(fi, fi->h);
++/*@i@*/ (void) headerMacrosLoad(fi->h);
+ 
+     psm->fi = rpmfiLink(fi, NULL);
+     /*@-assignexpose -usereleased @*/
+diff -ur rpm-4.4.7.org/lib/rpmlib.h rpm-4.4.7/lib/rpmlib.h
+--- rpm-4.4.7.org/lib/rpmlib.h	2006-10-08 21:01:41.000000000 +0200
++++ rpm-4.4.7/lib/rpmlib.h	2007-01-13 20:28:18.118303250 +0100
+@@ -123,6 +123,24 @@
+  */
+ typedef /*@abstract@*/ /*@refcounted@*/ struct rpmgi_s * rpmgi;
+ 
++/**
++ * Define per-header macros.
++ * @param h		header
++ * @return		0 always
++ */
++int headerMacrosLoad(Header h)
++	/*@globals rpmGlobalMacroContext @*/
++	/*@modifies rpmGlobalMacroContext @*/;
++
++/**
++ * Define per-header macros.
++ * @param h		header
++ * @return		0 always
++ */
++int headerMacrosUnload(Header h)
++	/*@globals rpmGlobalMacroContext @*/
++	/*@modifies rpmGlobalMacroContext @*/;
++
+ /** \ingroup header
+  * Return name, version, release strings from header.
+  * @param h		header
+diff -ur rpm-4.4.7.org/macros.in rpm-4.4.7/macros.in
+--- rpm-4.4.7.org/macros.in	2007-01-13 20:27:16.078426000 +0100
++++ rpm-4.4.7/macros.in	2007-01-13 20:28:18.122303500 +0100
+@@ -1348,8 +1348,8 @@
+ #
+ # Note: Used iff _use_internal_dependency_generator is non-zero. The
+ # helpers are also used by @RPMCONFIGDIR@/rpmdeps {--provides|--requires}.
+-%__libtool_provides	@RPMCONFIGDIR@/libtooldeps.sh --provides %{buildroot}
+-%__libtool_requires	@RPMCONFIGDIR@/libtooldeps.sh --requires %{buildroot}
++%__libtool_provides	@RPMCONFIGDIR@/libtooldeps.sh --provides %{buildroot} %{name}
++%__libtool_requires	@RPMCONFIGDIR@/libtooldeps.sh --requires %{buildroot} %{name}
+ 
+ #------------------------------------------------------------------------
+ # pkgconfig(...) configuration.
+diff -ur rpm-4.4.7.org/rpmdb/hdrNVR.c rpm-4.4.7/rpmdb/hdrNVR.c
+--- rpm-4.4.7.org/rpmdb/hdrNVR.c	2003-01-17 18:43:45.000000000 +0100
++++ rpm-4.4.7/rpmdb/hdrNVR.c	2007-01-13 20:28:18.122303500 +0100
+@@ -3,9 +3,112 @@
+  */
+ 
+ #include "system.h"
+-#include "lib/rpmlib.h"
++#include <rpmlib.h>
++#include <rpmmacro.h>
+ #include "debug.h"
+ 
++/**
++ * Macros to be defined from per-header tag values.
++ * @todo Should other macros be added from header when installing a package?
++ */
++/*@observer@*/ /*@unchecked@*/
++static struct tagMacro {
++/*@observer@*/ /*@null@*/
++    const char *macroname;	/*!< Macro name to define. */
++    rpmTag	tag;		/*!< Header tag to use for value. */
++} tagMacros[] = {
++    { "name",		RPMTAG_NAME },
++    { "version",	RPMTAG_VERSION },
++    { "release",	RPMTAG_RELEASE },
++    { "epoch",		RPMTAG_EPOCH },
++    { "arch",		RPMTAG_ARCH },
++    { "os",		RPMTAG_OS },
++    { NULL, 0 }
++};
++
++int headerMacrosLoad(Header h)
++{
++    struct tagMacro * tagm;
++    union {
++	const void * ptr;
++/*@unused@*/
++	const char ** argv;
++	const char * str;
++	int_32 * i32p;
++    } body;
++    char numbuf[32];
++    int_32 type;
++    int xx;
++
++    for (tagm = tagMacros; tagm->macroname != NULL; tagm++) {
++	xx = headerGetEntryMinMemory(h, tagm->tag, &type, (hPTR_t *) &body.ptr, NULL);
++	if (!xx)
++	    continue;
++	switch (type) {
++	case RPM_INT32_TYPE:
++/*@-boundsread@*/
++	    sprintf(numbuf, "%d", *body.i32p);
++/*@=boundsread@*/
++	    addMacro(NULL, tagm->macroname, NULL, numbuf, -1);
++	    /*@switchbreak@*/ break;
++	case RPM_STRING_TYPE:
++	    addMacro(NULL, tagm->macroname, NULL, body.str, -1);
++	    /*@switchbreak@*/ break;
++	case RPM_STRING_ARRAY_TYPE:
++	case RPM_I18NSTRING_TYPE:
++	case RPM_BIN_TYPE:
++	    body.ptr = headerFreeData(body.ptr, type);
++	    /*@fallthrough@*/
++	case RPM_NULL_TYPE:
++	case RPM_CHAR_TYPE:
++	case RPM_INT8_TYPE:
++	case RPM_INT16_TYPE:
++	default:
++	    /*@switchbreak@*/ break;
++	}
++    }
++    return 0;
++}
++int headerMacrosUnload(Header h)
++{
++    struct tagMacro * tagm;
++    union {
++	const void * ptr;
++/*@unused@*/
++	const char ** argv;
++	const char * str;
++	int_32 * i32p;
++    } body;
++    int_32 type;
++    int xx;
++
++    for (tagm = tagMacros; tagm->macroname != NULL; tagm++) {
++	xx = headerGetEntryMinMemory(h, tagm->tag, &type, (hPTR_t *) &body.ptr, NULL);
++	if (!xx)
++	    continue;
++	switch (type) {
++	case RPM_INT32_TYPE:
++	    delMacro(NULL, tagm->macroname);
++	    /*@switchbreak@*/ break;
++	case RPM_STRING_TYPE:
++	    delMacro(NULL, tagm->macroname);
++	    /*@switchbreak@*/ break;
++	case RPM_STRING_ARRAY_TYPE:
++	case RPM_I18NSTRING_TYPE:
++	case RPM_BIN_TYPE:
++	    body.ptr = headerFreeData(body.ptr, type);
++	    /*@fallthrough@*/
++	case RPM_NULL_TYPE:
++	case RPM_CHAR_TYPE:
++	case RPM_INT8_TYPE:
++	case RPM_INT16_TYPE:
++	default:
++	    /*@switchbreak@*/ break;
++	}
++    }
++    return 0;
++}
++
+ int headerNVR(Header h, const char **np, const char **vp, const char **rp)
+ {
+     int type;
+diff -ur rpm-4.4.7.org/rpmdb/librpmdb.vers rpm-4.4.7/rpmdb/librpmdb.vers
+--- rpm-4.4.7.org/rpmdb/librpmdb.vers	2006-07-08 18:53:54.000000000 +0200
++++ rpm-4.4.7/rpmdb/librpmdb.vers	2007-01-13 20:28:18.122303500 +0100
+@@ -28,6 +28,8 @@
+     headerDump;
+     headerGetLangs;
+     headerGetRawEntry;
++    headerMacrosLoad;
++    headerMacrosUnload;
+     headerNEVRA;
+     headerNVR;
+     htAddEntry;
================================================================


More information about the pld-cvs-commit mailing list