Browse code

switch rpmdb to lmdb

Change-Id: I483c6524373a4e30bcbdeb33a12de7db63971a1b
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/4658
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Xiaolin Li <xiaolinl@vmware.com>
Reviewed-by: Anish Swaminathan <anishs@vmware.com>

Priyesh Padmavilasom authored on 2018/01/18 09:52:24
Showing 18 changed files
... ...
@@ -1,7 +1,7 @@
1 1
 Summary:	The Berkley DB database library for C
2 2
 Name:		libdb
3 3
 Version:	5.3.28
4
-Release:	2%{?dist}
4
+Release:	3%{?dist}
5 5
 License:	BSD and LGPLv2 and Sleepycat
6 6
 URL:		https://oss.oracle.com/berkeley-db.html
7 7
 Source0:	http://download.oracle.com/berkeley-db/db-%{version}.tar.gz
... ...
@@ -13,6 +13,12 @@ Obsoletes:      db
13 13
 %description
14 14
 The Berkeley DB package contains libraries used by many other applications for database related functions.
15 15
 
16
+%package	utils
17
+Summary:	Header and development files
18
+Requires:	%{name} = %{version}
19
+%description	utils
20
+db dump utility
21
+
16 22
 %package	devel
17 23
 Summary:	Header and development files
18 24
 Requires:	%{name} = %{version}
... ...
@@ -56,6 +62,10 @@ rm -rf %{buildroot}
56 56
 %{_libdir}/*.so
57 57
 %{_datadir}/licenses/*
58 58
 
59
+%files utils
60
+%defattr(-,root,root)
61
+%{_bindir}/db_dump
62
+
59 63
 %files docs
60 64
 %defattr(-,root,root)
61 65
 %{_docdir}/%{name}-%{version}/*
... ...
@@ -66,6 +76,8 @@ rm -rf %{buildroot}
66 66
 %{_includedir}/*
67 67
 
68 68
 %changelog
69
+*   Wed Jan 17 2018 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 5.3.28-3
70
+-   add libdb-utils for db_dump
69 71
 *   Tue Nov 14 2017 Alexey Makhalov <amakhalov@vmware.com> 5.3.28-2
70 72
 -   Aarch64 support
71 73
 *	Thu Oct 27 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 5.3.28-1
... ...
@@ -89,7 +89,7 @@ rm -rf $RPM_BUILD_ROOT
89 89
 *   Thu Nov 24 2016 Alexey Makhalov <amakhalov@vmware.com> 2015.1-4
90 90
 -   BuildRequired attr-devel.
91 91
 *   Thu Nov 17 2016 Alexey Makhalov <amakhalov@vmware.com> 2015.1-3
92
--   Use %setup instead of %autosetup
92
+-   Use setup instead of autosetup
93 93
 *   Tue May 24 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 2015.1-2
94 94
 -   GA - Bump release of all rpms
95 95
 *   Mon Nov 24 2014 Divya Thaluru <dthaluru@vmware.com> 2014.2-1
... ...
@@ -1,7 +1,7 @@
1 1
 Summary:        Simple package manager built on top of hawkey and librepo
2 2
 Name:           libhif
3 3
 Version:        0.2.3
4
-Release:        1%{?dist}
4
+Release:        2%{?dist}
5 5
 License:        LGPLv2+
6 6
 URL:            https://github.com/hughsie/libhif
7 7
 Source0:        http://people.freedesktop.org/~hughsient/releases/%{name}-%{version}.tar.xz
... ...
@@ -23,6 +23,7 @@ BuildRequires:  python2-libs
23 23
 BuildRequires:  python2
24 24
 BuildRequires:  gobject-introspection-python
25 25
 BuildRequires:  openssl-devel
26
+BuildRequires:  lmdb-devel
26 27
 
27 28
 Requires:       openssl
28 29
 Requires:       librepo
... ...
@@ -83,6 +84,8 @@ make check
83 83
 %{_datadir}/gir-1.0/*.gir
84 84
 
85 85
 %changelog
86
+*   Sun Mar 04 2018 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 0.2.3-2
87
+-   added build requires lmdb-devel
86 88
 *   Thu Aug 19 2017 Chang Lee <changlee@vmware.com> 0.2.3-1
87 89
 -   Updated to 0.2.3
88 90
 -   Disabled GLib-GObject-CRITICAL tests due to Segmentation fault in all tests
89 91
new file mode 100644
... ...
@@ -0,0 +1,490 @@
0
+diff --git a/CMakeLists.txt b/CMakeLists.txt
1
+index 605ab76..7fad325 100644
2
+--- a/CMakeLists.txt
3
+@@ -12,6 +12,7 @@ OPTION (ENABLE_TCL "Build the Tcl bindings?" OFF)
4
+ 
5
+ OPTION (USE_VENDORDIRS "Install the bindings in vendor directories?" OFF)
6
+ 
7
++OPTION (ENABLE_RPMDB_LMDB "Build with rpm db as lmdb?" OFF)
8
+ OPTION (ENABLE_RPMDB "Build with rpm database support?" OFF)
9
+ OPTION (ENABLE_RPMPKG "Build with rpm package support?" OFF)
10
+ OPTION (ENABLE_PUBKEY "Build with pubkey support?" OFF)
11
+@@ -83,6 +84,17 @@ INCLUDE (${CMAKE_SOURCE_DIR}/VERSION.cmake)
12
+ 
13
+ SET (have_system x)
14
+ 
15
++IF (PHOTON)
16
++MESSAGE(STATUS "Building for Photon")
17
++ADD_DEFINITIONS (-DPHOTON)
18
++SET (RPM5 ON)
19
++SET (ENABLE_RPMDB ON)
20
++SET (ENABLE_RPMMD ON)
21
++SET (ENABLE_RPMDB_LMDB ON)
22
++SET (ENABLE_COMPLEX_DEPS ON)
23
++SET (have_system ${have_system}x)
24
++ENDIF (PHOTON)
25
++
26
+ IF (FEDORA)
27
+ MESSAGE(STATUS "Building for Fedora")
28
+ ADD_DEFINITIONS (-DFEDORA)
29
+@@ -220,17 +232,25 @@ IF (ENABLE_RPMDB)
30
+     ENDIF (RPMMISC_LIBRARY)
31
+   ENDIF (RPM5)
32
+ 
33
+-  # check if rpm contains a bundled berkeley db
34
+-  CHECK_INCLUDE_FILE(rpm/db.h HAVE_RPM_DB_H)
35
+-  IF (NOT HAVE_RPM_DB_H)
36
+-    FIND_LIBRARY (DB_LIBRARY NAMES db)
37
++  IF (NOT ENABLE_RPMDB_LMDB)
38
++    # check if rpm contains a bundled berkeley db
39
++    CHECK_INCLUDE_FILE(rpm/db.h HAVE_RPM_DB_H)
40
++    IF (NOT HAVE_RPM_DB_H)
41
++      FIND_LIBRARY (DB_LIBRARY NAMES db)
42
++      IF (DB_LIBRARY)
43
++        SET (RPMDB_LIBRARY ${DB_LIBRARY} ${RPMDB_LIBRARY})
44
++      ENDIF (DB_LIBRARY)
45
++      IF (DB_INCLUDE_DIR)
46
++        INCLUDE_DIRECTORIES (${DB_INCLUDE_DIR})
47
++      ENDIF (DB_INCLUDE_DIR)
48
++    ENDIF (NOT HAVE_RPM_DB_H)
49
++  ELSE (NOT ENABLE_RPMDB_LMDB)
50
++    FIND_LIBRARY (DB_LIBRARY NAMES lmdb)
51
+     IF (DB_LIBRARY)
52
+       SET (RPMDB_LIBRARY ${DB_LIBRARY} ${RPMDB_LIBRARY})
53
+     ENDIF (DB_LIBRARY)
54
+-    IF (DB_INCLUDE_DIR)
55
+-      INCLUDE_DIRECTORIES (${DB_INCLUDE_DIR})
56
+-    ENDIF (DB_INCLUDE_DIR)
57
+-  ENDIF (NOT HAVE_RPM_DB_H)
58
++  ENDIF (NOT ENABLE_RPMDB_LMDB)
59
++
60
+   INCLUDE (CheckLibraryExists)
61
+   CHECK_LIBRARY_EXISTS(rpmio pgpDigGetParams "" HAVE_PGPDIGGETPARAMS)
62
+ ENDIF (ENABLE_RPMDB)
63
+diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
64
+index 703796c..d56184f 100644
65
+--- a/examples/CMakeLists.txt
66
+@@ -1,5 +1,5 @@
67
+-IF (SUSE OR FEDORA OR DEBIAN OR MANDRIVA OR MAGEIA)
68
++IF (PHOTON OR SUSE OR FEDORA OR DEBIAN OR MANDRIVA OR MAGEIA)
69
+ 
70
+ ADD_SUBDIRECTORY (solv)
71
+ 
72
+-ENDIF (SUSE OR FEDORA OR DEBIAN OR MANDRIVA OR MAGEIA)
73
++ENDIF (PHOTON OR SUSE OR FEDORA OR DEBIAN OR MANDRIVA OR MAGEIA)
74
+diff --git a/ext/CMakeLists.txt b/ext/CMakeLists.txt
75
+index b8917a2..5d75c3f 100644
76
+--- a/ext/CMakeLists.txt
77
+@@ -11,6 +11,13 @@ IF (ENABLE_RPMDB OR ENABLE_RPMPKG)
78
+         pool_fileconflicts.h repo_rpmdb.h)
79
+ ENDIF (ENABLE_RPMDB OR ENABLE_RPMPKG)
80
+ 
81
++IF (ENABLE_RPMDB_LMDB)
82
++    SET (libsolvext_SRCS ${libsolvext_SRCS}
83
++        db_lmdb.c)
84
++    SET (libsolvext_HEADERS ${libsolvext_HEADERS}
85
++        db_lmdb.h)
86
++ENDIF (ENABLE_RPMDB_LMDB)
87
++
88
+ IF (ENABLE_PUBKEY)
89
+     SET (libsolvext_SRCS ${libsolvext_SRCS}
90
+ 	repo_pubkey.c)
91
+diff --git a/ext/db_lmdb.c b/ext/db_lmdb.c
92
+new file mode 100644
93
+index 0000000..c3941b0
94
+--- /dev/null
95
+@@ -0,0 +1,258 @@
96
++/*
97
++ * Copyright (c) 2007-2012, Novell Inc.
98
++ *
99
++ * This program is licensed under the BSD license, read LICENSE.BSD
100
++ * for further information
101
++ */
102
++
103
++/*
104
++ * db_lmdb
105
++ *
106
++ * bridge for db to lmdb calls
107
++ *
108
++ */
109
++
110
++#include <sys/types.h>
111
++#include <sys/stat.h>
112
++#include <limits.h>
113
++#include <fcntl.h>
114
++#include <stdio.h>
115
++#include <stdlib.h>
116
++#include <string.h>
117
++#include <unistd.h>
118
++#include <assert.h>
119
++#include <stdint.h>
120
++#include <errno.h>
121
++
122
++#include "db_lmdb.h"
123
++#include "util.h"
124
++
125
++int db_env_open(struct _DB_ENV_ *dbenv, const char *dbpath, u_int32_t flags, int naccess)
126
++{
127
++  int err = 0;
128
++
129
++  err = mdb_env_open(dbenv->env, dbpath, 0, naccess);
130
++  bail_on_error(err);
131
++
132
++error:
133
++  return err;  
134
++}
135
++
136
++int db_env_close(struct _DB_ENV_ *dbenv, u_int32_t flags)
137
++{
138
++  int err = 0;
139
++
140
++  if(dbenv && dbenv->env)
141
++    mdb_env_close(dbenv->env);
142
++
143
++  return err;
144
++}
145
++
146
++int db_env_get_open_flags(struct _DB_ENV_ *dbenv, u_int32_t *flags)
147
++{
148
++  *flags = 0;
149
++  return 0;
150
++}
151
++
152
++int db_env_create (DB_ENV **dbenvp, u_int32_t flags)
153
++{
154
++  DB_ENV *dbenv = NULL;
155
++  MDB_env *mdbenv = NULL;
156
++  int err = 0;
157
++
158
++  dbenv = solv_malloc(sizeof(DB_ENV));
159
++  if(!dbenv)
160
++    err = ENOMEM;
161
++  bail_on_error(err);
162
++
163
++  err = mdb_env_create(&mdbenv);
164
++  bail_on_error(err);
165
++
166
++  err = mdb_env_set_maxreaders(mdbenv, 16);
167
++  bail_on_error(err);
168
++
169
++  err = mdb_env_set_maxdbs(mdbenv, 32);
170
++  bail_on_error(err);
171
++
172
++  err = mdb_env_set_mapsize(mdbenv, 50*1024*1024);
173
++  bail_on_error(err);
174
++
175
++  dbenv->env = mdbenv;
176
++  dbenv->open = db_env_open;
177
++  dbenv->close = db_env_close;
178
++  dbenv->get_open_flags = db_env_get_open_flags;
179
++
180
++  *dbenvp = dbenv;
181
++cleanup:
182
++  return err;
183
++
184
++error:
185
++  if(mdbenv)
186
++    mdb_env_close(mdbenv);
187
++  solv_free(dbenv);
188
++  goto cleanup;
189
++}
190
++
191
++//db
192
++int db_close(struct _DB_ *db, u_int32_t flags)
193
++{
194
++  return 0;
195
++}
196
++
197
++int dbc_close(struct _DBC_ *dbc)
198
++{
199
++/*
200
++  if(dbc->txn)
201
++  {
202
++    if(dbc->txn->txn)
203
++      mdb_txn_abort(dbc->txn->txn);
204
++    dbc->txn->txn = NULL;
205
++    solv_free(dbc->txn);
206
++  }
207
++  dbc->txn = NULL;
208
++*/
209
++  return 0;
210
++}
211
++
212
++int dbc_c_close(struct _DBC_ *dbc)
213
++{
214
++  if(dbc->cursor)
215
++    mdb_cursor_close(dbc->cursor);
216
++  dbc->cursor = NULL;
217
++  return 0;
218
++}
219
++
220
++int dbc_c_get(struct _DBC_ *dbc, struct _DBT_ *key, struct _DBT_ *value, u_int32_t flags)
221
++{
222
++  int err = 0;
223
++  u_int32_t flagsin = flags == DB_SET ? MDB_SET : MDB_NEXT;
224
++  MDB_val mkey, mval;
225
++
226
++  if(flagsin == MDB_SET)
227
++  {
228
++    mkey.mv_size = key->size;
229
++    mkey.mv_data = key->data;
230
++  }
231
++
232
++  err = mdb_cursor_get(dbc->cursor, &mkey, &mval, flagsin);
233
++  bail_on_error(err);
234
++
235
++  if(flagsin == MDB_NEXT)
236
++  {
237
++    key->size = mkey.mv_size;
238
++    key->data = mkey.mv_data;
239
++  }
240
++  value->size = mval.mv_size;
241
++  value->data = mval.mv_data;
242
++
243
++cleanup:
244
++  return err;
245
++error:
246
++  goto cleanup;
247
++}
248
++
249
++int db_cursor(struct _DB_ *db, struct _DB_TXN_ *txn,
250
++              struct _DBC_ **dbcp, u_int32_t flags)
251
++{
252
++  int err = 0;
253
++  DBC *dbc = NULL;
254
++
255
++  DB_TXN *txncurrent = txn ? txn : db->txn;
256
++
257
++  if(!txncurrent || !txncurrent->txn)
258
++    err = EINVAL;
259
++  bail_on_error(err);
260
++
261
++  dbc = solv_malloc(sizeof(DBC));
262
++  if(!dbc)
263
++    err = ENOMEM;    
264
++  bail_on_error(err);
265
++
266
++  err = mdb_cursor_open(txncurrent->txn, db->db, &dbc->cursor);
267
++  bail_on_error(err);
268
++
269
++  dbc->close = dbc_close;
270
++  dbc->c_close = dbc_c_close;
271
++  dbc->c_get = dbc_c_get;
272
++
273
++  *dbcp = dbc;
274
++cleanup:
275
++  return err;
276
++error:
277
++  solv_free(dbc);
278
++  goto cleanup;
279
++}
280
++ 
281
++int db_get(struct _DB_ *db, struct _DB_TXN_ *txn,
282
++           struct _DBT_ *key, struct _DBT_ *value, u_int32_t flags)
283
++{
284
++  return 0;
285
++}
286
++
287
++int db_open(struct _DB_ *db, struct _DB_TXN_ *txn,
288
++            const char *file, const char *database,
289
++            DBTYPE dbtype, u_int32_t flags, int mode)
290
++{
291
++  int err = 0;
292
++  DB_TXN *txnp = NULL;
293
++  MDB_dbi dbi = -1;
294
++  DB_TXN *txncurrent = txn;
295
++
296
++  if(!txn)
297
++  {
298
++    u_int32_t txnflags = flags & DB_RDONLY ? MDB_RDONLY : 0;
299
++    txnp = solv_malloc(sizeof(DB_TXN));
300
++    if(!txnp)
301
++      err = ENOMEM;    
302
++    bail_on_error(err);
303
++
304
++    err = mdb_txn_begin(db->env, NULL, txnflags, &txnp->txn);
305
++    bail_on_error(err);
306
++
307
++    txncurrent = txnp;
308
++  }
309
++
310
++  err = mdb_dbi_open(txncurrent->txn, file, 0, &dbi);
311
++  bail_on_error(err);
312
++  
313
++  db->txn = txnp;
314
++  db->db = dbi;
315
++
316
++cleanup:
317
++  return err;
318
++error:
319
++  solv_free(txnp);
320
++  goto cleanup;
321
++}
322
++
323
++int db_get_byteswapped(struct _DB_ *db, int *byteswapped)
324
++{
325
++  *byteswapped = 0;
326
++  return 0;
327
++}
328
++
329
++int db_create (DB **db, DB_ENV *dbenv, u_int32_t flags)
330
++{
331
++  int err = 0;
332
++  DB *dbp = NULL;
333
++
334
++  dbp = solv_malloc(sizeof(DB));
335
++  if(!dbp)
336
++    err = ENOMEM;
337
++  bail_on_error(err);
338
++
339
++
340
++  dbp->env = dbenv->env;
341
++  dbp->close = db_close;
342
++  dbp->cursor = db_cursor;
343
++  dbp->get = db_get;
344
++  dbp->get_byteswapped = db_get_byteswapped;
345
++  dbp->open = db_open;
346
++  *db = dbp;
347
++
348
++cleanup:
349
++  return err;
350
++error:
351
++  solv_free(dbp);
352
++  goto cleanup;
353
++}
354
+diff --git a/ext/db_lmdb.h b/ext/db_lmdb.h
355
+new file mode 100644
356
+index 0000000..4eb197d
357
+--- /dev/null
358
+@@ -0,0 +1,83 @@
359
++/*
360
++ * Copyright (c) 2007-2008, Novell Inc.
361
++ *
362
++ * This program is licensed under the BSD license, read LICENSE.BSD
363
++ * for further information
364
++ */
365
++
366
++#ifndef RPM_LMDB_H
367
++#define RPM_LMDB_H
368
++
369
++#include <lmdb.h>
370
++
371
++typedef enum
372
++{
373
++  DB_UNKNOWN=5
374
++} DBTYPE;
375
++
376
++typedef struct _DB_ENV_
377
++{
378
++  MDB_env *env;
379
++  int  (*get_open_flags) (struct _DB_ENV_ *, u_int32_t *);
380
++  int  (*open) (struct _DB_ENV_ *, const char *, u_int32_t, int);
381
++  int  (*close) (struct _DB_ENV_ *, u_int32_t);
382
++}DB_ENV;
383
++
384
++typedef struct _DB_TXN_
385
++{
386
++  MDB_txn *txn;
387
++}DB_TXN;
388
++
389
++typedef struct _DBT_
390
++{
391
++  void *data;
392
++  u_int32_t size;
393
++}DBT;
394
++
395
++typedef struct _DBC_
396
++{
397
++  MDB_cursor *cursor;
398
++  int (*close) (struct _DBC_ *);
399
++  int (*c_close) (struct _DBC_ *);
400
++  int (*c_get) (struct _DBC_ *, struct _DBT_ *, struct _DBT_ *, u_int32_t);
401
++}DBC;
402
++
403
++typedef struct _DB_
404
++{
405
++  DB_TXN *txn;
406
++  MDB_dbi db;
407
++  MDB_env *env;
408
++  int  (*close) (struct _DB_ *, u_int32_t);
409
++  int  (*cursor)(struct _DB_ *, struct _DB_TXN_ *, struct _DBC_ **, u_int32_t);
410
++  int  (*get) (struct _DB_ *, struct _DB_TXN_ *, struct _DBT_ *, struct _DBT_ *, u_int32_t);
411
++  int  (*get_byteswapped) (struct _DB_ *, int *);
412
++  int  (*open) (struct _DB_ *,
413
++                  struct _DB_TXN_ *,
414
++                  const char *,
415
++                  const char *,
416
++                  DBTYPE,
417
++                  u_int32_t,
418
++                  int);
419
++}DB;
420
++
421
++//definitions from db.h
422
++#define	DB_CREATE     0x00000001
423
++#define	DB_INIT_CDB   0x00000080
424
++#define	DB_INIT_MPOOL 0x00000400
425
++#define	DB_PRIVATE    0x00010000
426
++#define	DB_RDONLY     0x00000400
427
++
428
++#define	DB_NEXT       16
429
++#define	DB_SET        26
430
++
431
++int db_env_create (DB_ENV **, u_int32_t);
432
++int db_create (DB **, DB_ENV *, u_int32_t);
433
++
434
++#define bail_on_error(nerror) \
435
++    do {                                                           \
436
++        if (nerror)                                               \
437
++        {                                                          \
438
++            goto error;                                            \
439
++        }                                                          \
440
++    } while(0)
441
++#endif//RPM_LMDB_H
442
+diff --git a/ext/repo_rpmdb.c b/ext/repo_rpmdb.c
443
+index fe05bec..9f4ad31 100644
444
+--- a/ext/repo_rpmdb.c
445
+@@ -25,6 +25,7 @@
446
+ #include <errno.h>
447
+ 
448
+ #ifdef ENABLE_RPMDB
449
++#define ENABLE_RPMDB_LMDB
450
+ 
451
+ #include <rpm/rpmio.h>
452
+ #include <rpm/rpmpgp.h>
453
+@@ -37,7 +38,11 @@
454
+ # if defined(SUSE) || defined(HAVE_RPM_DB_H)
455
+ #  include <rpm/db.h>
456
+ # else
457
+-#  include <db.h>
458
++#  ifdef ENABLE_RPMDB_LMDB
459
++#   include "db_lmdb.h"
460
++#  else
461
++#   include <db.h>
462
++#  endif
463
+ # endif
464
+ #endif
465
+ 
466
+@@ -1515,7 +1520,7 @@ count_headers(struct rpmdbstate *state)
467
+   DBT dbkey;
468
+   DBT dbdata;
469
+ 
470
+-  snprintf(dbpath, PATH_MAX, "%s%s/Name", state->rootdir ? state->rootdir : "", state->is_ostree ? "/usr/share/rpm" : "/var/lib/rpm");
471
++  snprintf(dbpath, PATH_MAX, "%s%s/data.mdb", state->rootdir ? state->rootdir : "", state->is_ostree ? "/usr/share/rpm" : "/var/lib/rpm");
472
+   if (stat(dbpath, &statbuf))
473
+     return 0;
474
+   memset(&dbkey, 0, sizeof(dbkey));
475
+@@ -1841,7 +1846,7 @@ repo_add_rpmdb(Repo *repo, Repo *ref, int flags)
476
+     }
477
+ 
478
+   /* XXX: should get ro lock of Packages database! */
479
+-  snprintf(dbpath, PATH_MAX, "%s%s/Packages", state.rootdir ? state.rootdir : "", state.is_ostree ? "/usr/share/rpm" : "/var/lib/rpm");
480
++  snprintf(dbpath, PATH_MAX, "%s%s/data.mdb", state.rootdir ? state.rootdir : "", state.is_ostree ? "/usr/share/rpm" : "/var/lib/rpm");
481
+   if (stat(dbpath, &packagesstat))
482
+     {
483
+       pool_error(pool, -1, "%s: %s", dbpath, strerror(errno));
... ...
@@ -6,14 +6,14 @@ License:        BSD
6 6
 URL:            https://github.com/openSUSE/libsolv
7 7
 Source0:        https://github.com/openSUSE/libsolv/archive/%{name}-%{version}.tar.gz
8 8
 %define sha1    libsolv=7699af00e648bf3e631246559c48ceb7f3f544b9
9
+Patch0:         libsolv-lmdb.patch
9 10
 Group:          Development/Tools
10 11
 Vendor:         VMware, Inc.
11 12
 Distribution:   Photon
12
-Requires:       libdb
13
+Requires:       lmdb
13 14
 Requires:       expat-libs
14
-BuildRequires:  libdb-devel
15
+BuildRequires:  lmdb-devel
15 16
 BuildRequires:  cmake
16
-BuildRequires:  rpm-devel
17 17
 BuildRequires:  expat-devel
18 18
 Provides:       pkgconfig(libsolv)
19 19
 %description
... ...
@@ -30,16 +30,19 @@ for developing applications that use libsolv.
30 30
 
31 31
 %prep
32 32
 %setup -q
33
+%patch0 -p1
34
+
33 35
 %build
34 36
 cmake \
35 37
     -DCMAKE_INSTALL_PREFIX=%{_prefix} \
36
-    -DRPM5=ON \
37
-    -DENABLE_RPMDB=ON \
38
-    -DENABLE_COMPLEX_DEPS=ON
38
+    -DPHOTON=ON
39 39
 make %{?_smp_mflags}
40
+
40 41
 %install
41 42
 make DESTDIR=%{buildroot} install
42 43
 find %{buildroot} -name '*.la' -delete
44
+#cp ext/repo_*.h %{buildroot}%{_includedir}/solv
45
+
43 46
 
44 47
 %check
45 48
 make %{?_smp_mflags} test
46 49
new file mode 100644
... ...
@@ -0,0 +1,10 @@
0
+prefix=/usr
1
+exec_prefix=${prefix}
2
+libdir=${exec_prefix}/lib
3
+includedir=${prefix}/include
4
+
5
+Name: lmdb
6
+Description: Lightning memory-mapped database manager
7
+Version: 0.9.21
8
+Libs: -L${libdir} -llmdb
9
+Cflags: -I${includedir}
0 10
new file mode 100644
... ...
@@ -0,0 +1,70 @@
0
+Summary:       Lightning memory-mapped database manager
1
+Name:          lmdb
2
+Version:       0.9.21
3
+Release:       1%{?dist}
4
+Group:         System/Libraries
5
+Vendor:        VMware, Inc.
6
+License:       OpenLDAP
7
+URL:           https://github.com/LMDB/lmdb
8
+Source0:       https://github.com/LMDB/lmdb/archive/LMDB_%{version}.tar.gz
9
+%define sha1 LMDB=54d10ee9afaba8db75c8c73832da10b0a47e5807
10
+Source1:       %{name}.pc
11
+Distribution:  Photon
12
+
13
+%description
14
+Lightning memory-mapped database manager
15
+
16
+%package devel
17
+Summary:    Development files for lmdb
18
+Group:      Development/Libraries
19
+Requires:   lmdb = %{version}-%{release}
20
+
21
+%description devel
22
+Development files for lmdb
23
+
24
+%prep
25
+%setup -qn lmdb-LMDB_%{version}
26
+
27
+%build
28
+cd libraries/liblmdb
29
+make
30
+
31
+%install
32
+%define relpath       %{_builddir}/%{buildsubdir}/libraries/liblmdb
33
+mkdir -p %{buildroot}%{_libdir}
34
+mkdir -p %{buildroot}%{_libdir}/pkgconfig
35
+mkdir -p %{buildroot}%{_bindir}
36
+mkdir -p %{buildroot}%{_includedir}
37
+mkdir -p %{buildroot}%{_docdir}/%{name}-%{version}
38
+
39
+install -m0755 %{relpath}/liblmdb.so %{buildroot}%{_libdir}
40
+install -m0755 %{SOURCE1} %{buildroot}%{_libdir}/pkgconfig
41
+install -m0755 %{relpath}/mdb_copy %{buildroot}%{_bindir}
42
+install -m0755 %{relpath}/mdb_dump %{buildroot}%{_bindir}
43
+install -m0755 %{relpath}/mdb_load %{buildroot}%{_bindir}
44
+install -m0755 %{relpath}/mdb_stat %{buildroot}%{_bindir}
45
+install -m0644 %{relpath}/lmdb.h %{buildroot}%{_includedir}
46
+install -m0644 %{relpath}/{CHANGES,LICENSE,intro.doc} %{buildroot}%{_docdir}/%{name}-%{version}
47
+
48
+%post
49
+
50
+    /sbin/ldconfig
51
+
52
+    # First argument is 1 => New Installation
53
+    # First argument is 2 => Upgrade
54
+
55
+%clean
56
+rm -rf %{buildroot}/*
57
+
58
+%files
59
+%{_docdir}/*
60
+%{_libdir}/*.so
61
+%{_bindir}/*
62
+
63
+%files devel
64
+%{_includedir}/*
65
+%{_libdir}/pkgconfig/%{name}.pc
66
+
67
+%changelog
68
+*  Wed Dec 13 2017 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 0.9.21-1
69
+-  Initial
... ...
@@ -2,7 +2,7 @@
2 2
 Summary:	Net-SNMP is a suite of applications used to implement SNMP v1, SNMP v2c and SNMP v3 using both IPv4 and IPv6. 
3 3
 Name:		net-snmp   
4 4
 Version:	5.7.3
5
-Release:	7%{?dist}
5
+Release:	8%{?dist}
6 6
 License:	BSD (like)  
7 7
 URL:		http://net-snmp.sourceforge.net/
8 8
 Group:		Productivity/Networking/Other
... ...
@@ -48,7 +48,8 @@ The net-snmp-devel package contains headers and libraries for building SNMP appl
48 48
 		--with-systemd \
49 49
 		--disable-static \
50 50
 		--with-x=no \
51
-		--enable-as-needed
51
+		--enable-as-needed \
52
+                --without-rpm
52 53
 make
53 54
 
54 55
 %install
... ...
@@ -96,6 +97,8 @@ rm -rf %{buildroot}/*
96 96
 %exclude /usr/lib/perl5/5.22.1/x86_64-linux-thread-multi/perllocal.pod
97 97
 
98 98
 %changelog
99
+*	Wed Jan 31 2018 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 5.7.3-8
100
+-	build without rpm support
99 101
 *	Mon Jul 24 2017 Dheeraj Shetty <dheerajs@vmware.com> 5.7.3-7
100 102
 -	Make service file a different source
101 103
 *	Tue Apr 04 2017 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 5.7.3-6
... ...
@@ -1,7 +1,7 @@
1 1
 Summary:        Open Source Security Compliance Solution
2 2
 Name:           openscap
3 3
 Version:        1.2.14
4
-Release:        3%{?dist}
4
+Release:        4%{?dist}
5 5
 License:        GPL2+
6 6
 URL:            https://www.open-scap.org
7 7
 Source0:        https://github.com/OpenSCAP/openscap/releases/download/%{version}/openscap-%{version}.tar.gz
... ...
@@ -20,6 +20,7 @@ BuildRequires:  bzip2-devel
20 20
 BuildRequires:  curl-devel
21 21
 BuildRequires:  popt-devel
22 22
 BuildRequires:  python2-devel
23
+BuildRequires:  lmdb-devel
23 24
 Requires:       curl
24 25
 Requires:       popt
25 26
 %description
... ...
@@ -95,6 +96,8 @@ find %{buildroot} -name '*.la' -delete
95 95
 %{_libdir}/python2.7/*
96 96
 
97 97
 %changelog
98
+*   Sun Mar 04 2018 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.2.14-4
99
+-   added build requires lmdb-devel
98 100
 *   Thu Aug 10 2017 Rongrong Qiu <rqiu@vmware.com> 1.2.14-3
99 101
 -   Disable make check which need per-XML-XPATH for bug 1900358
100 102
 *   Fri May 5 2017 Alexey Makhalov <amakhalov@vmware.com> 1.2.14-2
... ...
@@ -148,7 +148,7 @@ rm -rf %{buildroot}
148 148
 *   Fri Nov 18 2016 Anish Swaminathan <anishs@vmware.com>  2015.7-8
149 149
 -   Change systemd dependency
150 150
 *   Thu Nov 17 2016 Alexey Makhalov <amakhalov@vmware.com> 2015.7-7
151
--   Use %setup instead of %autosetup
151
+-   Use setup instead of autosetup
152 152
 *   Fri Oct 07 2016 ChangLee <changlee@vmware.com> 2015.7-6
153 153
 -   Modified %check
154 154
 *   Thu May 26 2016 Divya Thaluru <dthaluru@vmware.com>  2015.7-5
... ...
@@ -1,7 +1,7 @@
1 1
 Summary:        Commit RPMs to an OSTree repository
2 2
 Name:           rpm-ostree
3 3
 Version:        2017.4
4
-Release:        7%{?dist}
4
+Release:        8%{?dist}
5 5
 Source0:        rpm-ostree-%{version}.tar.gz
6 6
 %define sha1    rpm-ostree=d34882a455afbf0b57617c0962725276967e838a
7 7
 Source1:        libglnx-0c52d85.tar.gz
... ...
@@ -52,6 +52,7 @@ BuildRequires:  photon-release
52 52
 BuildRequires:  photon-repos
53 53
 BuildRequires:  bubblewrap
54 54
 BuildRequires:  dbus
55
+BuildRequires:  lmdb-devel
55 56
 
56 57
 Requires:       libcap
57 58
 Requires:       librepo
... ...
@@ -128,6 +129,8 @@ make check
128 128
 %{_bindir}/rpm-ostree-host/function.inc
129 129
 
130 130
 %changelog
131
+*   Sun Mar 04 2018 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 2017.4-8
132
+-   added build requires lmdb-devel
131 133
 *   Tue Oct 03 2017 Dheeraj Shetty <dheerajs@vmware.com> 2017.4-7
132 134
 -   Remove hardcoded /dev/loop0
133 135
 *   Tue Sep 26 2017 Dheeraj Shetty <dheerajs@vmware.com> 2017.4-6
134 136
new file mode 100755
... ...
@@ -0,0 +1,124 @@
0
+#!/bin/sh
1
+
2
+#please see https://github.com/rpm-software-management/rpm/issues/281
3
+#uses code from bdbexport.sh and lmdbimport.sh posted in the discussion. 
4
+
5
+#Use: tool to convert bdb to lmdb and replace existing bdb.
6
+
7
+#running rpm --rebuilddb is recommended after conversion
8
+#for scenarios like docker, photon-micro etc
9
+#rpm might not be installed as just rpm-libs is enough.
10
+#a warning is issued in this case.
11
+
12
+#not designed to run multiple times without doing manual
13
+#maintenance in between (move backup folders etc)
14
+
15
+LMDB=/var/lib/rpmdb-lmdb
16
+BDB=/var/lib/rpm
17
+DUMPDIR=DUMP
18
+
19
+#bdb database file names
20
+TAGS="
21
+Packages
22
+Name
23
+Basenames
24
+Group
25
+Requirename
26
+Providename
27
+Conflictname
28
+Obsoletename
29
+Triggername
30
+Dirnames
31
+Installtid
32
+Sigmd5
33
+Sha1header
34
+Filetriggername
35
+Transfiletriggername
36
+Recommendname
37
+Suggestname
38
+Supplementname
39
+Enhancename
40
+"
41
+
42
+#backup existing bdb to /var/lib/rpm-bdb-backup
43
+function backup_and_replace_rpmdb() {
44
+  echo "backed up existing bdb to $BDB-bdb-backup"
45
+  mv $BDB $BDB-bdb-backup
46
+  mv $LMDB $BDB
47
+  if [ -x /usr/bin/rpm ]; then
48
+    rpm --rebuilddb
49
+  else
50
+    echo 'rpm binary not found. not running rebuilddb. please install rpm and run rpm --rebuilddb.'
51
+  fi
52
+}
53
+
54
+function export_from_bdb() {
55
+
56
+  rm -rf $DUMPDIR
57
+  mkdir -p $DUMPDIR
58
+
59
+  # --- export all the databases
60
+  for TAG in $TAGS; do
61
+    echo "-- $TAG --"
62
+    [ -f $BDB/$TAG ] || continue
63
+  # --- change from hash -> btree, including swabbing integer keys
64
+    db_dump $BDB/$TAG | \
65
+      sed -e's,^type=hash,type=btree,' -e'/^h_nelem=/d' -e'/^db_pagesize=/d' \
66
+	-e's,^ \(..\)\(..\)\(..\)\(..\)$, \4\3\2\1,' \
67
+	> $DUMPDIR/$TAG.btree
68
+  done
69
+}
70
+
71
+function import_to_lmdb() {
72
+  rm -rf $LMDB
73
+  mkdir -p $LMDB
74
+
75
+  # --- initialize the lmdb parameters (mapsize MUST be sufficiently large)
76
+  cat << EOF | mdb_load $LMDB
77
+VERSION=3
78
+format=bytevalue
79
+type=btree
80
+mapsize=1048576000
81
+maxreaders=64
82
+HEADER=END
83
+DATA=END
84
+EOF
85
+
86
+  # --- import the rpmdb dumps, creating empty indices (unused on RHEL7) as needed
87
+  for TAG in $TAGS; do
88
+    echo "-- $TAG --"
89
+    case $TAG in
90
+    Enhance*|Filetrigger*|Recommend*|Suggest*|Supplement*|Transfiletrigge*)
91
+	mdb_load -s $TAG -T $LMDB < /dev/null
92
+	;;
93
+    *)
94
+	mdb_load -f $DUMPDIR/$TAG.btree -s $TAG $LMDB
95
+	;;
96
+    esac
97
+  done
98
+
99
+  mdb_stat -a $LMDB
100
+}
101
+
102
+function make_lmdb_from_bdb() {
103
+  export_from_bdb
104
+  import_to_lmdb
105
+}
106
+
107
+#check and convert
108
+function check_and_convert() {
109
+  if [ ! -x /usr/bin/db_dump ]; then
110
+    echo 'libdb-utils is required to do bdb export. please install libdb-utils and try again.'
111
+    return 1
112
+  fi
113
+  echo 'checking if rpmdb needs conversion'
114
+  if [ -f $BDB/Packages ]; then
115
+    echo 'making lmdb from mdb'
116
+    make_lmdb_from_bdb
117
+    echo 'backing up and replacing bdb with lmdb'
118
+    backup_and_replace_rpmdb
119
+  fi
120
+}
121
+
122
+#convert if required.
123
+check_and_convert
0 124
new file mode 100644
... ...
@@ -0,0 +1,108 @@
0
+diff --git a/autogen.sh b/autogen.sh.1
1
+index f7ea2cf..efabeef 100755
2
+--- a/autogen.sh
3
+@@ -4,7 +4,7 @@ export CPPFLAGS
4
+ export CFLAGS
5
+ export LDFLAGS
6
+ 
7
+-autoreconf -i
8
++autoreconf -mif
9
+ 
10
+ case "$1" in
11
+   "--noconfigure")
12
+diff --git a/configure.ac b/configure.ac.1
13
+index 373d694..b562e94 100644
14
+--- a/configure.ac
15
+@@ -509,6 +509,19 @@ AM_CONDITIONAL(LIBDW,[test "$WITH_LIBDW" = yes])
16
+ AM_CONDITIONAL(HAVE_LIBDW_STRTAB,[test "$HAVE_LIBDW_STRTAB" = yes])
17
+ 
18
+ #=================
19
++# control bdb defaulting
20
++AC_ARG_ENABLE([bdb],
21
++              [AS_HELP_STRING([--enable-bdb=@<:@yes/no@:>@]
22
++,
23
++                              [build with default bdb rpm database format support (default=yes)])],
24
++              [enable_bdb="$enableval"],
25
++              [enable_bdb=yes])
26
++
27
++AS_IF([test "$enable_bdb" = "yes"], [
28
++
29
++  AC_DEFINE([ENABLE_BDB], [], [engage bdb code paths])
30
++
31
++#=================
32
+ # Process --with/without-external-db
33
+ AC_ARG_WITH(external_db, [AS_HELP_STRING([--with-external-db],[build against an external Berkeley db])],
34
+ [case "$with_external_db" in
35
+@@ -566,6 +579,8 @@ no|maybe )
36
+ esac
37
+ 
38
+ AC_SUBST([WITH_DB_LIB])
39
++])
40
++AM_CONDITIONAL([BDB], [test "$enable_bdb" = yes])
41
+ 
42
+ #=================
43
+ # Process --enable-ndb
44
+diff --git a/lib/Makefile.am b/lib/Makefile.am.1
45
+index baf3238..8ab4f1e 100644
46
+--- a/lib/Makefile.am
47
+@@ -24,7 +24,7 @@ EXTRA_PROGRAMS =
48
+ 
49
+ usrlib_LTLIBRARIES = librpm.la
50
+ librpm_la_SOURCES = \
51
+-	backend/db3.c backend/dbi.c backend/dbi.h \
52
++	backend/dbi.c backend/dbi.h \
53
+ 	backend/dbiset.c backend/dbiset.h \
54
+ 	headerutil.c header.c headerfmt.c header_internal.h \
55
+ 	rpmdb.c rpmdb_internal.h \
56
+@@ -59,11 +59,15 @@ librpm_la_LIBADD += @LUA_LIBS@
57
+ librpm_la_SOURCES += rpmliblua.c rpmliblua.h
58
+ endif
59
+ 
60
++if BDB
61
++librpm_la_SOURCES += \
62
++	backend/db3.c
63
+ if WITH_INTERNAL_DB
64
+ librpm_la_LIBADD += $(libdb_la)
65
+ else
66
+ librpm_la_LIBADD += @WITH_DB_LIB@
67
+ endif
68
++endif
69
+ 
70
+ if NDB
71
+ librpm_la_SOURCES += \
72
+diff --git a/lib/backend/dbi.c b/lib/backend/dbi.c.1
73
+index e99a5f2..d212881 100644
74
+--- a/lib/backend/dbi.c
75
+@@ -50,11 +50,13 @@ dbDetectBackend(rpmdb rdb)
76
+     } else
77
+ #endif
78
+     {
79
++#ifdef ENABLE_BDB
80
+ 	rdb->db_ops = &db3_dbops;
81
+ 	if (*db_backend == '\0') {
82
+ 	    free(db_backend);
83
+ 	    db_backend = xstrdup("bdb");
84
+ 	}
85
++#endif
86
+     }
87
+ 
88
+ #if defined(WITH_LMDB)
89
+@@ -75,12 +77,14 @@ dbDetectBackend(rpmdb rdb)
90
+     free(path);
91
+ #endif
92
+ 
93
++#ifdef ENABLE_BDB
94
+     path = rstrscat(NULL, dbhome, "/Packages", NULL);
95
+     if (access(path, F_OK) == 0 && rdb->db_ops != &db3_dbops) {
96
+ 	rdb->db_ops = &db3_dbops;
97
+ 	rpmlog(RPMLOG_WARNING, _("Found BDB Packages database while attempting %s backend: using bdb backend.\n"), db_backend);
98
+     }
99
+     free(path);
100
++#endif
101
+ 
102
+     if (db_backend)
103
+ 	free(db_backend);
... ...
@@ -3,27 +3,26 @@
3 3
 
4 4
 Summary:        Package manager
5 5
 Name:           rpm
6
-Version:        4.13.0.1
7
-Release:        7%{?dist}
6
+Version:        4.14.0
7
+Release:        1%{?dist}
8 8
 License:        GPLv2+
9 9
 URL:            http://rpm.org
10 10
 Group:          Applications/System
11 11
 Vendor:         VMware, Inc.
12 12
 Distribution:   Photon
13
-Source0:        https://github.com/rpm-software-management/rpm/archive/%{name}-%{version}-release.tar.gz
14
-%define sha1    rpm=2119489397d7e4da19320ef9330ab717ac05587d
13
+Source0:        https://github.com/rpm-software-management/rpm/archive/%{name}-%{version}.tar.bz2
14
+%define sha1    rpm=b15344d67b1bf4b15498efa3667f2ad5de40623f
15 15
 Source1:        macros
16 16
 Source2:        brp-strip-debug-symbols
17 17
 Source3:        brp-strip-unneeded
18
-Patch0:         find-debuginfo-do-not-generate-non-existing-build-id.patch
19
-Patch1:         find-debuginfo-do-not-generate-dir-entries.patch
20
-Patch2:         rpm-CVE-2017-7501.patch
18
+Source4:        convert_bdb_to_lmdb.sh
19
+Patch0:         find-debuginfo-do-not-generate-dir-entries.patch
20
+Patch1:         rpm-use-lmdb.patch
21 21
 Requires:       bash
22
-Requires:       libdb
23 22
 Requires:       rpm-libs = %{version}-%{release}
24 23
 Requires:       libarchive
25 24
 BuildRequires:  libarchive-devel
26
-BuildRequires:  libdb-devel
25
+BuildRequires:  lmdb-devel
27 26
 BuildRequires:  popt-devel
28 27
 BuildRequires:  nss-devel
29 28
 BuildRequires:  elfutils-devel
... ...
@@ -38,6 +37,7 @@ RPM package manager
38 38
 Summary:        Libraries and header files for rpm
39 39
 Provides:       pkgconfig(rpm)
40 40
 Requires:       %{name} = %{version}-%{release}
41
+Requires:       lmdb-devel
41 42
 %description devel
42 43
 Static libraries and header files for the support library for rpm
43 44
 
... ...
@@ -51,6 +51,7 @@ Requires:       zlib
51 51
 Requires:       bzip2-libs
52 52
 Requires:       elfutils-libelf
53 53
 Requires:       xz-libs
54
+Requires:       lmdb
54 55
 %description    libs
55 56
 Shared libraries librpm and librpmio
56 57
 
... ...
@@ -85,17 +86,25 @@ Requires:       python3
85 85
 %description -n python3-rpm
86 86
 Python3 rpm.
87 87
 
88
+%package convert-db
89
+Summary:        Tools to convert bdb to lmdb
90
+Group:          Applications/Utilities
91
+Requires:       libdb-utils
92
+Requires:       lmdb
93
+%description convert-db
94
+Tools to convert existing rpm db from bdb to lmdb.
95
+
88 96
 %prep
89
-%setup -n rpm-%{name}-%{version}-release
97
+%setup -n %{name}-%{version}
90 98
 %patch0 -p1
91 99
 %patch1 -p1
92
-%patch2 -p1
93 100
 
94 101
 %build
95 102
 sed -i '/define _GNU_SOURCE/a #include "../config.h"' tools/sepdebugcrcfix.c
96 103
 # pass -L opts to gcc as well to prioritize it over standard libs
97 104
 sed -i 's/-Wl,-L//g' python/setup.py.in
98 105
 sed -i 's/extra_link_args/library_dirs/g' python/setup.py.in
106
+sed -i 's/_db_backend\s*bdb/_db_backend lmdb/' macros.in
99 107
 
100 108
 ./autogen.sh --noconfigure
101 109
 ./configure \
... ...
@@ -120,7 +129,8 @@ sed -i 's/extra_link_args/library_dirs/g' python/setup.py.in
120 120
         --with-cap \
121 121
         --without-lua \
122 122
         --disable-silent-rules \
123
-        --with-external-db
123
+        --disable-bdb \
124
+        --enable-lmdb
124 125
 make %{?_smp_mflags}
125 126
 
126 127
 pushd python
... ...
@@ -140,6 +150,7 @@ install -dm 755 %{buildroot}%{_sysconfdir}/rpm
140 140
 install -vm644 %{SOURCE1} %{buildroot}%{_sysconfdir}/rpm/
141 141
 install -vm755 %{SOURCE2} %{buildroot}%{_libdir}/rpm/
142 142
 install -vm755 %{SOURCE3} %{buildroot}%{_libdir}/rpm/
143
+install -vm744 %{SOURCE4} %{buildroot}%{_bindir}
143 144
 
144 145
 pushd python
145 146
 python2 setup.py install --skip-build --prefix=%{_prefix} --root=%{buildroot}
... ...
@@ -154,7 +165,7 @@ rm -rf %{buildroot}
154 154
 
155 155
 %files
156 156
 %defattr(-,root,root)
157
-/bin/rpm
157
+%{_bindir}/rpm
158 158
 %{_bindir}/gendiff
159 159
 %{_bindir}/rpm2archive
160 160
 %{_bindir}/rpm2cpio
... ...
@@ -232,12 +243,15 @@ rm -rf %{buildroot}
232 232
 
233 233
 %{_libdir}/rpm/pythondeps.sh
234 234
 %{_libdir}/rpm/rpmdeps
235
+%{_libdir}/rpm/pythondistdeps.py
235 236
 
236 237
 %{_mandir}/man1/gendiff.1*
237 238
 %{_mandir}/man8/rpmbuild.8*
238 239
 %{_mandir}/man8/rpmdeps.8*
239 240
 %{_mandir}/man8/rpmspec.8*
240 241
 %{_mandir}/man8/rpmsign.8.gz
242
+%{_mandir}/man8/rpm-misc.8.gz
243
+%{_mandir}/man8/rpm-plugin-systemd-inhibit.8.gz
241 244
 
242 245
 %files devel
243 246
 %defattr(-,root,root)
... ...
@@ -259,9 +273,13 @@ rm -rf %{buildroot}
259 259
 %defattr(-,root,root)
260 260
 %{python3_sitelib}/*
261 261
 
262
+%files convert-db
263
+%defattr(-,root,root)
264
+%{_bindir}/convert_bdb_to_lmdb.sh
265
+
262 266
 %changelog
263
-*   Thu Dec 21 2017 Xiaolin Li <xiaolinl@vmware.com> 4.13.0.1-7
264
--   Fix CVE-2017-7501
267
+*   Fri Dec 15 2017 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 4.14.0-1
268
+-   Update to 4.14.0, remove bdb dependences and use lmdb.
265 269
 *   Wed Oct 04 2017 Alexey Makhalov <amakhalov@vmware.com> 4.13.0.1-6
266 270
 -   make python{,3}-rpm depend on current version of librpm
267 271
 *   Wed Jun 28 2017 Xiaolin Li <xiaolinl@vmware.com> 4.13.0.1-5
... ...
@@ -692,3 +692,11 @@ class PackageUtils(object):
692 692
         #    self.logger.error("Building rpm failed for " + specFile)
693 693
         #    raise Exception("RPM Build failed")
694 694
         return listRPMFiles, listSRPMFiles
695
+
696
+    #run db conversion. needs to be run in chroot.
697
+    #its important to do this after rpm operations from
698
+    #outside chroot is done.
699
+    def ensureLMDBForRPMDB(self, chrootID, logFile):
700
+        convertCmd= "convert_bdb_to_lmdb.sh"
701
+        chrootCmd=self.runInChrootCommand+" "+chrootID
702
+        CommandUtils().runCommandInShell(convertCmd, logFile, chrootCmd)
... ...
@@ -160,6 +160,11 @@ class ToolChainUtils(object):
160 160
             print(constants.perPackageToolChain[packageName])
161 161
             self.installCustomToolChainRPMS(chrootID, constants.perPackageToolChain[packageName],
162 162
                                             packageName)
163
+        #convert rpm db to lmdb (if required)
164
+        convertLogFile = self.logPath+"/rpmdbconvert.log"
165
+        pkgUtilsConvert=PackageUtils(self.logName,self.logPath)
166
+        pkgUtilsConvert.ensureLMDBForRPMDB(chrootID, convertLogFile)
167
+
163 168
 
164 169
     def installCustomToolChainRPMS(self, chrootID, listOfToolChainPkgs, packageName):
165 170
         self.logger.info("Installing package specific tool chain RPMs for " + packageName +
... ...
@@ -111,11 +111,11 @@ class constants(object):
111 111
         "openssl",
112 112
         "openssl-devel",
113 113
         "python2",
114
-        "libdb",
115 114
         "rpm",
116 115
         "groff",
117 116
         "man-pages",
118
-        "cpio"]
117
+        "cpio",
118
+        "lmdb"]
119 119
 
120 120
     # List or RPMS that will be installed in a chroot prior to build each
121 121
     # package. This list should be ordered by install order. On a stage1
... ...
@@ -214,10 +214,13 @@ class constants(object):
214 214
         "rpm-build",
215 215
         "rpm-devel",
216 216
         "rpm-libs",
217
+        "rpm-convert-db",
217 218
         "groff",
218 219
         "man-pages",
219 220
         "cpio",
220
-        "go"]
221
+        "go",
222
+        "lmdb",
223
+        "libdb-utils"]
221 224
 
222 225
     perPackageToolChain = dict.fromkeys(
223 226
         ["openjdk8",
... ...
@@ -3,8 +3,8 @@ noarch/man-pages-3.59-1.ph1.noarch.rpm
3 3
 noarch/apache-maven-3.3.9-4.ph1.noarch.rpm
4 4
 x86_64/python2-devel-2.7.11-1.ph1.x86_64.rpm
5 5
 x86_64/nspr-4.11-1.ph1.x86_64.rpm
6
-x86_64/rpm-4.13.0.1-5.ph2.x86_64.rpm
7
-x86_64/rpm-libs-4.13.0.1-5.ph2.x86_64.rpm
6
+x86_64/rpm-4.14.0-1.ph2.x86_64.rpm
7
+x86_64/rpm-libs-4.14.0-1.ph2.x86_64.rpm
8 8
 x86_64/binutils-devel-2.25.1-1.ph1.x86_64.rpm
9 9
 x86_64/nss-3.21-1.ph1.x86_64.rpm
10 10
 x86_64/mpfr-devel-3.1.3-1.ph1.x86_64.rpm
... ...
@@ -21,10 +21,10 @@ x86_64/readline-7.0-1.ph1.x86_64.rpm
21 21
 x86_64/gettext-0.19.5.1-1.ph1.x86_64.rpm
22 22
 x86_64/perl-5.22.1-2.ph1.x86_64.rpm
23 23
 x86_64/man-db-2.7.5-1.ph1.x86_64.rpm
24
-x86_64/elfutils-libelf-0.165-1.ph1.x86_64.rpm
24
+x86_64/elfutils-libelf-0.169-2.ph2.x86_64.rpm
25 25
 x86_64/gdbm-1.11-1.ph1.x86_64.rpm
26 26
 x86_64/autoconf-2.69-3.ph1.x86_64.rpm
27
-x86_64/rpm-devel-4.13.0.1-5.ph2.x86_64.rpm
27
+x86_64/rpm-devel-4.14.0-1.ph2.x86_64.rpm
28 28
 x86_64/file-5.24-1.ph1.x86_64.rpm
29 29
 x86_64/mpfr-3.1.3-1.ph1.x86_64.rpm
30 30
 x86_64/zlib-devel-1.2.8-2.ph1.x86_64.rpm
... ...
@@ -32,7 +32,7 @@ x86_64/libgcc-devel-5.3.0-1.ph1.x86_64.rpm
32 32
 x86_64/bison-3.0.4-1.ph1.x86_64.rpm
33 33
 x86_64/lua-5.3.2-1.ph1.x86_64.rpm
34 34
 x86_64/util-linux-2.27.1-1.ph1.x86_64.rpm
35
-x86_64/rpm-build-4.13.0.1-5.ph2.x86_64.rpm
35
+x86_64/rpm-build-4.14.0-1.ph2.x86_64.rpm
36 36
 x86_64/procps-ng-3.3.11-1.ph1.x86_64.rpm
37 37
 x86_64/coreutils-8.24-1.ph1.x86_64.rpm
38 38
 x86_64/util-linux-devel-2.27.1-1.ph1.x86_64.rpm
... ...
@@ -51,14 +51,14 @@ x86_64/sqlite-autoconf-3.11.0-1.ph1.x86_64.rpm
51 51
 x86_64/flex-2.5.39-1.ph1.x86_64.rpm
52 52
 x86_64/libstdc++-devel-5.3.0-1.ph1.x86_64.rpm
53 53
 x86_64/openssl-1.0.2g-1.ph1.x86_64.rpm
54
-x86_64/elfutils-0.165-1.ph1.x86_64.rpm
54
+x86_64/elfutils-0.169-2.ph2.x86_64.rpm
55 55
 x86_64/expat-2.1.0-1.ph1.x86_64.rpm
56 56
 x86_64/popt-1.16-1.ph1.x86_64.rpm
57 57
 x86_64/mpc-1.0.3-1.ph1.x86_64.rpm
58 58
 x86_64/bzip2-1.0.6-4.ph1.x86_64.rpm
59 59
 x86_64/glibc-2.22-3.ph1.x86_64.rpm
60 60
 x86_64/python2-2.7.11-1.ph1.x86_64.rpm
61
-x86_64/elfutils-devel-0.165-1.ph1.x86_64.rpm
61
+x86_64/elfutils-devel-0.169-2.ph2.x86_64.rpm
62 62
 x86_64/patch-2.7.5-1.ph1.x86_64.rpm
63 63
 x86_64/xz-5.2.2-1.ph1.x86_64.rpm
64 64
 x86_64/binutils-2.25.1-1.ph1.x86_64.rpm
... ...
@@ -66,7 +66,7 @@ x86_64/libgomp-devel-5.3.0-1.ph1.x86_64.rpm
66 66
 x86_64/bzip2-devel-1.0.6-4.ph1.x86_64.rpm
67 67
 x86_64/libgcc-5.3.0-1.ph1.x86_64.rpm
68 68
 x86_64/gzip-1.6-1.ph1.x86_64.rpm
69
-x86_64/elfutils-libelf-devel-0.165-1.ph1.x86_64.rpm
69
+x86_64/elfutils-libelf-devel-0.169-2.ph2.x86_64.rpm
70 70
 x86_64/openssl-devel-1.0.2g-1.ph1.x86_64.rpm
71 71
 x86_64/pkg-config-0.28-1.ph1.x86_64.rpm
72 72
 x86_64/popt-devel-1.16-1.ph1.x86_64.rpm
... ...
@@ -85,3 +85,7 @@ x86_64/go-1.4.2-5.ph1.x86_64.rpm
85 85
 x86_64/filesystem-1.0-7.ph1.x86_64.rpm
86 86
 x86_64/libdb-5.3.28-1.ph2dev.x86_64.rpm
87 87
 x86_64/libdb-devel-5.3.28-1.ph2dev.x86_64.rpm
88
+x86_64/libdb-utils-5.3.28-3.ph2.x86_64.rpm
89
+x86_64/rpm-convert-db-4.14.0-1.ph2.x86_64.rpm
90
+x86_64/lmdb-0.9.21-1.ph2.x86_64.rpm
91
+x86_64/lmdb-devel-0.9.21-1.ph2.x86_64.rpm