On Sat, May 11, 2013 at 02:26:22PM +0200, Bill Allombert wrote: > > On Wed, May 8, 2013 at 16:45:09 -0500, Lukasz Szybalski wrote:
> > > The following packages have unmet dependencies: > > > odbcinst1debian2 : Breaks: tdsodbc (< 0.82-8) but 0.82-7 is to be > > > installed > > > E: Error, pkgProblemResolver::Resolve generated breaks, this may be > > > caused by held packages. > > That shouldn't happen, 0.82-7 is the squeeze (oldstable) version. > > What's the output of "apt-cache policy tdsodbc" at that point? > This is probably caused by the circular dependency between odbcinst and > odbcinst1debian2. (Bug #545861) No, it is not. Circular dependencies are not the boogieman you make them out to be. Below is the output of an apt debug run from a squeeze minimal test case using tdsodbc+akonadi-server. Virtuoso alone does not trigger this issue; however, virtuoso and akonadi are frequently found together because they are both dependencies of KDE, so given the mention of virtuoso in the submitter's output, I assume this is the case on this system. For akonadi-server, the problem is that soprano-daemon (which is a dependency of akonadi-server: akonadi-server -> libsoprano4 -> soprano-daemon) still depends on libiodbc2 in wheezy... even though libiodbc2 is not multiarch-compatible and thus obsoleted by unixodbc. That's bug #639300, which managed to go unfixed in wheezy despite a patch being made available a year ago. Apparently the maintainers rejected this patch for spurious reasons (objecting to rpath which is clearly the lesser evil; and objecting to commented-out code, which is clearly something the maintainer could fix when applying the patch), but did not cc: me when doing so. I recommend applying the patch from bug #639300 in a stable update, instead of leaving akonadi/virtuoso un-coinstallable with all ODBC drivers in wheezy. Attached is an updated patch for this issue. SRMs: would you like me to NMU this fix to proposed-updates? KDE maintainers: would you prefer to prepare a different fix yourselves for this issue, or upload this patch yourself? Reading package lists... Building dependency tree... Reading state information... Starting Starting 2 Investigating (0) libgcc1 [ amd64 ] < 1:4.4.5-8 -> 1:4.7.2-5 > ( libs ) Broken libgcc1:amd64 Breaks on gcc-4.3 [ amd64 ] < 4.3.5-4 > ( devel ) (< 4.3.6-1) Considering gcc-4.3:amd64 -1 as a solution to libgcc1:amd64 431 Added gcc-4.3:amd64 to the remove list Fixing libgcc1:amd64 via remove of gcc-4.3:amd64 Investigating (0) libept1 [ amd64 ] < 1.0.4 > ( libs ) Broken libept1:amd64 Depends on libapt-pkg4.10 [ amd64 ] < none > ( none ) Considering apt:amd64 10 as a solution to libept1:amd64 3 Removing libept1:amd64 rather than change libapt-pkg4.10:amd64 Investigating (0) mysql-common [ amd64 ] < 5.1.49-3 -> 5.5.30+dfsg-1.1 > ( database ) Broken mysql-common:amd64 Breaks on mysql-server-core-5.1 [ amd64 ] < 5.1.49-3 > ( misc ) (< 5.5) Considering mysql-server-core-5.1:amd64 -1 as a solution to mysql-common:amd64 3 Added mysql-server-core-5.1:amd64 to the remove list Fixing mysql-common:amd64 via remove of mysql-server-core-5.1:amd64 Investigating (0) tdsodbc [ amd64 ] < 0.82-7 -> 0.91-2 > ( libs ) Broken tdsodbc:amd64 Breaks on libiodbc2 [ amd64 ] < 3.52.6-4 -> 3.52.7-2 > ( libs ) Considering libiodbc2:amd64 2 as a solution to tdsodbc:amd64 0 Holding Back tdsodbc:amd64 rather than change libiodbc2:amd64 Investigating (0) libakonadiprotocolinternals1 [ amd64 ] < none -> 1.7.2-3 > ( libs ) Broken libakonadiprotocolinternals1:amd64 Breaks on libakonadiprivate1 [ amd64 ] < 1.3.1-3+squeeze1 > ( libs ) (< 1.4.90) Considering libakonadiprivate1:amd64 -2 as a solution to libakonadiprotocolinternals1:amd64 -1 Added libakonadiprivate1:amd64 to the remove list Fixing libakonadiprotocolinternals1:amd64 via remove of libakonadiprivate1:amd64 Investigating (0) akonadi-backend-mysql [ amd64 ] < none -> 1.7.2-3 > ( misc ) Broken akonadi-backend-mysql:amd64 Depends on mysql-server-core-5.5 [ amd64 ] < none -> 5.5.30+dfsg-1.1 > ( database ) Considering mysql-server-core-5.5:amd64 1 as a solution to akonadi-backend-mysql:amd64 -1 Holding Back akonadi-backend-mysql:amd64 rather than change mysql-server-core-5.5:amd64 Broken akonadi-backend-mysql:amd64 Depends on mysql-server-core [ amd64 ] < none > ( none ) Considering mysql-server-core-5.1:amd64 -1 as a solution to akonadi-backend-mysql:amd64 -1 Holding Back akonadi-backend-mysql:amd64 rather than change mysql-server-core:amd64 Or group keep for akonadi-backend-mysql:amd64 Investigating (1) odbcinst1debian2 [ amd64 ] < 2.2.14p2-1 -> 2.2.14p2-5 > ( libs ) Broken odbcinst1debian2:amd64 Breaks on tdsodbc [ amd64 ] < 0.82-7 -> 0.91-2 > ( libs ) (< 0.82-8) Considering tdsodbc:amd64 0 as a solution to odbcinst1debian2:amd64 3 Upgrading tdsodbc:amd64 due to Breaks field in odbcinst1debian2:amd64 Investigating (1) akonadi-server [ amd64 ] < 1.3.1-3+squeeze1 -> 1.7.2-3 > ( net ) Broken akonadi-server:amd64 Depends on akonadi-backend-mysql [ amd64 ] < none -> 1.7.2-3 > ( misc ) (= 1.7.2-3) Considering akonadi-backend-mysql:amd64 -1 as a solution to akonadi-server:amd64 1 Try Installing akonadi-backend-mysql [ amd64 ] < none -> 1.7.2-3 > ( misc ) before changing akonadi-server:amd64 Investigating (1) tdsodbc [ amd64 ] < 0.82-7 -> 0.91-2 > ( libs ) Broken tdsodbc:amd64 Breaks on libiodbc2 [ amd64 ] < 3.52.6-4 -> 3.52.7-2 > ( libs ) Considering libiodbc2:amd64 2 as a solution to tdsodbc:amd64 0 Holding Back tdsodbc:amd64 rather than change libiodbc2:amd64 Investigating (2) odbcinst1debian2 [ amd64 ] < 2.2.14p2-1 -> 2.2.14p2-5 > ( libs ) Broken odbcinst1debian2:amd64 Breaks on tdsodbc [ amd64 ] < 0.82-7 -> 0.91-2 > ( libs ) (< 0.82-8) Considering tdsodbc:amd64 0 as a solution to odbcinst1debian2:amd64 3 Upgrading tdsodbc:amd64 due to Breaks field in odbcinst1debian2:amd64 Investigating (2) tdsodbc [ amd64 ] < 0.82-7 -> 0.91-2 > ( libs ) Broken tdsodbc:amd64 Breaks on libiodbc2 [ amd64 ] < 3.52.6-4 -> 3.52.7-2 > ( libs ) Considering libiodbc2:amd64 2 as a solution to tdsodbc:amd64 0 Holding Back tdsodbc:amd64 rather than change libiodbc2:amd64 <snip here - repeats until recursion limit is reached> Done The following packages have unmet dependencies: odbcinst1debian2 : Breaks: tdsodbc (< 0.82-8) but 0.82-7 is to be installed E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages. -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer http://www.debian.org/ slanga...@ubuntu.com vor...@debian.org
diff -Nru soprano-2.7.6+dfsg.1/debian/changelog soprano-2.7.6+dfsg.1/debian/changelog --- soprano-2.7.6+dfsg.1/debian/changelog 2013-03-01 07:57:01.000000000 -0800 +++ soprano-2.7.6+dfsg.1/debian/changelog 2013-05-11 11:44:33.000000000 -0700 @@ -1,3 +1,11 @@ +soprano (2.7.6+dfsg.1-2wheezy1.1) UNRELEASED; urgency=low + + * Non-maintainer upload. + * Build without iODBC, to make KDE co-installable with multiarch-enabled + ODBC drivers. Closes: #639300, LP: #901638. + + -- Steve Langasek <vor...@debian.org> Sat, 11 May 2013 11:25:31 -0700 + soprano (2.7.6+dfsg.1-2wheezy1) testing-proposed-updates; urgency=low * Team upload. diff -Nru soprano-2.7.6+dfsg.1/debian/control soprano-2.7.6+dfsg.1/debian/control --- soprano-2.7.6+dfsg.1/debian/control 2013-02-07 05:40:14.000000000 -0800 +++ soprano-2.7.6+dfsg.1/debian/control 2013-05-11 11:25:18.000000000 -0700 @@ -6,7 +6,7 @@ Build-Depends: debhelper (>= 7.4.15), cmake (>= 2.6.2), pkg-kde-tools (>= 0.12), dpkg-dev (>= 1.15.5), libclucene-dev (>= 0.9.21b), libqt4-dev (>= 4:4.5.3), libraptor1-dev (>= 1.4.16), librdf0-dev (>= 1.0.13), - doxygen (>= 1.7.1), graphviz, libiodbc2-dev + doxygen (>= 1.7.1), graphviz, libvirtodbc0, unixodbc-dev Standards-Version: 3.9.3 Homepage: http://soprano.sourceforge.net Vcs-Browser: http://git.debian.org/?p=pkg-kde/kde-req/soprano.git @@ -15,7 +15,7 @@ Package: soprano-daemon Section: utils Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} +Depends: libvirtodbc0, ${shlibs:Depends}, ${misc:Depends} Recommends: libsoprano4 (= ${binary:Version}) Suggests: virtuoso-minimal Breaks: libsoprano4 (<< 2.3.0+dfsg.1-1), libsoprano-dev (<< 2.3.0+dfsg.1-1) diff -Nru soprano-2.7.6+dfsg.1/debian/patches/no-odbc-dm soprano-2.7.6+dfsg.1/debian/patches/no-odbc-dm --- soprano-2.7.6+dfsg.1/debian/patches/no-odbc-dm 1969-12-31 16:00:00.000000000 -0800 +++ soprano-2.7.6+dfsg.1/debian/patches/no-odbc-dm 2013-05-11 11:24:46.000000000 -0700 @@ -0,0 +1,41 @@ +Description: Build without iODBC + Add support for soprano to link directly against virtodbc_r.so instead of + using the libiodbc driver manager. Given that virtuoso is hard-coded as + the driver, the use of a driver manager is an unnecessary indirection; and + the manner of the hard-coding makes it harder than it ought to be to + switch from iODBC to UnixODBC - so just eliminate the DM entirely. + . + This does mean we're using an rpath, but that's a lesser evil given that + the path to the library is otherwise hard-coded in the source anyway. +Author: Steve Langasek <vor...@debian.org> +Bug-Debian: http://bugs.debian.org/639300 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/901638 + +Index: soprano-2.7.5+dfsg.1/cmake/modules/FindIODBC.cmake +=================================================================== +--- soprano-2.7.5+dfsg.1.orig/cmake/modules/FindIODBC.cmake ++++ soprano-2.7.5+dfsg.1/cmake/modules/FindIODBC.cmake +@@ -57,10 +57,7 @@ + ${iodbc_INCLUDE_DIRS} + ) + +-find_library(IODBC_LIBRARIES NAMES iodbc +- HINTS +- ${iodbc_LIBRARY_DIRS} +- ) ++set(IODBC_LIBRARIES "/usr/lib/odbc/virtodbc_r.so") + + if (IODBC_LIBRARIES AND IODBC_INCLUDE_DIR) + # set(IODBC_INCLUDE_DIR "${IODBC_INCLUDE_DIR}/iodbc") +Index: soprano-2.7.5+dfsg.1/backends/virtuoso/CMakeLists.txt +=================================================================== +--- soprano-2.7.5+dfsg.1.orig/backends/virtuoso/CMakeLists.txt ++++ soprano-2.7.5+dfsg.1/backends/virtuoso/CMakeLists.txt +@@ -37,6 +37,7 @@ + target_link_libraries(soprano_virtuosobackend odbc32) + else(WIN32) + target_link_libraries(soprano_virtuosobackend ${IODBC_LIBRARIES}) ++SET_TARGET_PROPERTIES(soprano_virtuosobackend PROPERTIES INSTALL_RPATH "/usr/lib/odbc") + endif(WIN32) + + if(WIN32) diff -Nru soprano-2.7.6+dfsg.1/debian/patches/series soprano-2.7.6+dfsg.1/debian/patches/series --- soprano-2.7.6+dfsg.1/debian/patches/series 2013-03-01 07:55:13.000000000 -0800 +++ soprano-2.7.6+dfsg.1/debian/patches/series 2013-05-11 11:25:54.000000000 -0700 @@ -3,3 +3,4 @@ doxyfile_generate_tagfile.diff redland_raptor2_support.h dont_use_virtuoso_default_port.diff +no-odbc-dm
signature.asc
Description: Digital signature