]> git.ipfire.org Git - people/trikolon/ipfire-2.x.git/commitdiff
libsatsolver: New package.
authorStefan Schantl <stefan.schantl@ipfire.org>
Sat, 7 May 2011 18:31:31 +0000 (20:31 +0200)
committerStefan Schantl <stefan.schantl@ipfire.org>
Sat, 7 May 2011 18:31:31 +0000 (20:31 +0200)
config/rootfiles/packages/libsatsolver [new file with mode: 0644]
lfs/libsatsolver [new file with mode: 0644]
make.sh
src/patches/libsatsolver-Build-only-libraries.patch [new file with mode: 0644]
src/patches/libsatsolver-Create-linker-scripts-that-do-only-export-the-needed.patch [new file with mode: 0644]
src/patches/libsatsolver-Make-libsatsolver-ext-a-versioned-shared-lib.patch [new file with mode: 0644]

diff --git a/config/rootfiles/packages/libsatsolver b/config/rootfiles/packages/libsatsolver
new file mode 100644 (file)
index 0000000..212eeea
--- /dev/null
@@ -0,0 +1,52 @@
+#usr/include/satsolver
+#usr/include/satsolver/bitmap.h
+#usr/include/satsolver/chksum.h
+#usr/include/satsolver/dirpool.h
+#usr/include/satsolver/evr.h
+#usr/include/satsolver/hash.h
+#usr/include/satsolver/knownid.h
+#usr/include/satsolver/md5.h
+#usr/include/satsolver/policy.h
+#usr/include/satsolver/pool.h
+#usr/include/satsolver/pool_fileconflicts.h
+#usr/include/satsolver/poolarch.h
+#usr/include/satsolver/poolid.h
+#usr/include/satsolver/pooltypes.h
+#usr/include/satsolver/poolvendor.h
+#usr/include/satsolver/problems.h
+#usr/include/satsolver/queue.h
+#usr/include/satsolver/repo.h
+#usr/include/satsolver/repo_content.h
+#usr/include/satsolver/repo_deb.h
+#usr/include/satsolver/repo_deltainfoxml.h
+#usr/include/satsolver/repo_helix.h
+#usr/include/satsolver/repo_products.h
+#usr/include/satsolver/repo_releasefile_products.h
+#usr/include/satsolver/repo_repomdxml.h
+#usr/include/satsolver/repo_rpmdb.h
+#usr/include/satsolver/repo_rpmmd.h
+#usr/include/satsolver/repo_solv.h
+#usr/include/satsolver/repo_susetags.h
+#usr/include/satsolver/repo_updateinfoxml.h
+#usr/include/satsolver/repo_write.h
+#usr/include/satsolver/repo_zyppdb.h
+#usr/include/satsolver/repodata.h
+#usr/include/satsolver/repopage.h
+#usr/include/satsolver/rules.h
+#usr/include/satsolver/sat_xfopen.h
+#usr/include/satsolver/satversion.h
+#usr/include/satsolver/sha1.h
+#usr/include/satsolver/sha2.h
+#usr/include/satsolver/solvable.h
+#usr/include/satsolver/solver.h
+#usr/include/satsolver/solverdebug.h
+#usr/include/satsolver/strpool.h
+#usr/include/satsolver/tools_util.h
+#usr/include/satsolver/transaction.h
+#usr/include/satsolver/util.h
+usr/lib/libsatsolver.so
+usr/lib/libsatsolver.so.0
+usr/lib/libsatsolver.so.0.16
+usr/lib/libsatsolverext.so
+usr/lib/libsatsolverext.so.0
+usr/lib/libsatsolverext.so.0.16
diff --git a/lfs/libsatsolver b/lfs/libsatsolver
new file mode 100644 (file)
index 0000000..619c477
--- /dev/null
@@ -0,0 +1,99 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+###############################################################################
+
+###############################################################################
+# Definitions
+###############################################################################
+
+include Config
+
+VER        = 0.16.4
+
+THISAPP    = libsatsolver-$(VER)
+DL_FILE    = $(THISAPP).tar.bz2
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = 563414330c29e9b49be0e43358185a78
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+###############################################################################
+# Downloading, checking, md5sum
+###############################################################################
+
+$(patsubst %,$(DIR_CHK)/%,$(objects)) :
+       @$(CHECK)
+
+$(patsubst %,$(DIR_DL)/%,$(objects)) :
+       @$(LOAD)
+
+$(subst %,%_MD5,$(objects)) :
+       @$(MD5)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       @$(PREBUILD)
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libsatsolver-Build-only-libraries.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libsatsolver-Create-linker-scripts-that-do-only-export-the-needed.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libsatsolver-Make-libsatsolver-ext-a-versioned-shared-lib.patch
+
+       # Who releases code with -Werror?
+       cd $(DIR_APP) && sed -e "s/-Werror//g" -i CMakeLists.txt
+
+       # Make sure that libsatsolverext is linked properly to all needed
+       # libraries.
+       cd $(DIR_APP) && echo "TARGET_LINK_LIBRARIES(satsolverext satsolver \$${EXPAT_LIBRARY} \$${ZLIB_LIBRARY})" \
+               >> ext/CMakeLists.txt
+
+       # Remove the RPM stuff when we build with -DFEDORA=1 because we
+       # do not support RPM.
+       cd $(DIR_APP) && sed -e "s/DEBIAN/FEDORA/g" -i ext/CMakeLists.txt
+
+       cd $(DIR_APP) && mkdir build
+       cd $(DIR_APP)/build && cmake .. -DFEDORA=1 \
+               -DCMAKE_INSTALL_PREFIX=/usr \
+               -DCMAKE_BUILD_TYPE=Release \
+               -DCMAKE_SKIP_RPATH=1
+       cd $(DIR_APP)/build && make $(PARALELLISMFLAGS)
+
+       cd $(DIR_APP)/build && make install
+
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
diff --git a/make.sh b/make.sh
index f572b9304a7bcdc781d1e65607d1e348a8e8656a..b89c77a4a9f310b487d7754e5692359ac759998a 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -689,6 +689,7 @@ buildipfire() {
   ipfiremake swig
   ipfiremake python-m2crypto
   ipfiremake crda
+  ipfiremake libsatsolver
   echo Build on $HOSTNAME > $BASEDIR/build/var/ipfire/firebuild
   cat /proc/version >> $BASEDIR/build/var/ipfire/firebuild
   echo >> $BASEDIR/build/var/ipfire/firebuild
diff --git a/src/patches/libsatsolver-Build-only-libraries.patch b/src/patches/libsatsolver-Build-only-libraries.patch
new file mode 100644 (file)
index 0000000..47e24e4
--- /dev/null
@@ -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}")
diff --git a/src/patches/libsatsolver-Create-linker-scripts-that-do-only-export-the-needed.patch b/src/patches/libsatsolver-Create-linker-scripts-that-do-only-export-the-needed.patch
new file mode 100644 (file)
index 0000000..5ba4fa2
--- /dev/null
@@ -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
+
diff --git a/src/patches/libsatsolver-Make-libsatsolver-ext-a-versioned-shared-lib.patch b/src/patches/libsatsolver-Make-libsatsolver-ext-a-versioned-shared-lib.patch
new file mode 100644 (file)
index 0000000..449275c
--- /dev/null
@@ -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
+