aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPer Øyvind Karlsen <peroyvind@mandriva.org>2011-02-01 21:33:30 +0000
committerPer Øyvind Karlsen <peroyvind@mandriva.org>2011-02-01 21:33:30 +0000
commit18f3fae42ec6c7feaafc65bf222a2b020760646b (patch)
treeb7fe3b8a453c2bbf496d179d3fb0f9b989976284
parent3b4048d6bfdf1922f7132e3ff4539ebbd4f7c3a2 (diff)
downloadperl-URPM-18f3fae42ec6c7feaafc65bf222a2b020760646b.tar
perl-URPM-18f3fae42ec6c7feaafc65bf222a2b020760646b.tar.gz
perl-URPM-18f3fae42ec6c7feaafc65bf222a2b020760646b.tar.bz2
perl-URPM-18f3fae42ec6c7feaafc65bf222a2b020760646b.tar.xz
perl-URPM-18f3fae42ec6c7feaafc65bf222a2b020760646b.zip
strip distepoch from %PROVIDEVERSION & %PROVIDEREQUIRES of rpm headers
-rw-r--r--URPM.xs18
1 files changed, 18 insertions, 0 deletions
diff --git a/URPM.xs b/URPM.xs
index 588b675..7d6e7c6 100644
--- a/URPM.xs
+++ b/URPM.xs
@@ -225,6 +225,22 @@ get_int(Header header, int32_t tag) {
return ep ? *ep : 0;
}
+static void
+strip_distepoch(Header header, int32_t tag) {
+ struct rpmtd_s val;
+
+ headerGet(header, tag, &val, HEADERGET_DEFAULT);
+ char **list = val.data;
+ for (val.ix = 0; val.ix < (int)val.count; val.ix++) {
+ char *tmp = strchr(list[val.ix], '-');
+ if(tmp) {
+ tmp = strchr(tmp, ':');
+ if(tmp) {
+ memset(tmp, 0, strlen(tmp));
+ }
+ }
+ }
+}
static int
sigsize_to_filesize(int sigsize) {
return sigsize + 440; /* 440 is the rpm header size (?) empirical, but works */
@@ -3129,6 +3145,8 @@ Trans_add(trans, pkg, ...)
}
}
}
+ strip_distepoch(pkg->h, RPMTAG_PROVIDEVERSION);
+ strip_distepoch(pkg->h, RPMTAG_REQUIREVERSION);
RETVAL = rpmtsAddInstallElement(trans->ts, pkg->h, (fnpyKey)(1+(long)(pkg->flag & FLAG_ID)), update, relocations) == 0;
/* free allocated memory, check rpm is copying it just above, at least in 4.0.4 */
#ifndef RPM_ORG