QtSql USE="odbc". BUG

Доброго времени суток!

Пишу проектик по работе. Использую модуль QtSql, а конкретно драйвер для ODBC. Столкнулся с такой багой и/или недоработкой:
В системе по разным зависимостям стоят libiodbc и unixODBC. Системы разные, хоть и реализуют один интерфейс. Драйвер QODBC может работать либо с libiodbc, либо c unixODBC. С какой реализацией ODBC он будет работать, определяется на этапе компиляции. И вот тут сам баг: у ебилда есть USE-флаг odbc, который включает в зависимости сразу два пакета: dev-db/libiodbc и dev-db/unixODBC. При этом на этапе конфигурации подпихиваются исходники libiodbc, а на этапе компиляции драйвер линкуется с libodbc.so.2, который входит в пакет unixODBC. В результате при обеих настроенных и оттестированных реализациях ODBC, драйвер QODBC никуда не коннектится и выдаёт непереводимый набор символов/псевдографики. Предлагаю решение этого бага ниже. Еще, коли технологии взаимоисключающие для драйвера QODBC, то хотелось бы иметь возможность выбирать вручную с помощью USE-флагов с какой реализацией ODBC будем работать.

Доработанный ебилд:

# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-qt/qtsql/qtsql-4.8.5.ebuild,v 1.10 2014/01/26 11:56:06 ago Exp $

EAPI=4

inherit multilib qt4-build

DESCRIPTION="The SQL module for the Qt toolkit"
SLOT="4"
if [[ ${QT4_BUILD_TYPE} == live ]]; then
	KEYWORDS=""
else
	KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 sparc x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~x64-solaris ~x86-solaris"
fi
IUSE="firebird freetds mysql oci8 iodbc odbc postgres qt3support +sqlite"

REQUIRED_USE="
	|| ( firebird freetds mysql oci8 iodbc odbc postgres sqlite )
"

DEPEND="
	~dev-qt/qtcore-${PV}[aqua=,debug=,qt3support=]
	firebird? ( dev-db/firebird )
	freetds? ( dev-db/freetds )
	mysql? ( virtual/mysql )
	oci8? ( dev-db/oracle-instantclient-basic )
	odbc? ( 
		iodbc? ( dev-db/libiodbc ) 
		|| ( dev-db/unixODBC )
		)
	postgres? ( dev-db/postgresql-base )
	sqlite? ( dev-db/sqlite:3 )
"
RDEPEND="${DEPEND}"

pkg_setup() {
	QT4_TARGET_DIRECTORIES="
		src/sql
		src/plugins/sqldrivers"

	QT4_EXTRACT_DIRECTORIES="${QT4_TARGET_DIRECTORIES}
		include/Qt
		include/QtCore
		include/QtSql
		src/src.pro
		src/corelib
		src/plugins
		src/tools/tools.pro"

	qt4-build_pkg_setup
}

src_configure() {
	myconf+="
		$(qt_use firebird sql-ibase  plugin)
		$(qt_use freetds  sql-tds    plugin)
		$(qt_use mysql    sql-mysql  plugin) $(use mysql && echo "-I${EPREFIX}/usr/include/mysql -L${EPREFIX}/usr/$(get_libdir)/mysql")
		$(qt_use oci8     sql-oci    plugin) $(use oci8 && echo "-I${ORACLE_HOME}/include -L${ORACLE_HOME}/$(get_libdir)")
		$(qt_use odbc     sql-odbc   plugin) $(if  use iodbc ; then 
								echo "-liodbc -I${EPREFIX}/usr/include/iodbc"
							  else
								echo "-lodbc"
							  fi;)

		$(qt_use postgres sql-psql   plugin) $(use postgres && echo "-I${EPREFIX}/usr/include/postgresql/pgsql")
		$(qt_use sqlite   sql-sqlite plugin) $(use sqlite && echo -system-sqlite)
		-no-sql-db2
		-no-sql-sqlite2
		-no-sql-symsql
		$(qt_use qt3support)
		-no-accessibility -no-xmlpatterns -no-multimedia -no-audio-backend -no-phonon
		-no-phonon-backend -no-svg -no-webkit -no-script -no-scripttools -no-declarative
		-system-zlib -no-gif -no-libtiff -no-libpng -no-libmng -no-libjpeg -no-openssl
		-no-cups -no-dbus -no-gtkstyle -no-nas-sound -no-opengl
		-no-sm -no-xshape -no-xvideo -no-xsync -no-xinerama -no-xcursor -no-xfixes
		-no-xrandr -no-xrender -no-mitshm -no-fontconfig -no-freetype -no-xinput -no-xkb
		-no-glib"

	qt4-build_src_configure
}

Жирным выделил измененные места.
Пересобирал с unixODBC и с libiodbc, тестировал свой проект и так и так. Теперь во всех случаях работает :)

Заранее извиняюсь, если не стоило сюда этого писать, но в багзиллу написать не могу, т.к. не знаю английского так, чтобы подробно описать проблему, да и пользоваться ей не умею... Если найдётся тот, кто всё это умеет, то добавьте пожалуйста это в багзиллу.
СПАСИБО за внимание!

P.S. ебилд больше для обозначения сути проблемы. Я не мастер написания ебилдов, наверняка есть ошибки с юзами...

.

ИМХО задавать используемый движок логичнее через USE_EXPAND.

Вопрос не совсем по теме: в чём profit от использования ODBC (в сравнении с нативной поддержкой например postgres)?
Реализацию поддержки ODBC где-то ещё не смотрел для сравнить (по формальным признакам баг может быть типовым-серийным)?

С троллями дел не имел, пересказ в трекере полагаю делом неправильным.
Так что было бы неплохо, если бы ты дополнил тему описанием простейшего способа воспроизведения проблемы.

:wq
--
Live free or die

А можно где-либо почитать о

А можно где-либо почитать о правилах и порядке внесения предложений на изменения в какой-либо ebuild? В смысле, описано ли это где-нибудь на русском? просто нашёл еще косячок, хотелось бы внести вклад :)

Идете на багзиллу

Идете на багзиллу (bugs.gentoo.org), открываете там баг и прикладываете диффы с желаемыми изменениями. И ждете от пары часов до бесконечности. )

P.S. Не верю в незнание английского хотя бы на уровне "там эта хернюшка не работать, поправь майнтейнера-ма".

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".