diff options
author | Mark Hatle <mark.hatle@windriver.com> | 2011-03-16 17:15:09 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-03-17 00:18:14 +0000 |
commit | 275241ea681a8a6019b89c41ec39d65c45b851f3 (patch) | |
tree | 4ce5734d1caf268068aa8d5baedee8687aa6c78a /meta/recipes-extended/sat-solver | |
parent | 129c62433380a314dadffafb367c5bd6f7dccfaf (diff) | |
download | poky-275241ea681a8a6019b89c41ec39d65c45b851f3.tar.gz |
sat-solver: Fix solution DB generation and general cleanup
Uprev sat-solver to the latest git version. This corrects the solv db
generation with RPM5.
Refactor the patches for RPM5 support, cleaning up components of the
cmake.patch for submission upstream. (Also fix a problem remaining
in the upstream with a mismatched function name.)
(From OE-Core rev: 89a5ad96eef411dccea817a6c37cb1e24840fdc1)
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-extended/sat-solver')
5 files changed, 77 insertions, 138 deletions
diff --git a/meta/recipes-extended/sat-solver/sat-solver/cmake.patch b/meta/recipes-extended/sat-solver/sat-solver/cmake.patch index 854bd40d75..52319f0e4f 100644 --- a/meta/recipes-extended/sat-solver/sat-solver/cmake.patch +++ b/meta/recipes-extended/sat-solver/sat-solver/cmake.patch | |||
@@ -1,59 +1,15 @@ | |||
1 | check rpm | 1 | Enable debugging for all builds |
2 | not building docs (need oxygen) | 2 | not building docs (need oxygen) |
3 | 3 | ||
4 | 8/19/2010 - created by Qing He <qing.he@intel.com> | 4 | 8/19/2010 - created by Qing He <qing.he@intel.com> |
5 | 1/24/2011 - Disable Fedora/Debian checking/settings by Mark Hatle <mark.hatle@windriver.com> | 5 | 1/24/2011 - Disable Fedora/Debian checking/settings by Mark Hatle <mark.hatle@windriver.com> |
6 | 3/15/2011 - Updated to newer version of sat-solver by Mark Hatle <mark.hatle@windriver.com> | 6 | 3/15/2011 - Updated to newer version of sat-solver by Mark Hatle <mark.hatle@windriver.com> |
7 | 3/16/2011 - Split original patch and simplify by Mark Hatle <mark.hatle@windriver.com> | ||
7 | 8 | ||
8 | diff -ur git.orig/CMakeLists.txt git/CMakeLists.txt | 9 | diff -ur git.orig2/CMakeLists.txt git/CMakeLists.txt |
9 | --- git.orig/CMakeLists.txt 2011-03-15 17:14:22.000000000 -0500 | 10 | --- git.orig2/CMakeLists.txt 2011-03-16 16:29:43.532032285 -0500 |
10 | +++ git/CMakeLists.txt 2011-03-15 17:20:09.648880770 -0500 | 11 | +++ git/CMakeLists.txt 2011-03-16 16:32:59.982034501 -0500 |
11 | @@ -35,22 +35,15 @@ | 12 | @@ -177,7 +177,7 @@ |
12 | FIND_PACKAGE(Check REQUIRED) | ||
13 | FIND_PACKAGE(ZLIB REQUIRED) | ||
14 | |||
15 | -IF ( FEDORA ) | ||
16 | -MESSAGE(STATUS "Building for Fedora") | ||
17 | -ADD_DEFINITIONS( -DFEDORA ) | ||
18 | -ENDIF ( FEDORA) | ||
19 | - | ||
20 | -IF ( DEBIAN ) | ||
21 | -MESSAGE(STATUS "Building for Debian") | ||
22 | -ADD_DEFINITIONS( -DDEBIAN -DDEBIAN_SEMANTICS) | ||
23 | -ENDIF ( DEBIAN ) | ||
24 | - | ||
25 | IF ( MULTI_SEMANTICS ) | ||
26 | MESSAGE(STATUS "Enabling multi dist support") | ||
27 | ADD_DEFINITIONS( -DMULTI_SEMANTICS) | ||
28 | ENDIF ( MULTI_SEMANTICS ) | ||
29 | |||
30 | -IF ( NOT DEBIAN ) | ||
31 | +FIND_PACKAGE(PkgConfig REQUIRED) | ||
32 | +PKG_CHECK_MODULES(RPM REQUIRED rpm) | ||
33 | +INCLUDE_DIRECTORIES( ${RPM_INCLUDE_DIRS} ) | ||
34 | + | ||
35 | FIND_LIBRARY(RPMDB_LIBRARY NAMES rpmdb) | ||
36 | IF ( NOT RPMDB_LIBRARY ) | ||
37 | FIND_LIBRARY(RPMDB_LIBRARY NAMES rpm) | ||
38 | @@ -59,13 +52,14 @@ | ||
39 | IF ( RPMIO_LIBRARY ) | ||
40 | SET( RPMDB_LIBRARY ${RPMIO_LIBRARY} ${RPMDB_LIBRARY} ) | ||
41 | ENDIF ( RPMIO_LIBRARY ) | ||
42 | -IF ( FEDORA ) | ||
43 | +FIND_LIBRARY(RPMMISC_LIBRARY NAMES rpmmisc) | ||
44 | +IF ( RPMMISC_LIBRARY ) | ||
45 | +SET( RPMDB_LIBRARY ${RPMMISC_LIBRARY} ${RPMDB_LIBRARY} ) | ||
46 | +ENDIF ( RPMMISC_LIBRARY ) | ||
47 | FIND_LIBRARY(DB_LIBRARY NAMES db) | ||
48 | IF ( DB_LIBRARY ) | ||
49 | SET( RPMDB_LIBRARY ${DB_LIBRARY} ${RPMDB_LIBRARY} ) | ||
50 | ENDIF ( DB_LIBRARY ) | ||
51 | -ENDIF ( FEDORA ) | ||
52 | -ENDIF ( NOT DEBIAN ) | ||
53 | |||
54 | INCLUDE ( CheckFunctionExists ) | ||
55 | INCLUDE ( TestBigEndian ) | ||
56 | @@ -164,7 +158,7 @@ | ||
57 | 13 | ||
58 | MESSAGE(STATUS "Looking modules in ${CMAKE_MODULE_PATH}") | 14 | MESSAGE(STATUS "Looking modules in ${CMAKE_MODULE_PATH}") |
59 | 15 | ||
@@ -62,7 +18,7 @@ diff -ur git.orig/CMakeLists.txt git/CMakeLists.txt | |||
62 | set ( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -g -O3" ) | 18 | set ( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -g -O3" ) |
63 | set ( CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -g3 -O0" ) | 19 | set ( CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -g3 -O0" ) |
64 | 20 | ||
65 | @@ -173,7 +167,7 @@ | 21 | @@ -186,7 +186,7 @@ |
66 | ADD_SUBDIRECTORY(tools) | 22 | ADD_SUBDIRECTORY(tools) |
67 | ADD_SUBDIRECTORY(tests) | 23 | ADD_SUBDIRECTORY(tests) |
68 | ADD_SUBDIRECTORY(examples) | 24 | ADD_SUBDIRECTORY(examples) |
diff --git a/meta/recipes-extended/sat-solver/sat-solver/rpm5-solvdb.patch b/meta/recipes-extended/sat-solver/sat-solver/rpm5-solvdb.patch deleted file mode 100644 index 8ce1b150c5..0000000000 --- a/meta/recipes-extended/sat-solver/sat-solver/rpm5-solvdb.patch +++ /dev/null | |||
@@ -1,30 +0,0 @@ | |||
1 | sat-solver rpmdb based solv database construction | ||
2 | |||
3 | The first time the database is created on an RPM5 system it works | ||
4 | correctly. However any subsequent rebuilds cause an empty database to | ||
5 | occur. | ||
6 | |||
7 | The following is from Michael Schroeder <mls@suse.de>: | ||
8 | > rpmdb2solv contains a hack that makes it use the unchanged already | ||
9 | > converted packages. To do this, it needs to get the database id | ||
10 | > for every installed packages by reading the "Name" index. This | ||
11 | > somehow doesn't seem to work with rpm5. | ||
12 | > | ||
13 | > As a workaround you can add a "ref = 0;" line at the top of the | ||
14 | > repo_add_rpmdb() function in ext/repo_rpmdb.c. | ||
15 | |||
16 | Signed-off-by: Mark Hatle <mark.hatle@windriver.com> | ||
17 | |||
18 | diff -ur git.orig/ext/repo_rpmdb.c git/ext/repo_rpmdb.c | ||
19 | --- git.orig/ext/repo_rpmdb.c 2011-03-16 09:43:50.470008215 -0500 | ||
20 | +++ git/ext/repo_rpmdb.c 2011-03-16 09:47:55.503989694 -0500 | ||
21 | @@ -1344,6 +1344,9 @@ | ||
22 | memset(&dbkey, 0, sizeof(dbkey)); | ||
23 | memset(&dbdata, 0, sizeof(dbdata)); | ||
24 | |||
25 | + /* Workaround for RPM 5 database construction */ | ||
26 | + ref = 0; | ||
27 | + | ||
28 | if (!rootdir) | ||
29 | rootdir = ""; | ||
30 | |||
diff --git a/meta/recipes-extended/sat-solver/sat-solver/rpm5.patch b/meta/recipes-extended/sat-solver/sat-solver/rpm5.patch deleted file mode 100644 index 5ab632155d..0000000000 --- a/meta/recipes-extended/sat-solver/sat-solver/rpm5.patch +++ /dev/null | |||
@@ -1,53 +0,0 @@ | |||
1 | fix rpm5 build | ||
2 | |||
3 | 8/19/2010 - created by Qing He <qing.he@intel.com> | ||
4 | |||
5 | |||
6 | pgpDigNew/pgpDigFree has changed in RPM 5.4.0 | ||
7 | |||
8 | Signed-off-by: Qing He <qing.he@intel.com> | ||
9 | |||
10 | diff --git a/ext/repo_rpmdb.c b/ext/repo_rpmdb.c | ||
11 | index 34f2b65..3c6ab9a 100644 | ||
12 | --- a/ext/repo_rpmdb.c | ||
13 | +++ b/ext/repo_rpmdb.c | ||
14 | @@ -21,10 +21,11 @@ | ||
15 | #include <string.h> | ||
16 | #include <unistd.h> | ||
17 | #include <assert.h> | ||
18 | +#include <stdint.h> | ||
19 | |||
20 | #include <rpm/rpmio.h> | ||
21 | #include <rpm/rpmpgp.h> | ||
22 | -#include <rpm/header.h> | ||
23 | +//#include <rpm/header.h> | ||
24 | #include <rpm/rpmdb.h> | ||
25 | |||
26 | #ifndef DB_CREATE | ||
27 | @@ -2466,7 +2467,7 @@ rpm_byrpmh(Header h, void **statep) | ||
28 | int sigdsize, sigcnt, l; | ||
29 | RpmHead *rpmhead; | ||
30 | |||
31 | - uh = headerUnload(h); | ||
32 | + uh = headerUnload(h, NULL); | ||
33 | if (!uh) | ||
34 | return 0; | ||
35 | sigcnt = getu32(uh); | ||
36 | @@ -2982,7 +2983,7 @@ pubkey2solvable(Solvable *s, Repodata *data, char *pubkey) | ||
37 | parsekeydata(s, data, pkts, pktsl); | ||
38 | /* only rpm knows how to do the release calculation, we don't dare | ||
39 | * to recreate all the bugs */ | ||
40 | - dig = pgpNewDig(); | ||
41 | + dig = pgpDigNew(RPMVSF_DEFAULT, 0); | ||
42 | (void) pgpPrtPkts(pkts, pktsl, dig, 0); | ||
43 | btime = dig->pubkey.time[0] << 24 | dig->pubkey.time[1] << 16 | dig->pubkey.time[2] << 8 | dig->pubkey.signid[3]; | ||
44 | sprintf(evrbuf, "%02x%02x%02x%02x-%02x%02x%02x%02x", dig->pubkey.signid[4], dig->pubkey.signid[5], dig->pubkey.signid[6], dig->pubkey.signid[7], dig->pubkey.time[0], dig->pubkey.time[1], dig->pubkey.time[2], dig->pubkey.time[3]); | ||
45 | @@ -2996,7 +2997,7 @@ pubkey2solvable(Solvable *s, Repodata *data, char *pubkey) | ||
46 | repodata_set_str(data, s - s->repo->pool->solvables, PUBKEY_KEYID, keyid); | ||
47 | if (dig->pubkey.userid) | ||
48 | setutf8string(data, s - s->repo->pool->solvables, SOLVABLE_SUMMARY, dig->pubkey.userid); | ||
49 | - pgpFreeDig(dig); | ||
50 | + (void) pgpDigFree(dig); | ||
51 | sat_free((void *)pkts); | ||
52 | return 1; | ||
53 | } | ||
diff --git a/meta/recipes-extended/sat-solver/sat-solver/sat-solver_rpm5.patch b/meta/recipes-extended/sat-solver/sat-solver/sat-solver_rpm5.patch new file mode 100644 index 0000000000..1776f6cd59 --- /dev/null +++ b/meta/recipes-extended/sat-solver/sat-solver/sat-solver_rpm5.patch | |||
@@ -0,0 +1,67 @@ | |||
1 | Add RPM5 configuration support | ||
2 | |||
3 | Update the cmake configuration to detect additional files needed by RPM5. | ||
4 | |||
5 | Original work by Qing He <qing.he@intel.com>. | ||
6 | |||
7 | Merged and updated to make this more likely to be accepted upstream. | ||
8 | |||
9 | Signed-off-by: Mark Hatle <mark.hatle@windriver.com> | ||
10 | |||
11 | diff -ur git.orig/CMakeLists.txt git/CMakeLists.txt | ||
12 | --- git.orig/CMakeLists.txt 2011-03-16 16:16:29.152786178 -0500 | ||
13 | +++ git/CMakeLists.txt 2011-03-16 16:29:43.532032285 -0500 | ||
14 | @@ -50,7 +50,16 @@ | ||
15 | ADD_DEFINITIONS( -DMULTI_SEMANTICS) | ||
16 | ENDIF ( MULTI_SEMANTICS ) | ||
17 | |||
18 | -IF ( NOT DEBIAN ) | ||
19 | +if ( RPM5 ) | ||
20 | +MESSAGE(STATUS "Enabling RPM 5 support") | ||
21 | +ADD_DEFINITIONS( -DRPM5) | ||
22 | + | ||
23 | +FIND_PACKAGE(PkgConfig REQUIRED) | ||
24 | +PKG_CHECK_MODULES(RPM REQUIRED rpm) | ||
25 | +INCLUDE_DIRECTORIES( ${RPM_INCLUDE_DIRS} ) | ||
26 | +ENDIF ( RPM5 ) | ||
27 | + | ||
28 | +IF ( RPM5 OR NOT DEBIAN ) | ||
29 | FIND_LIBRARY(RPMDB_LIBRARY NAMES rpmdb) | ||
30 | IF ( NOT RPMDB_LIBRARY ) | ||
31 | FIND_LIBRARY(RPMDB_LIBRARY NAMES rpm) | ||
32 | @@ -59,13 +68,17 @@ | ||
33 | IF ( RPMIO_LIBRARY ) | ||
34 | SET( RPMDB_LIBRARY ${RPMIO_LIBRARY} ${RPMDB_LIBRARY} ) | ||
35 | ENDIF ( RPMIO_LIBRARY ) | ||
36 | -IF ( FEDORA ) | ||
37 | +FIND_LIBRARY(RPMMISC_LIBRARY NAMES rpmmisc) | ||
38 | +IF ( RPMMISC_LIBRARY ) | ||
39 | +SET ( RPMDB_LIBRARY ${RPMMISC_LIBRARY} ${RPMDB_LIBRARY} ) | ||
40 | +ENDIF ( RPMMISC_LIBRARY ) | ||
41 | +IF ( RPM5 OR FEDORA ) | ||
42 | FIND_LIBRARY(DB_LIBRARY NAMES db) | ||
43 | IF ( DB_LIBRARY ) | ||
44 | SET( RPMDB_LIBRARY ${DB_LIBRARY} ${RPMDB_LIBRARY} ) | ||
45 | ENDIF ( DB_LIBRARY ) | ||
46 | -ENDIF ( FEDORA ) | ||
47 | -ENDIF ( NOT DEBIAN ) | ||
48 | +ENDIF ( RPM5 OR FEDORA ) | ||
49 | +ENDIF ( RPM5 OR NOT DEBIAN ) | ||
50 | |||
51 | INCLUDE ( CheckFunctionExists ) | ||
52 | INCLUDE ( TestBigEndian ) | ||
53 | diff -ur git.orig/ext/repo_rpmdb.c git/ext/repo_rpmdb.c | ||
54 | --- git.orig/ext/repo_rpmdb.c 2011-03-16 18:03:55.401907738 -0500 | ||
55 | +++ git/ext/repo_rpmdb.c 2011-03-16 18:04:47.472989651 -0500 | ||
56 | @@ -3039,7 +3039,11 @@ | ||
57 | repodata_set_str(data, s - s->repo->pool->solvables, PUBKEY_KEYID, keyid); | ||
58 | if (dig->pubkey.userid) | ||
59 | setutf8string(data, s - s->repo->pool->solvables, SOLVABLE_SUMMARY, dig->pubkey.userid); | ||
60 | +#ifndef RPM5 | ||
61 | (void)pgpFreeDig(dig); | ||
62 | +#else | ||
63 | + (void)pgpDigFree(dig); | ||
64 | +#endif | ||
65 | sat_free((void *)pkts); | ||
66 | return 1; | ||
67 | } | ||
diff --git a/meta/recipes-extended/sat-solver/sat-solver_git.bb b/meta/recipes-extended/sat-solver/sat-solver_git.bb index a6519d5921..ba5af67f70 100644 --- a/meta/recipes-extended/sat-solver/sat-solver_git.bb +++ b/meta/recipes-extended/sat-solver/sat-solver_git.bb | |||
@@ -7,12 +7,11 @@ LIC_FILES_CHKSUM = "file://LICENSE.BSD;md5=62272bd11c97396d4aaf1c41bc11f7d8" | |||
7 | DEPENDS = "libcheck rpm zlib expat db" | 7 | DEPENDS = "libcheck rpm zlib expat db" |
8 | 8 | ||
9 | PV = "0.0-git${SRCPV}" | 9 | PV = "0.0-git${SRCPV}" |
10 | PR = "r5" | 10 | PR = "r6" |
11 | 11 | ||
12 | SRC_URI = "git://gitorious.org/opensuse/sat-solver.git;protocol=git \ | 12 | SRC_URI = "git://gitorious.org/opensuse/sat-solver.git;protocol=git \ |
13 | file://sat-solver_rpm5.patch \ | ||
13 | file://cmake.patch \ | 14 | file://cmake.patch \ |
14 | file://rpm5.patch \ | ||
15 | file://rpm5-solvdb.patch \ | ||
16 | file://db5.patch \ | 15 | file://db5.patch \ |
17 | file://builtin-arch.patch;apply=no \ | 16 | file://builtin-arch.patch;apply=no \ |
18 | file://no-builtin-arch.patch;apply=no \ | 17 | file://no-builtin-arch.patch;apply=no \ |
@@ -20,7 +19,7 @@ SRC_URI = "git://gitorious.org/opensuse/sat-solver.git;protocol=git \ | |||
20 | 19 | ||
21 | S = "${WORKDIR}/git" | 20 | S = "${WORKDIR}/git" |
22 | 21 | ||
23 | EXTRA_OECMAKE += "-DLIB=lib" | 22 | EXTRA_OECMAKE += "-DLIB=lib -DRPM5=RPM5" |
24 | 23 | ||
25 | inherit cmake pkgconfig | 24 | inherit cmake pkgconfig |
26 | 25 | ||