]> git.pld-linux.org Git - packages/PackageKit.git/blame - PackageKit-hawkey-rpm5.patch
noarch apidocs
[packages/PackageKit.git] / PackageKit-hawkey-rpm5.patch
CommitLineData
d113818a
JB
1--- PackageKit-0.8.15/backends/hawkey/hif-keyring.c.orig 2013-12-05 14:36:16.000000000 +0100
2+++ PackageKit-0.8.15/backends/hawkey/hif-keyring.c 2014-01-19 17:21:44.407060059 +0100
3@@ -27,8 +27,12 @@
4
5 #include <stdlib.h>
6 #include <glib.h>
7-#include <rpm/rpmlib.h>
8+#include "rpmorg-compat.h"
9+#include <rpm/rpmcli.h>
10+#include <rpm/rpmio.h>
11+#include <rpm/rpmps.h>
12 #include <rpm/rpmts.h>
13+#include <rpm/rpmpgp.h>
14
15 #include "hif-keyring.h"
16 #include "hif-utils.h"
17@@ -37,17 +41,14 @@
18 * hif_keyring_add_public_key:
19 **/
20 gboolean
21-hif_keyring_add_public_key (rpmKeyring keyring,
22+hif_keyring_add_public_key (const rpmts ts,
23 const gchar *filename,
24 GError **error)
25 {
26 gboolean ret = TRUE;
27- gchar *data = NULL;
28 gint rc;
29 gsize len;
30 pgpArmor armor;
31- pgpDig dig = NULL;
32- rpmPubkey pubkey = NULL;
33 uint8_t *pkt = NULL;
34
35 /* ignore symlinks and directories */
36@@ -56,13 +57,8 @@ hif_keyring_add_public_key (rpmKeyring k
37 if (g_file_test (filename, G_FILE_TEST_IS_SYMLINK))
38 goto out;
39
40- /* get data */
41- ret = g_file_get_contents (filename, &data, &len, error);
42- if (!ret)
43- goto out;
44-
45 /* rip off the ASCII armor and parse it */
46- armor = pgpParsePkts (data, &pkt, &len);
47+ armor = pgpReadPkts (filename, &pkt, &len);
48 if (armor < 0) {
49 ret = FALSE;
50 g_set_error (error,
51@@ -85,7 +81,7 @@ hif_keyring_add_public_key (rpmKeyring k
52 }
53
54 /* test each one */
55- pubkey = rpmPubkeyNew (pkt, len);
56+/* pubkey = rpmPubkeyNew (pkt, len);
57 if (pubkey == NULL) {
58 ret = FALSE;
59 g_set_error (error,
60@@ -94,19 +90,19 @@ hif_keyring_add_public_key (rpmKeyring k
61 "failed to parse public key for %s",
62 filename);
63 goto out;
64- }
65+ } */
66
67 /* does the key exist in the keyring */
68- dig = rpmPubkeyDig (pubkey);
69+/* dig = rpmPubkeyDig (pubkey);
70 rc = rpmKeyringLookup (keyring, dig);
71 if (rc == RPMRC_OK) {
72 ret = TRUE;
73 g_debug ("%s is already present", filename);
74 goto out;
75- }
76+ } */
77
78 /* add to rpmdb automatically, without a prompt */
79- rc = rpmKeyringAddKey (keyring, pubkey);
80+ rc = rpmcliImportPubkey (ts, pkt, len);
81 if (rc == 1) {
82 ret = TRUE;
83 g_debug ("%s is already added", filename);
84@@ -128,11 +124,6 @@ hif_keyring_add_public_key (rpmKeyring k
85 out:
86 if (pkt != NULL)
87 free (pkt); /* yes, free() */
88- if (pubkey != NULL)
89- rpmPubkeyFree (pubkey);
90- if (dig != NULL)
91- pgpFreeDig (dig);
92- g_free (data);
93 return ret;
94 }
95
96@@ -140,7 +131,7 @@ out:
97 * hif_keyring_add_public_keys:
98 **/
99 gboolean
100-hif_keyring_add_public_keys (rpmKeyring keyring, GError **error)
101+hif_keyring_add_public_keys (rpmts ts, GError **error)
102 {
103 const gchar *filename;
104 const gchar *gpg_dir = "/etc/pki/rpm-gpg";
105@@ -159,7 +150,7 @@ hif_keyring_add_public_keys (rpmKeyring
106 if (filename == NULL)
107 break;
108 path_tmp = g_build_filename (gpg_dir, filename, NULL);
109- ret = hif_keyring_add_public_key (keyring, path_tmp, error);
110+ ret = hif_keyring_add_public_key (ts, path_tmp, error);
111 g_free (path_tmp);
112 } while (ret);
113 out:
114@@ -172,8 +163,7 @@ out:
115 * hif_keyring_check_untrusted_file:
116 */
117 gboolean
118-hif_keyring_check_untrusted_file (rpmKeyring keyring,
119- const gchar *filename,
120+hif_keyring_check_untrusted_file (const gchar *filename,
121 GError **error)
122 {
123 FD_t fd = NULL;
124@@ -216,10 +206,10 @@ hif_keyring_check_untrusted_file (rpmKey
125 }
126
127 /* convert and upscale */
128- headerConvert (hdr, HEADERCONV_RETROFIT_V3);
129+ /* headerConvert (hdr, HEADERCONV_RETROFIT_V3); */
130
131 /* get RSA key */
132- td = rpmtdNew ();
133+ td = malloc (sizeof (*td) );
134 rc = headerGet (hdr,
135 RPMTAG_RSAHEADER,
136 td,
137@@ -243,7 +233,7 @@ hif_keyring_check_untrusted_file (rpmKey
138 }
139
140 /* make it into a digest */
141- dig = pgpNewDig ();
142+ dig = rpmtsDig (ts);
143 rc = pgpPrtPkts (td->data, td->count, dig, 0);
144 if (rc != 0) {
145 g_set_error (error,
146@@ -255,7 +245,7 @@ hif_keyring_check_untrusted_file (rpmKey
147 }
148
149 /* does the key exist in the keyring */
150- rc = rpmKeyringLookup (keyring, dig);
151+ rc = rpmtsFindPubkey (ts, dig);
152 if (rc != RPMRC_OK) {
153 g_set_error_literal (error,
154 HIF_ERROR,
155@@ -269,18 +259,18 @@ hif_keyring_check_untrusted_file (rpmKey
156 ret = TRUE;
157 out:
158 if (dig != NULL)
159- pgpFreeDig (dig);
160+ dig = pgpDigFree (dig);
161 if (td != NULL) {
162 rpmtdFreeData (td);
163- rpmtdFree (td);
164+ free (td);
165 }
166 if (ts != NULL)
167- rpmtsFree (ts);
168+ ts = rpmtsFree (ts);
169 if (hdr != NULL)
170- headerFree (hdr);
171+ hdr = headerFree (hdr);
172 if (fd != NULL)
173 Fclose (fd);
174 if (header != NULL)
175- headerFree (header);
176+ header = headerFree (header);
177 return ret;
178 }
179--- PackageKit-0.8.15/backends/hawkey/hif-keyring.h.orig 2013-12-05 14:36:16.000000000 +0100
180+++ PackageKit-0.8.15/backends/hawkey/hif-keyring.h 2014-01-19 16:52:38.130466677 +0100
181@@ -24,14 +24,14 @@
182
183 #include <glib.h>
184
185-#include <rpm/rpmkeyring.h>
186+#include <rpm/rpmts.h>
187
188-gboolean hif_keyring_add_public_key (rpmKeyring keyring,
189+gboolean hif_keyring_add_public_key (const rpmts ts,
190 const gchar *filename,
191 GError **error);
192-gboolean hif_keyring_add_public_keys (rpmKeyring keyring,
193+gboolean hif_keyring_add_public_keys (rpmts ts,
194 GError **error);
195-gboolean hif_keyring_check_untrusted_file (rpmKeyring keyring,
196+gboolean hif_keyring_check_untrusted_file (
197 const gchar *filename,
198 GError **error);
199
200--- PackageKit-0.8.15/backends/hawkey/hif-rpmts.c.orig 2013-12-12 16:08:37.000000000 +0100
201+++ PackageKit-0.8.15/backends/hawkey/hif-rpmts.c 2014-01-19 17:35:21.507025769 +0100
202@@ -26,9 +26,11 @@
203 #endif
204
205 #include <glib.h>
206-#include <rpm/rpmlib.h>
207+#include <rpm/rpm46compat.h>
208+#include <rpm/pkgio.h>
209 #include <rpm/rpmlog.h>
210 #include <rpm/rpmdb.h>
211+#include <rpm/rpmio.h>
212
213 #include "hif-rpmts.h"
214 #include "hif-utils.h"
215@@ -212,10 +214,17 @@ hif_rpmts_get_problem_str (rpmProblem pr
216 diskspace,
217 generic_str);
218 break;
219- case RPMPROB_OBSOLETES:
220- str = g_strdup_printf ("package %s is obsoleted by %s",
221- pkg_nevr,
222- pkg_nevr_alt);
223+ case RPMPROB_RDONLY:
224+ str = g_strdup_printf ("tried to install package on read-only filesystem");
225+ break;
226+ case RPMPROB_BADPRETRANS:
227+ str = g_strdup_printf ("bad %%pretrans?"); // unimplemented acc. to rpmps.h
228+ break;
229+ case RPMPROB_BADPLATFORM:
230+ str = g_strdup_printf ("package %s is for a different platform", pkg_nevr);
231+ break;
232+ case RPMPROB_NOREPACKAGE:
233+ str = g_strdup_printf ("re-packaged package %s is missing", pkg_nevr);
234 break;
235 }
236 return str;
237@@ -273,7 +282,7 @@ hif_rpmts_look_for_problems (rpmts ts, G
238 out:
239 if (string != NULL)
240 g_string_free (string, TRUE);
241- rpmpsFree (probs);
242+ probs = rpmpsFree (probs);
243 return ret;
244 }
245
246@@ -349,7 +358,7 @@ hif_rpmts_find_package (rpmts ts, HyPack
247 }
248
249 /* success */
250- headerLink (hdr);
251+ hdr = headerLink (hdr);
252 out:
253 rpmlogSetCallback (NULL, NULL);
254 if (rpm_error != NULL)
255@@ -388,6 +397,6 @@ hif_rpmts_add_remove_pkg (rpmts ts, HyPa
256 }
257 out:
258 if (hdr != NULL)
259- headerFree (hdr);
260+ hdr = headerFree (hdr);
261 return ret;
262 }
263--- PackageKit-0.8.15/backends/hawkey/hif-state.c.orig 2013-12-12 16:07:44.000000000 +0100
264+++ PackageKit-0.8.15/backends/hawkey/hif-state.c 2014-01-19 17:36:10.177023726 +0100
265@@ -28,7 +28,6 @@
266 #include <glib.h>
267 #include <glib-unix.h>
268 #include <signal.h>
269-#include <rpm/rpmsq.h>
270
271 #include "hif-utils.h"
272 #include "hif-state.h"
66e86606
JB
273--- PackageKit-0.8.17/backends/hawkey/pk-backend-hawkey.c.orig 2014-03-21 12:37:15.000000000 +0100
274+++ PackageKit-0.8.17/backends/hawkey/pk-backend-hawkey.c 2014-03-27 20:41:39.122471856 +0100
d113818a
JB
275@@ -39,12 +39,14 @@
276 #include <hawkey/version.h>
277 #include <hawkey/util.h>
278 #include <librepo/librepo.h>
279-#include <rpm/rpmlib.h>
280+#include "rpmorg-compat.h"
281 #include <rpm/rpmdb.h>
282+#include <rpm/rpmio.h>
283 #include <rpm/rpmlog.h>
284+#include <rpm/rpmmacro.h>
285 #include <rpm/rpmps.h>
286+#include <rpm/rpmrc.h>
287 #include <rpm/rpmts.h>
288-#include <rpm/rpmkeyring.h>
289
290 #include "hif-db.h"
291 #include "hif-goal.h"
66e86606 292@@ -79,7 +81,6 @@ typedef struct {
d113818a
JB
293 HifDb *db;
294 HifState *state;
295 rpmts ts;
296- rpmKeyring keyring;
297 GPtrArray *packages_to_download;
298 PkBitfield transaction_flags;
299 HyGoal goal;
66e86606
JB
300@@ -289,29 +290,32 @@ pk_backend_initialize (PkBackend *backen
301 G_CALLBACK (pk_backend_yum_repos_changed_cb), backend);
d113818a
JB
302
303 /* get info from RPM */
304- rpmGetOsInfo (&value, NULL);
305+ value = rpmExpand ("%{_target_os}", NULL);
306 g_key_file_set_string (priv->config,
307 HIF_CONFIG_GROUP_NAME,
66e86606 308 "OsInfo", value);
d113818a
JB
309- rpmGetArchInfo (&value, NULL);
310+ value = rpmExpand ("%{_target_cpu}", NULL);
311 g_key_file_set_string (priv->config,
312 HIF_CONFIG_GROUP_NAME,
66e86606 313 "ArchInfo", value);
d113818a
JB
314- rpmGetArchInfo (&value, NULL);
315 priv->native_arches = g_new0 (gchar *, 3);
316 priv->native_arches[0] = g_strdup (value);
317 priv->native_arches[1] = g_strdup ("noarch");
318- if (g_strcmp0 (value, "i486") == 0 ||
319- g_strcmp0 (value, "i586") == 0 ||
320- g_strcmp0 (value, "i686") == 0) {
321+ if (strcmp (value, "i486") == 0 ||
322+ strcmp (value, "i586") == 0 ||
323+ strcmp (value, "i686") == 0 ||
324+ strcmp (value, "athlon") == 0 ||
325+ strcmp (value, "pentium2") == 0 ||
326+ strcmp (value, "pentium3") == 0 ||
327+ strcmp (value, "pentium4") == 0) {
328 value = "i386";
329- } else if (g_strcmp0 (value, "armv7l") == 0 ||
330- g_strcmp0 (value, "armv6l") == 0 ||
331- g_strcmp0 (value, "armv5tejl") == 0 ||
332- g_strcmp0 (value, "armv5tel") == 0) {
333+ } else if (strcmp (value, "armv7l") == 0 ||
334+ strcmp (value, "armv6l") == 0 ||
335+ strcmp (value, "armv5tejl") == 0 ||
336+ strcmp (value, "armv5tel") == 0) {
337 value = "arm";
338- } else if (g_strcmp0 (value, "armv7hnl") == 0 ||
339- g_strcmp0 (value, "armv7hl") == 0) {
340+ } else if (strcmp (value, "armv7hnl") == 0 ||
341+ strcmp (value, "armv7hl") == 0) {
342 value = "armhfp";
343 }
344 g_key_file_set_string (priv->config,
66e86606 345@@ -458,7 +462,6 @@ pk_backend_start_job (PkBackend *backend
d113818a
JB
346
347 /* setup RPM */
348 job_data->ts = rpmtsCreate ();
349- job_data->keyring = rpmtsGetKeyring (job_data->ts, 1);
350
351 /* HifState */
352 job_data->packages_to_download =
66e86606 353@@ -530,8 +533,7 @@ pk_backend_stop_job (PkBackend *backend,
d113818a
JB
354 g_ptr_array_unref (job_data->packages_to_download);
355 if (job_data->goal != NULL)
356 hy_goal_free (job_data->goal);
357- rpmtsFree (job_data->ts);
358- rpmKeyringFree (job_data->keyring);
359+ job_data->ts = rpmtsFree (job_data->ts);
360 g_object_unref (job_data->db);
361 g_free (job_data);
362 pk_backend_job_set_user_data (job, NULL);
66e86606 363@@ -1989,7 +1991,7 @@ out:
d113818a
JB
364 * pk_backend_transaction_check_untrusted:
365 */
366 static gboolean
367-pk_backend_transaction_check_untrusted (rpmKeyring keyring,
368+pk_backend_transaction_check_untrusted (
369 GPtrArray *sources,
370 HyGoal goal,
371 GError **error)
66e86606 372@@ -2035,7 +2037,7 @@ pk_backend_transaction_check_untrusted (
d113818a
JB
373 }
374
375 /* check file */
376- ret = hif_keyring_check_untrusted_file (keyring,
377+ ret = hif_keyring_check_untrusted_file (
378 filename,
379 error);
380 if (!ret)
66e86606 381@@ -2123,15 +2125,6 @@ hif_commit_rpmcb_type_to_string (const r
d113818a
JB
382 case RPMCALLBACK_SCRIPT_ERROR:
383 type = "script-error";
384 break;
385- case RPMCALLBACK_SCRIPT_START:
386- type = "script-start";
387- break;
388- case RPMCALLBACK_SCRIPT_STOP:
389- type = "script-stop";
390- break;
391- case RPMCALLBACK_INST_STOP:
392- type = "install-stop";
393- break;
394 }
395 return type;
396 }
66e86606 397@@ -2407,7 +2400,6 @@ hif_commit_ts_progress_cb (const void *a
d113818a
JB
398 /* don't do anything */
399 break;
400
401- case RPMCALLBACK_INST_STOP:
402 case RPMCALLBACK_UNINST_STOP:
403
404 /* phase complete */
66e86606 405@@ -2422,8 +2414,6 @@ hif_commit_ts_progress_cb (const void *a
d113818a
JB
406 case RPMCALLBACK_UNPACK_ERROR:
407 case RPMCALLBACK_CPIO_ERROR:
408 case RPMCALLBACK_SCRIPT_ERROR:
409- case RPMCALLBACK_SCRIPT_START:
410- case RPMCALLBACK_SCRIPT_STOP:
411 case RPMCALLBACK_UNKNOWN:
412 case RPMCALLBACK_REPACKAGE_PROGRESS:
413 case RPMCALLBACK_REPACKAGE_START:
66e86606 414@@ -2816,14 +2806,14 @@ pk_backend_transaction_commit (PkBackend
d113818a
JB
415 goto out;
416
417 /* import all GPG keys */
418- ret = hif_keyring_add_public_keys (job_data->keyring, error);
419+ ret = hif_keyring_add_public_keys (job_data->ts, error);
420 if (!ret)
421 goto out;
422
423 /* find any packages without valid GPG signatures */
424 if (pk_bitfield_contain (job_data->transaction_flags,
425 PK_TRANSACTION_FLAG_ENUM_ONLY_TRUSTED)) {
426- ret = pk_backend_transaction_check_untrusted (job_data->keyring,
427+ ret = pk_backend_transaction_check_untrusted (
66e86606 428 job_data->sources,
d113818a
JB
429 job_data->goal,
430 error);
66e86606 431@@ -2843,15 +2833,7 @@ pk_backend_transaction_commit (PkBackend
d113818a
JB
432 /* setup the transaction */
433 commit = g_new0 (HifTransactionCommit, 1);
434 commit->timer = g_timer_new ();
435- rc = rpmtsSetRootDir (job_data->ts, "/");
436- if (rc < 0) {
437- ret = FALSE;
438- g_set_error_literal (error,
439- HIF_ERROR,
440- PK_ERROR_ENUM_INTERNAL_ERROR,
441- "failed to set root");
442- goto out;
443- }
444+ rpmtsSetRootDir (job_data->ts, "/");
445 rpmtsSetNotifyCallback (job_data->ts,
446 hif_commit_ts_progress_cb,
447 commit);
448--- PackageKit-0.8.15/backends/hawkey/rpmorg-compat.h.orig 1970-01-01 01:00:00.000000000 +0100
449+++ PackageKit-0.8.15/backends/hawkey/rpmorg-compat.h 2014-01-19 19:40:00.416711909 +0100
450@@ -0,0 +1,64 @@
451+#ifndef RPMORG_COMPAT_H
452+#define RPMORG_COMPAT_H
453+
454+#include <rpm/rpm46compat.h>
455+
456+#define _RPMVSF_NOSIGNATURES (RPMVSF_NODSAHEADER | RPMVSF_NORSAHEADER | RPMVSF_NODSA | RPMVSF_NORSA)
457+#define _RPMVSF_NODIGESTS (RPMVSF_NOSHA1HEADER | RPMVSF_NOMD5HEADER | RPMVSF_NOSHA1 | RPMVSF_NOMD5)
458+
459+static inline const char * headerGetString(Header h, int32_t tag)
460+{
461+ const char *res = NULL;
462+ struct rpmtd_s td;
463+
464+ if (headerGet(h, tag, &td, HEADERGET_MINMEM)) {
465+ if (rpmtdCount(&td) == 1) {
466+ res = rpmtdGetString(&td);
467+ }
468+ rpmtdFreeData(&td);
469+ }
470+ return res;
471+}
472+
473+static inline uint64_t rpmtdGetNumber(rpmtd td)
474+{
475+ uint64_t val = 0;
476+ int ix;
477+ assert(td != NULL);
478+ ix = (td->ix >= 0 ? td->ix : 0);
479+
480+ switch (td->type) {
481+ case RPM_INT64_TYPE:
482+ val = *((uint64_t *) td->data + ix);
483+ break;
484+ case RPM_INT32_TYPE:
485+ val = *((uint32_t *) td->data + ix);
486+ break;
487+ case RPM_INT16_TYPE:
488+ val = *((uint16_t *) td->data + ix);
489+ break;
490+ case RPM_INT8_TYPE:
491+ case RPM_CHAR_TYPE:
492+ val = *((uint8_t *) td->data + ix);
493+ break;
494+ default:
495+ break;
496+ }
497+ return val;
498+}
499+
500+static inline uint64_t headerGetNumber(Header h, int32_t tag)
501+{
502+ uint64_t res = 0;
503+ struct rpmtd_s td;
504+
505+ if (headerGet(h, tag, &td, HEADERGET_EXT)) {
506+ if (rpmtdCount(&td) == 1) {
507+ res = rpmtdGetNumber(&td);
508+ }
509+ rpmtdFreeData(&td);
510+ }
511+ return res;
512+}
513+
514+#endif /* RPMORG_COMPAT_H */
This page took 0.113304 seconds and 4 git commands to generate.