[rpm] - remember to add new versions of patches + the libsymlink attribute file, meh

Panu Matilainen pmatilai at fedoraproject.org
Tue Jan 18 12:29:02 UTC 2011


commit 194d109a601e59080e75a5bb16ae82f8a2875114
Author: Panu Matilainen <pmatilai at redhat.com>
Date:   Tue Jan 18 14:27:59 2011 +0200

    - remember to add new versions of patches + the libsymlink attribute file, meh

 libsymlink.attr                 |    4 ++
 rpm-4.8.90-fedora-specspo.patch |   78 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 82 insertions(+), 0 deletions(-)
---
diff --git a/libsymlink.attr b/libsymlink.attr
new file mode 100644
index 0000000..8bb6404
--- /dev/null
+++ b/libsymlink.attr
@@ -0,0 +1,4 @@
+# Make libfoo.so symlinks require the soname-provide of the target library
+%__libsymlink_requires		%{_rpmconfigdir}/elfdeps --provides --soname-only
+%__libsymlink_magic		^symbolic link to `.*lib.*\.so\..*'$
+%__libsymlink_exclude_path	^.*[[:digit:]]$
diff --git a/rpm-4.8.90-fedora-specspo.patch b/rpm-4.8.90-fedora-specspo.patch
new file mode 100644
index 0000000..6920e75
--- /dev/null
+++ b/rpm-4.8.90-fedora-specspo.patch
@@ -0,0 +1,78 @@
+diff --git a/lib/tagexts.c b/lib/tagexts.c
+index dc0e0fb..e0a5d1f 100644
+--- a/lib/tagexts.c
++++ b/lib/tagexts.c
+@@ -478,59 +478,29 @@ static const char * const _macro_i18ndomains = "%{?_i18ndomains}";
+  */
+ static int i18nTag(Header h, rpmTag tag, rpmtd td, headerGetFlags hgflags)
+ {
+-    int rc;
++    int rc = headerGet(h, tag, td, HEADERGET_ALLOC);
+ #if defined(ENABLE_NLS)
+-    char * dstring = rpmExpand(_macro_i18ndomains, NULL);
+-
+-    td->type = RPM_STRING_TYPE;
+-    td->data = NULL;
+-    td->count = 0;
+-
+-    if (dstring && *dstring) {
+-	char *domain, *de;
+-	const char * langval;
+-	char * msgkey;
+-	const char * msgid;
+-
+-	rasprintf(&msgkey, "%s(%s)", headerGetString(h, RPMTAG_NAME), 
+-		  rpmTagGetName(tag));
+-
+-	/* change to en_US for msgkey -> msgid resolution */
+-	langval = getenv(language);
+-	(void) setenv(language, "en_US", 1);
+-        ++_nl_msg_cat_cntr;
++    if (rc) {
++	char *de, *dstring = rpmExpand(_macro_i18ndomains, NULL);
++	const char *domain;
+ 
+-	msgid = NULL;
+ 	for (domain = dstring; domain != NULL; domain = de) {
++	    const char *msgid = td->data;
++	    const char *msg = NULL;
++
+ 	    de = strchr(domain, ':');
+ 	    if (de) *de++ = '\0';
+-	    msgid = dgettext(domain, msgkey);
+-	    if (msgid != msgkey) break;
+-	}
+-
+-	/* restore previous environment for msgid -> msgstr resolution */
+-	if (langval)
+-	    (void) setenv(language, langval, 1);
+-	else
+-	    unsetenv(language);
+-        ++_nl_msg_cat_cntr;
+-
+-	if (domain && msgid) {
+-	    td->data = dgettext(domain, msgid);
+-	    td->data = xstrdup(td->data); /* XXX xstrdup has side effects. */
+-	    td->count = 1;
+-	    td->flags = RPMTD_ALLOCED;
++	    msg = dgettext(domain, td->data);
++	    if (msg != msgid) {
++		free(td->data);
++		td->data = xstrdup(msg);
++		break;
++	    }
+ 	}
+-	dstring = _free(dstring);
+-	free(msgkey);
+-	if (td->data)
+-	    return 1;
++	free(dstring);
+     }
+-
+-    dstring = _free(dstring);
+ #endif
+ 
+-    rc = headerGet(h, tag, td, HEADERGET_ALLOC);
+     return rc;
+ }
+ 


More information about the scm-commits mailing list