2 ===================================================================
3 RCS file: /cvsroot/installer/poldek/pm/rpm/misc.c,v
4 retrieving revision 1.4
5 retrieving revision 1.5
7 --- pm/rpm/misc.c 12 May 2005 15:44:41 -0000 1.4
8 +++ pm/rpm/misc.c 21 Nov 2005 17:01:34 -0000 1.5
21 #include <rpm/rpmlib.h>
23 +# include <rpm/rpmds.h>
26 #include <trurl/nassert.h>
27 #include <trurl/nstr.h>
32 -tn_array *pm_rpm_rpmlib_caps(void)
33 +#if HAVE_RPMDSRPMLIB /* rpmdsRpmlib() => rpm >= 4.4.3 */
34 +static int get_rpmlib_caps(tn_array *caps)
38 + if (rpmdsRpmlib(&ds, NULL) != 0)
42 + while (rpmdsNext(ds) >= 0) {
43 + const char *name, *evr;
50 + flags = rpmdsFlags(ds);
52 + n_assert(flags & RPMSENSE_EQUAL);
53 + n_assert((flags & (RPMSENSE_LESS | RPMSENSE_GREATER)) == 0);
55 + n_strncpy(tmp, evr, 128);
56 + cr = capreq_new_evr(name, tmp, REL_EQ, 0);
58 + n_array_push(caps, cr);
61 + return n_array_size(caps);
63 +#endif /* HAVE_RPMDSRPMLIB */
65 +#if HAVE_RPMGETRPMLIBPROVIDES /* rpmGetRpmlibProvides() => rpm < 4.4.3 */
66 +static int get_rpmlib_caps_rpm_lt_4_4_3(tn_array *caps)
68 char **names = NULL, **versions = NULL, *evr;
69 int *flags = NULL, n = 0, i;
72 -#if HAVE_RPMGETRPMLIBPROVIDES
74 n = rpmGetRpmlibProvides((const char ***)&names, &flags, (const char ***)&versions);
81 caps = capreq_arr_new(0);
87 n_array_push(caps, cr);
104 +tn_array *pm_rpm_rpmlib_caps(void)
109 + caps = capreq_arr_new(0);
111 - n_array_sort(caps);
112 +#if HAVE_RPMDSRPMLIB /* rpm >= 4.4.3 */
113 + rc = get_rpmlib_caps(caps);
115 +# if HAVE_RPMGETRPMLIBPROVIDES
116 + rc = get_rpmlib_caps_rpm_lt_4_4_3(caps);
121 + n_array_sort(caps);
124 + n_array_free(caps);
131 const char *pm_rpm_get_arch(void *pm_rpm)
134 Index: pm/rpm/pm_rpm.h
135 ===================================================================
136 RCS file: /cvsroot/installer/poldek/pm/rpm/pm_rpm.h,v
137 retrieving revision 1.11
138 retrieving revision 1.12
139 diff -u -r1.11 -r1.12
140 --- pm/rpm/pm_rpm.h 24 Oct 2005 15:25:58 -0000 1.11
141 +++ pm/rpm/pm_rpm.h 21 Nov 2005 17:01:34 -0000 1.12
143 # include <rpm/rpmts.h>
146 +/* RPMTAG_COPYRIGHT disappears in 4.4.3 but don't know from
147 + when RPMTAG_LICENSE starts */
148 +#ifdef RPMTAG_COPYRIGHT
149 +# define PM_RPMTAG_LICENSE RPMTAG_COPYRIGHT
151 +# define PM_RPMTAG_LICENSE RPMTAG_LICENSE
154 #include <trurl/trurl.h>
158 ===================================================================
159 RCS file: /cvsroot/installer/poldek/pkgu.c,v
160 retrieving revision 1.30
161 retrieving revision 1.31
162 diff -u -r1.30 -r1.31
163 --- pkgu.c 18 Oct 2005 16:25:12 -0000 1.30
164 +++ pkgu.c 21 Nov 2005 17:01:34 -0000 1.31
177 pkgu->vendor = cp_tag(pkgu->_na, h, RPMTAG_VENDOR);
178 - pkgu->license = cp_tag(pkgu->_na, h, RPMTAG_COPYRIGHT);
179 + pkgu->license = cp_tag(pkgu->_na, h, PM_RPMTAG_LICENSE);
180 pkgu->url = cp_tag(pkgu->_na, h, RPMTAG_URL);
181 pkgu->distro = cp_tag(pkgu->_na, h, RPMTAG_DISTRIBUTION);
182 pkgu->buildhost = cp_tag(pkgu->_na, h, RPMTAG_BUILDHOST);
184 headerAddEntry(hdr, RPMTAG_VENDOR, RPM_STRING_TYPE, pkgu->vendor, 1);
187 - headerAddEntry(hdr, RPMTAG_COPYRIGHT, RPM_STRING_TYPE, pkgu->license, 1);
188 + headerAddEntry(hdr, PM_RPMTAG_LICENSE, RPM_STRING_TYPE, pkgu->license, 1);
191 headerAddEntry(hdr, RPMTAG_URL, RPM_STRING_TYPE, pkgu->url, 1);
193 ===================================================================
194 RCS file: /cvsroot/installer/poldek/configure.in,v
195 retrieving revision 1.121
196 retrieving revision 1.122
197 diff -u -r1.121 -r1.122
198 --- configure.in 4 Nov 2005 17:44:21 -0000 1.121
199 +++ configure.in 21 Nov 2005 17:01:34 -0000 1.122
201 LIBS="$LIBS -lbz2 -lrpmio"
204 -AC_CHECK_FUNCS(rpmGetRpmlibProvides,,
205 - [AC_MSG_WARN("[poldek will not work fine with rpmlib\(...\) capabilities"])],
206 - [$CONF_IN_LDFLAGS])
207 +AC_CHECK_FUNCS(rpmdsRpmlib,,
208 + [ AC_CHECK_FUNCS(rpmGetRpmlibProvides,,
209 + [AC_MSG_WARN(["poldek will not work fine with rpmlib\(...\) capabilities"])],
210 + [$CONF_IN_LDFLAGS])], [$CONF_IN_LDFLAGS])