poldek: poldek/configure.in, poldek/pm/rpm/rpm_pkg_ld.c, poldek/pm...
mis
mis at pld-linux.org
Wed Jun 20 01:31:51 CEST 2007
Author: mis Date: Tue Jun 19 23:31:51 2007 GMT
Module: poldek Tag: HEAD
---- Log message:
- detect and omit pubkeys (#5809)
---- Files affected:
poldek/poldek:
configure.in (1.136 -> 1.137)
poldek/poldek/pm/rpm:
rpm_pkg_ld.c (1.12 -> 1.13) , rpmhdr.c (1.8 -> 1.9)
---- Diffs:
================================================================
Index: poldek/poldek/configure.in
diff -u poldek/poldek/configure.in:1.136 poldek/poldek/configure.in:1.137
--- poldek/poldek/configure.in:1.136 Wed Jun 20 00:37:02 2007
+++ poldek/poldek/configure.in Wed Jun 20 01:31:46 2007
@@ -185,7 +185,9 @@
#endif
], is_rpm4=yes, is_rpm4=no)
-if test "${is_rpm4}." = "yes." ; then
+if test "${is_rpm4}." = "no." ; then
+ AC_MSG_RESULT(no)
+else
AC_MSG_RESULT(yes)
AC_DEFINE([HAVE_RPM_4_0],1,[defined if rpm 4.x is installed])
AC_EGREP_CPP(RPMSENSE_SCRIPT_PRE,
@@ -207,8 +209,14 @@
else
AC_MSG_RESULT(no)
fi
-else
- AC_MSG_RESULT(no)
+
+ AC_EGREP_CPP(RPMTAG_PUBKEYS,
+ [ #include <rpm/rpmlib.h>
+ ], have_tag_pubkeys=yes, have_tag_pubkeys=no)
+
+ if test "${have_tag_pubkeys}." = "yes." ; then
+ AC_DEFINE([HAVE_RPMTAG_PUBKEYS],1,["RPMTAG_PUBKEYS exists"])
+ fi
fi
dnl Checks for libraries.
@@ -293,6 +301,10 @@
[ AC_CHECK_FUNCS(rpmGetRpmlibProvides,,
[AC_MSG_WARN(["poldek will not work fine with rpmlib\(...\) capabilities"])],
[$CONF_IN_LDFLAGS])], [$CONF_IN_LDFLAGS])
+
+dnl FIXME: it is inline function, how to detect it without AC_EGREP_CPP?
+AC_CHECK_FUNCS(headerFreeData)
+
dnl rpm 4.4.6
AC_CHECK_FUNCS(rpmdsUname)
AC_CHECK_FUNCS(rpmdsSysinfo)
================================================================
Index: poldek/poldek/pm/rpm/rpm_pkg_ld.c
diff -u poldek/poldek/pm/rpm/rpm_pkg_ld.c:1.12 poldek/poldek/pm/rpm/rpm_pkg_ld.c:1.13
--- poldek/poldek/pm/rpm/rpm_pkg_ld.c:1.12 Tue Jun 19 16:01:43 2007
+++ poldek/poldek/pm/rpm/rpm_pkg_ld.c Wed Jun 20 01:31:46 2007
@@ -441,6 +441,21 @@
return nerr ? -1 : 1;
}
+static int is_pubkey(Header h)
+{
+#if HAVE_RPMTAG_PUBKEYS
+ void *pubkeys;
+ int type;
+
+ if (headerGetEntry(h, RPMTAG_PUBKEYS, &type, &pubkeys, NULL)) {
+ pm_rpmhdr_free_entry(pubkeys, type);
+ return 1;
+ }
+#endif
+ return 0;
+}
+
+
struct pkg *pm_rpm_ldhdr(tn_alloc *na, Header h, const char *fname, unsigned fsize,
unsigned ldflags)
{
@@ -463,14 +478,14 @@
} else {
if (!headerGetEntry(h, RPMTAG_ARCH, &type, (void *)&arch, NULL)) {
- logn(LOGERR, _("%s: read architecture tag failed"), fname);
+ if (!is_pubkey(h))
+ logn(LOGERR, _("%s: read architecture tag failed"), fname);
return NULL;
}
if (type != RPM_STRING_TYPE)
arch = NULL;
}
-
if (!headerGetEntry(h, RPMTAG_OS, &type, (void *)&os, NULL)) {
if (poldek_VERBOSE > 1)
================================================================
Index: poldek/poldek/pm/rpm/rpmhdr.c
diff -u poldek/poldek/pm/rpm/rpmhdr.c:1.8 poldek/poldek/pm/rpm/rpmhdr.c:1.9
--- poldek/poldek/pm/rpm/rpmhdr.c:1.8 Thu Oct 27 00:49:40 2005
+++ poldek/poldek/pm/rpm/rpmhdr.c Wed Jun 20 01:31:46 2007
@@ -146,8 +146,13 @@
void pm_rpmhdr_free_entry(void *e, int type)
{
+#if HAVE_HEADERFREEDATA
+ if (e)
+ headerFreeData(e, type);
+#else
if (e && (type == RPM_STRING_ARRAY_TYPE || type == RPM_I18NSTRING_TYPE))
free(e);
+#endif
}
================================================================
---- CVS-web:
http://cvs.pld-linux.org/poldek/poldek/configure.in?r1=1.136&r2=1.137&f=u
http://cvs.pld-linux.org/poldek/poldek/pm/rpm/rpm_pkg_ld.c?r1=1.12&r2=1.13&f=u
http://cvs.pld-linux.org/poldek/poldek/pm/rpm/rpmhdr.c?r1=1.8&r2=1.9&f=u
More information about the pld-cvs-commit
mailing list