Merge branch 'master' into next

This commit is contained in:
Arne Fitzenreiter
2011-05-10 19:20:43 +02:00
10 changed files with 728 additions and 8 deletions

View File

@@ -0,0 +1,26 @@
diff -Nur old/CMakeLists.txt new/CMakeLists.txt
--- old/CMakeLists.txt 2011-04-10 23:55:09.506257000 +0200
+++ new/CMakeLists.txt 2011-04-10 23:46:30.612257002 +0200
@@ -32,7 +32,7 @@
INCLUDE( ${CMAKE_SOURCE_DIR}/VERSION.cmake )
FIND_PACKAGE(EXPAT REQUIRED)
-FIND_PACKAGE(Check REQUIRED)
+#FIND_PACKAGE(Check REQUIRED)
FIND_PACKAGE(ZLIB REQUIRED)
IF ( FEDORA )
@@ -190,10 +190,10 @@
ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(ext)
-ADD_SUBDIRECTORY(tools)
-ADD_SUBDIRECTORY(tests)
-ADD_SUBDIRECTORY(examples)
-ADD_SUBDIRECTORY(doc)
+#ADD_SUBDIRECTORY(tools)
+#ADD_SUBDIRECTORY(tests)
+#ADD_SUBDIRECTORY(examples)
+#ADD_SUBDIRECTORY(doc)
MESSAGE(STATUS "version: ${VERSION}")

View File

@@ -0,0 +1,439 @@
>From a42d7e17fa3e39a8306126c19f1b3b54f1fdd79e Mon Sep 17 00:00:00 2001
From: Michael Tremer <michael.tremer@ipfire.org>
Date: Thu, 21 Apr 2011 16:40:11 +0200
Subject: [PATCH] Create linker-scripts that do only export the needed symbols
of libsatsolver{,ext}.
See these posts for reference:
http://lists.opensuse.org/zypp-devel/2011-04/msg00012.html
http://lists.opensuse.org/zypp-devel/2011-04/msg00014.html
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
ext/CMakeLists.txt | 1 +
ext/libsatsolverext.ver | 25 ++++
src/CMakeLists.txt | 1 +
src/libsatsolver.ver | 355 +++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 382 insertions(+), 0 deletions(-)
create mode 100644 ext/libsatsolverext.ver
create mode 100644 src/libsatsolver.ver
diff --git a/ext/CMakeLists.txt b/ext/CMakeLists.txt
index 68e1c3c..d51a43b 100644
--- a/ext/CMakeLists.txt
+++ b/ext/CMakeLists.txt
@@ -21,6 +21,7 @@ SET(libsatsolverext_HEADERS
tools_util.h repo_deb.h sat_xfopen.h)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+SET(CMAKE_SHARED_LINKER_FLAGS "${LINK_FLAGS} -Wl,--version-script=${satsolver_SOURCE_DIR}/ext/libsatsolverext.ver")
INSTALL(FILES ${libsatsolverext_HEADERS} DESTINATION "${CMAKE_INSTALL_PREFIX}/include/satsolver")
INSTALL(TARGETS satsolverext LIBRARY DESTINATION ${LIB_INSTALL_DIR} ARCHIVE DESTINATION ${LIB_INSTALL_DIR})
diff --git a/ext/libsatsolverext.ver b/ext/libsatsolverext.ver
new file mode 100644
index 0000000..4869d37
--- /dev/null
+++ b/ext/libsatsolverext.ver
@@ -0,0 +1,25 @@
+EXT1.0 {
+ global:
+ repo_add_code11_products;
+ repo_add_content;
+ repo_add_deb;
+ repo_add_debdb;
+ repo_add_debpackages;
+ repo_add_debs;
+ repo_add_deltainfoxml;
+ repo_add_helix;
+ repo_add_products;
+ repo_add_releasefile_products;
+ repo_add_repomdxml;
+ repo_add_rpmmd;
+ repo_add_susetags;
+ repo_add_updateinfoxml;
+ repo_add_zyppdb_products;
+ repodata_write;
+ repo_write;
+ repo_write_stdkeyfilter;
+ sat_xfopen;
+ sat_xfopen_fd;
+ local:
+ *;
+};
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6a14d10..b54d01d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -20,6 +20,7 @@ SET(libsatsolver_HEADERS
chksum.h md5.h sha1.h sha2.h ${CMAKE_BINARY_DIR}/src/satversion.h)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+SET(CMAKE_SHARED_LINKER_FLAGS "${LINK_FLAGS} -Wl,--version-script=${satsolver_SOURCE_DIR}/src/libsatsolver.ver")
INSTALL(FILES ${libsatsolver_HEADERS} DESTINATION "${CMAKE_INSTALL_PREFIX}/include/satsolver")
INSTALL(TARGETS satsolver LIBRARY DESTINATION ${LIB_INSTALL_DIR} ARCHIVE DESTINATION ${LIB_INSTALL_DIR})
diff --git a/src/libsatsolver.ver b/src/libsatsolver.ver
new file mode 100644
index 0000000..dab3576
--- /dev/null
+++ b/src/libsatsolver.ver
@@ -0,0 +1,355 @@
+SAT1.0 {
+ global:
+ dataiterator_clonepos;
+ dataiterator_entersub;
+ dataiterator_free;
+ dataiterator_init;
+ dataiterator_init_clone;
+ dataiterator_jump_to_repo;
+ dataiterator_jump_to_solvid;
+ dataiterator_match;
+ dataiterator_prepend_keyname;
+ dataiterator_seek;
+ dataiterator_set_keyname;
+ dataiterator_set_match;
+ dataiterator_setpos;
+ dataiterator_setpos_parent;
+ dataiterator_set_search;
+ dataiterator_skip_attribute;
+ dataiterator_skip_repo;
+ dataiterator_skip_solvable;
+ dataiterator_step;
+ datamatcher_free;
+ datamatcher_init;
+ datamatcher_match;
+ data_read_idarray;
+ data_read_rel_idarray;
+ data_skip_key;
+ dep2str;
+ dirpool_add_dir;
+ dirpool_free;
+ dirpool_init;
+ dirpool_make_dirtraverse;
+ evrcmp;
+ evrmatch;
+ id2str;
+ map_free;
+ map_grow;
+ map_init;
+ map_init_clone;
+ policy_create_obsolete_index;
+ policy_filter_unwanted;
+ policy_findupdatepackages;
+ policy_illegal2str;
+ policy_illegal_archchange;
+ policy_illegal_vendorchange;
+ policy_is_illegal;
+ pool_add_fileconflicts_deps;
+ pool_addfileprovides;
+ pool_addfileprovides_ids;
+ pool_addrelproviders;
+ pool_add_solvable;
+ pool_add_solvable_block;
+ pool_alloctmpspace;
+ pool_arch2color_slow;
+ pool_bin2hex;
+ pool_calc_duchanges;
+ pool_calc_installsizechange;
+ pool_clear_pos;
+ pool_create;
+ pool_create_state_maps;
+ pool_createwhatprovides;
+ pool_debug;
+ pool_free;
+ pool_freeidhashes;
+ pool_free_solvable_block;
+ pool_freetmpspace;
+ pool_freewhatprovides;
+ pool_id2langid;
+ pool_job2str;
+ pool_lookup_bin_checksum;
+ pool_lookup_checksum;
+ pool_lookup_id;
+ pool_lookup_num;
+ pool_lookup_str;
+ pool_lookup_void;
+ pool_match_dep;
+ pool_match_nevr_rel;
+ pool_queuetowhatprovides;
+ pool_search;
+ pool_setarch;
+ pool_setarchpolicy;
+ pool_setdebuglevel;
+ pool_set_installed;
+ pool_set_languages;
+ pool_setvendorclasses;
+ pool_shrink_rels;
+ pool_shrink_strings;
+ pool_tmpappend;
+ pool_tmpjoin;
+ pool_trivial_installable;
+ pool_trivial_installable_noobsoletesmap;
+ pool_vendor2mask;
+ prune_best_arch_name_version;
+ prune_to_best_arch;
+ prune_to_best_version;
+ queue_alloc_one;
+ queue_alloc_one_head;
+ queue_delete;
+ queue_delete2;
+ queue_deleten;
+ queue_free;
+ queue_init;
+ queue_init_buffer;
+ queue_init_clone;
+ queue_insert;
+ queue_insert2;
+ queue_insertn;
+ rel2id;
+ repo_addid;
+ repo_addid_dep;
+ repo_add_poolstr_array;
+ repo_add_repodata;
+ repo_add_solv;
+ repo_add_solv_flags;
+ repo_create;
+ repodata_add_dirnumnum;
+ repodata_add_dirstr;
+ repodata_add_fixarray;
+ repodata_add_flexarray;
+ repodata_add_idarray;
+ repodata_add_poolstr_array;
+ repodata_chk2str;
+ repodata_create;
+ repodata_create_stubs;
+ repodata_delete;
+ repodata_delete_uninternalized;
+ repodata_dir2str;
+ repodata_disable_paging;
+ repodata_empty;
+ repodata_extend;
+ repodata_extend_block;
+ repodata_filelistfilter_matches;
+ repodata_free;
+ repodata_freedata;
+ repodata_free_schemahash;
+ repodata_globalize_id;
+ repodata_initdata;
+ repodata_internalize;
+ repodata_key2id;
+ repodata_localize_id;
+ repodata_lookup_bin_checksum;
+ repodata_lookup_id;
+ repodata_lookup_idarray;
+ repodata_lookup_num;
+ repodata_lookup_str;
+ repodata_lookup_type;
+ repodata_lookup_void;
+ repodata_merge_attrs;
+ repodata_merge_some_attrs;
+ repodata_new_handle;
+ repodata_schema2id;
+ repodata_search;
+ repodata_set_binary;
+ repodata_set_bin_checksum;
+ repodata_set_checksum;
+ repodata_set_constant;
+ repodata_set_constantid;
+ repodata_set_id;
+ repodata_set_idarray;
+ repodata_set_location;
+ repodata_set_num;
+ repodata_set_poolstr;
+ repodata_setpos_kv;
+ repodata_set_str;
+ repodata_set_void;
+ repodata_shrink;
+ repodata_str2dir;
+ repodata_stringify;
+ repo_disable_paging;
+ repo_empty;
+ repo_fix_conflicts;
+ repo_fix_supplements;
+ repo_free;
+ repo_freeallrepos;
+ repo_free_solvable_block;
+ repo_internalize;
+ repo_last_repodata;
+ repo_lookup_bin_checksum;
+ repo_lookup_checksum;
+ repo_lookup_id;
+ repo_lookup_idarray;
+ repo_lookup_num;
+ repo_lookup_str;
+ repo_lookup_type;
+ repo_lookup_void;
+ repo_matchvalue;
+ repopagestore_compress_page;
+ repopagestore_disable_paging;
+ repopagestore_free;
+ repopagestore_init;
+ repopagestore_load_page_range;
+ repopagestore_read_or_setup_pages;
+ repo_reserve_ids;
+ repo_search;
+ repo_set_id;
+ repo_set_num;
+ repo_set_poolstr;
+ repo_set_str;
+ repo_sidedata_create;
+ repo_sidedata_extend;
+ sat_bin2hex;
+ sat_calloc;
+ sat_chksum_add;
+ sat_chksum_create;
+ sat_chksum_create_from_bin;
+ sat_chksum_free;
+ sat_chksum_get;
+ sat_chksum_get_type;
+ sat_chksum_isfinished;
+ sat_chksum_str2type;
+ sat_chksum_type2str;
+ sat_dupappend;
+ sat_dupjoin;
+ sat_free;
+ sat_hex2bin;
+ sat_malloc;
+ sat_malloc2;
+ sat_MD5_Final;
+ sat_MD5_Init;
+ sat_MD5_Update;
+ sat_oom;
+ sat_realloc;
+ sat_realloc2;
+ sat_SHA1_Final;
+ sat_SHA1_Init;
+ sat_SHA1_Update;
+ sat_SHA256_Data;
+ sat_SHA256_End;
+ sat_SHA256_Final;
+ sat_SHA256_Init;
+ sat_SHA256_Update;
+ sat_SHA384_Data;
+ sat_SHA384_End;
+ sat_SHA384_Final;
+ sat_SHA384_Init;
+ sat_SHA384_Update;
+ sat_SHA512_Data;
+ sat_SHA512_End;
+ sat_SHA512_Final;
+ sat_SHA512_Init;
+ sat_SHA512_Update;
+ sat_sort;
+ sat_timems;
+ sat_version;
+ sat_version_major;
+ sat_version_minor;
+ sat_version_patch;
+ solvable2str;
+ solvable_get_location;
+ solvable_identical;
+ solvable_lookup_bin_checksum;
+ solvable_lookup_bool;
+ solvable_lookup_checksum;
+ solvable_lookup_id;
+ solvable_lookup_idarray;
+ solvable_lookup_num;
+ solvable_lookup_str;
+ solvable_lookup_str_lang;
+ solvable_lookup_str_poollang;
+ solvable_lookup_void;
+ solvable_selfprovidedep;
+ solvable_trivial_installable_map;
+ solvable_trivial_installable_queue;
+ solvable_trivial_installable_repo;
+ solver_addchoicerules;
+ solver_addduprules;
+ solver_addinfarchrules;
+ solver_addrpmrulesforsolvable;
+ solver_addrpmrulesforupdaters;
+ solver_addrpmrulesforweak;
+ solver_addrule;
+ solver_addupdaterule;
+ solver_allruleinfos;
+ solver_calc_duchanges;
+ solver_calc_installsizechange;
+ solver_calculate_noobsmap;
+ solver_create;
+ solver_create_decisions_obsoletesmap;
+ solver_createdupmaps;
+ solver_dep_installed;
+ solver_disablechoicerules;
+ solver_disablepolicyrules;
+ solver_disableproblem;
+ solver_enableproblem;
+ solver_findallproblemrules;
+ solver_findproblemrule;
+ solver_free;
+ solver_freedupmaps;
+ solver_next_problem;
+ solver_next_solution;
+ solver_next_solutionelement;
+ solver_prepare_solutions;
+ solver_printallsolutions;
+ solver_printcompleteprobleminfo;
+ solver_printdecisionq;
+ solver_printdecisions;
+ solver_printproblem;
+ solver_printprobleminfo;
+ solver_printproblemruleinfo;
+ solver_printrule;
+ solver_printruleclass;
+ solver_printruleelement;
+ solver_printsolution;
+ solver_printtransaction;
+ solver_printtrivial;
+ solver_printwatches;
+ solver_problem_count;
+ solver_problemruleinfo;
+ solver_problemruleinfo2str;
+ solver_reenablepolicyrules;
+ solver_reset;
+ solver_ruleinfo;
+ solver_run_sat;
+ solver_samerule;
+ solver_select2str;
+ solver_solution_count;
+ solver_solutionelement2str;
+ solver_solutionelement_count;
+ solver_solve;
+ solver_splitprovides;
+ solver_take_solution;
+ solver_take_solutionelement;
+ solver_trivial_installable;
+ solver_unifyrules;
+ str2id;
+ strn2id;
+ stringpool_clone;
+ stringpool_free;
+ stringpool_freehash;
+ stringpool_init;
+ stringpool_init_empty;
+ stringpool_shrink;
+ stringpool_str2id;
+ stringpool_strn2id;
+ transaction_add_obsoleted;
+ transaction_all_obs_pkgs;
+ transaction_calc_duchanges;
+ transaction_calc_installsizechange;
+ transaction_calculate;
+ transaction_check_order;
+ transaction_classify;
+ transaction_classify_pkgs;
+ transaction_free;
+ transaction_free_orderdata;
+ transaction_init;
+ transaction_init_clone;
+ transaction_installedresult;
+ transaction_obs_pkg;
+ transaction_order;
+ transaction_order_add_choices;
+ transaction_type;
+ vercmp;
+ local:
+ *;
+};
--
1.7.4.4

View File

@@ -0,0 +1,94 @@
>From 1f9659b55013f222046b9d161fd5a0f2fc399cb8 Mon Sep 17 00:00:00 2001
From: Michael Tremer <michael.tremer@ipfire.org>
Date: Thu, 21 Apr 2011 12:48:41 +0200
Subject: [PATCH] Make libsatsolver{,ext} a versioned shared lib.
Most distributions only do accept shared libraries because of
relro and hardening stuff.
Previously, libsatsolver was statically compiled because the ABI
was assumed to be changed from time to time but has now become
very stable.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
ext/CMakeLists.txt | 6 +++++-
src/CMakeLists.txt | 6 +++++-
tools/CMakeLists.txt | 12 ++++++------
3 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/ext/CMakeLists.txt b/ext/CMakeLists.txt
index 8e71eee..68e1c3c 100644
--- a/ext/CMakeLists.txt
+++ b/ext/CMakeLists.txt
@@ -8,7 +8,11 @@ SET(libsatsolverext_SRCS
${libsatsolverext_SRCS} pool_fileconflicts.c repo_rpmdb.c)
ENDIF (NOT DEBIAN)
-ADD_LIBRARY(satsolverext STATIC ${libsatsolverext_SRCS})
+ADD_LIBRARY(satsolverext SHARED ${libsatsolverext_SRCS})
+SET_TARGET_PROPERTIES(satsolverext PROPERTIES
+ VERSION "${LIBSATSOLVER_MAJOR}.${LIBSATSOLVER_MINOR}"
+ SOVERSION "${LIBSATSOLVER_MAJOR}"
+)
SET(libsatsolverext_HEADERS
pool_fileconflicts.h repo_content.h repo_deltainfoxml.h repo_helix.h repo_products.h
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9bd0fde..6a14d10 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,7 +6,11 @@ SET(libsatsolver_SRCS
transaction.c rules.c problems.c
chksum.c md5.c sha1.c sha2.c satversion.c)
-ADD_LIBRARY(satsolver STATIC ${libsatsolver_SRCS})
+ADD_LIBRARY(satsolver SHARED ${libsatsolver_SRCS})
+SET_TARGET_PROPERTIES(satsolver PROPERTIES
+ VERSION "${LIBSATSOLVER_MAJOR}.${LIBSATSOLVER_MINOR}"
+ SOVERSION "${LIBSATSOLVER_MAJOR}"
+)
SET(libsatsolver_HEADERS
bitmap.h evr.h hash.h policy.h poolarch.h poolvendor.h pool.h
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index 79d4890..7696612 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -20,19 +20,19 @@ ADD_EXECUTABLE(rpmmd2solv rpmmd2solv.c)
TARGET_LINK_LIBRARIES(rpmmd2solv toolstuff satsolverext satsolver ${EXPAT_LIBRARY} ${ZLIB_LIBRARY})
ADD_EXECUTABLE(helix2solv helix2solv.c)
-TARGET_LINK_LIBRARIES(helix2solv toolstuff satsolverext satsolver ${EXPAT_LIBRARY})
+TARGET_LINK_LIBRARIES(helix2solv toolstuff satsolverext satsolver ${EXPAT_LIBRARY} ${ZLIB_LIBRARY})
ADD_EXECUTABLE(susetags2solv susetags2solv.c)
-TARGET_LINK_LIBRARIES(susetags2solv toolstuff satsolverext satsolver ${ZLIB_LIBRARY})
+TARGET_LINK_LIBRARIES(susetags2solv toolstuff satsolverext satsolver ${EXPAT_LIBRARY} ${ZLIB_LIBRARY})
ADD_EXECUTABLE(updateinfoxml2solv updateinfoxml2solv.c)
-TARGET_LINK_LIBRARIES(updateinfoxml2solv toolstuff satsolverext satsolver ${EXPAT_LIBRARY})
+TARGET_LINK_LIBRARIES(updateinfoxml2solv toolstuff satsolverext satsolver ${EXPAT_LIBRARY} ${ZLIB_LIBRARY})
ADD_EXECUTABLE(deltainfoxml2solv deltainfoxml2solv.c)
-TARGET_LINK_LIBRARIES(deltainfoxml2solv toolstuff satsolverext satsolver ${EXPAT_LIBRARY})
+TARGET_LINK_LIBRARIES(deltainfoxml2solv toolstuff satsolverext satsolver ${EXPAT_LIBRARY} ${ZLIB_LIBRARY})
ADD_EXECUTABLE(repomdxml2solv repomdxml2solv.c)
-TARGET_LINK_LIBRARIES(repomdxml2solv toolstuff satsolverext satsolver ${EXPAT_LIBRARY})
+TARGET_LINK_LIBRARIES(repomdxml2solv toolstuff satsolverext satsolver ${EXPAT_LIBRARY} ${ZLIB_LIBRARY})
ADD_EXECUTABLE(installcheck installcheck.c)
TARGET_LINK_LIBRARIES(installcheck satsolverext satsolver ${EXPAT_LIBRARY} ${ZLIB_LIBRARY})
@@ -44,7 +44,7 @@ ADD_EXECUTABLE(dumpsolv dumpsolv.c )
TARGET_LINK_LIBRARIES(dumpsolv satsolver)
ADD_EXECUTABLE(mergesolv mergesolv.c )
-TARGET_LINK_LIBRARIES(mergesolv toolstuff satsolverext satsolver)
+TARGET_LINK_LIBRARIES(mergesolv toolstuff satsolverext satsolver ${EXPAT_LIBRARY} ${ZLIB_LIBRARY})
install(TARGETS
mergesolv
--
1.7.4.4