Opened 6 years ago

Closed 4 years ago

Last modified 4 months ago

#55661 closed defect (fixed)

libiodbc has hard conflict against unixODBC

Reported by: spodzone (Tim Haynes) Owned by: nerdling (Jeremy Lavergne)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: cooljeanius (Eric Gallager)
Port: libiodbc unixODBC

Description (last modified by mf2k (Frank Schima))

sh/scr, psammite  4:20PM libiodbc/ % port info libiodbc|grep -Ei '3.52|conflict'
libiodbc @3.52.12 (devel)
Conflicts with:       unixODBC

This conflict causes a lot of unnecessary pain - I want to install both digiKam (with a load of dependencies through all of KDE to libiodbc) and Saga GIS (wants unixODBC).

There is a simple workaround: invoke ./configure --includedir=DIR --disable-libodbc This will move the conflicting header files and disable the creation of libodbc.so.

Change History (10)

comment:1 Changed 6 years ago by mf2k (Frank Schima)

Description: modified (diff)
Keywords: odbc driver manager unixODBC conflict removed

In the future, please use WikiFormatting and Cc the port maintainers (port info --maintainers libiodbc), if any.

comment:2 Changed 6 years ago by mf2k (Frank Schima)

Port: unixODBC added

comment:3 Changed 6 years ago by mf2k (Frank Schima)

Owner: set to nerdling
Status: newassigned

comment:4 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

This was partially addressed in [c175b9ba889d42decf33b787906eb70801265031/macports-ports] but see comments at https://lists.macports.org/pipermail/macports-dev/2018-May/038837.html about additional changes that are still needed.

comment:5 Changed 4 years ago by nerdling (Jeremy Lavergne)

Status: assignedaccepted

Referring to Ryan's email that had issues with the code:

+variant libodbc description {install extra libodbc.so library} {

+ configure.args-replace --disable-libodbc --enable-libodbc

+}

This variant appears to install the file libodbc.a, not libodbc.so.

libiodbc has these specific configuration flags, whose specific language was used for the variant descriptions:

  --enable-libodbc        install extra libodbc.so library (default)
  --disable-libodbc       do not install extra libodbc.so library

I agree it appears to actually create a .a file as seen below and will swap the extension in our messaging, however I don't doubt that this file still created the reported conflict.

Enable creates these lib/lib* files:

work/destroot/opt/local/lib/libiodbc.2.dylib
work/destroot/opt/local/lib/libiodbc.a
work/destroot/opt/local/lib/libiodbc.dylib
work/destroot/opt/local/lib/libiodbcinst.2.dylib
work/destroot/opt/local/lib/libiodbcinst.a
work/destroot/opt/local/lib/libiodbcinst.dylib

Disable creates these lib/lib* files:

work/destroot/opt/local/lib/libiodbc.2.dylib
work/destroot/opt/local/lib/libiodbc.a
work/destroot/opt/local/lib/libiodbc.dylib
work/destroot/opt/local/lib/libiodbcinst.2.dylib
work/destroot/opt/local/lib/libiodbcinst.a
work/destroot/opt/local/lib/libiodbcinst.dylib
work/destroot/opt/local/lib/libodbc.a

comment:6 Changed 4 years ago by nerdling (Jeremy Lavergne)

Unfortunately, the header files still appear to conflict regardless of the variant. So only degree of conflict is conditional, and these ports will always conflict.

% sudo port -Nstu install current -libodbc
--->  Computing dependencies for libiodbc
--->  Fetching distfiles for libiodbc
--->  Attempting to fetch iODBC-3.52.13.tar.gz from https://github.com/openlink/iODBC/tarball/v3.52.13
--->  Verifying checksums for libiodbc
--->  Extracting libiodbc
Warning: The following existing file was hidden from the build system by trace mode:
  /private/var/select/sh
--->  Applying patches to libiodbc
Warning: The following existing file was hidden from the build system by trace mode:
  /private/var/select/sh
--->  Configuring libiodbc
Warning: The following existing files were hidden from the build system by trace mode:
  /opt/local/bin/ggrep
  /opt/local/bin/gmkdir
  /opt/local/bin/gsed
  /opt/local/bin/pkg-config
  /private/var/select/sh
--->  Building libiodbc
Warning: The following existing file was hidden from the build system by trace mode:
  /private/var/select/sh
--->  Staging libiodbc into destroot
Warning: The following existing files were hidden from the build system by trace mode:
  /private/var/select/sh
  /var/root/.CFUserTextEncoding
--->  Installing libiodbc @3.52.13_1+x11
--->  Activating libiodbc @3.52.13_1+x11
Error: Failed to activate libiodbc: Image error: /opt/local/include/odbcinst.h is being used by the active unixODBC port.  Please deactivate this port first, or use 'port -f activate libiodbc' to force the activation.

comment:7 Changed 4 years ago by nerdling (Jeremy Lavergne)

Ah, and now I see the --includedir=DIR part now that I'm not focusing on the email that was elsewhere.

Do we have any preference for a replacement includedir just to avoid this conflict?

comment:8 Changed 4 years ago by nerdling (Jeremy Lavergne)

Eh, I'll just try using ${prefix}/include/${name}.

comment:9 Changed 4 years ago by nerdling (Jeremy Lavergne)

Resolution: fixed
Status: acceptedclosed

In 2fc686d75679397013381ad49dde2771c14d6297/macports-ports (master):

unixODBC: conditionally conflict with libiodbc (https://github.com/macports/macports-ports/pull/8282)

libiodbc: avoid default conflicts with unixODBC

  • reword variant description from .so to .a
  • fix typo in default variants
  • change include dir
  • conditionally conflict with unixODBC
  • bump revision due to changes to installed files
  • Fixes #55661

comment:10 Changed 4 months ago by cooljeanius (Eric Gallager)

Cc: cooljeanius added
Note: See TracTickets for help on using tickets.