В моем конкретном случае у меня есть зависимость в моем файле Cabal от пакета Haskell bindings-libzip. В частности, я мог бы принять несколько разных версий libzip, например. bindings-libzip-0.11 или bindings-libzip-0.10. Они, в свою очередь, зависят от соответствующих родных библиотек C libzip версий 0.11 и 0.10.
Поэтому у меня есть bindings-libzip >= 0.10 < 0.12 в моем файле .cabal.
Пакет Haskell bindings-libzip-x указывает с помощью PkgConfig-Depends, что libzip версия x должна присутствовать на клиентской машине. Допустим, у нижестоящего пользователя установлена версия 0.10 из libzip. Однако при извлечении моего пакета этот пользователь извлекает последние возможные зависимости и транзитивно извлекает версию 0.11 из bindings-libzip. Это приводит к ошибке процесса сборки с сообщением об установленной неправильной версии libzip.
Можно ли каким-либо образом указать в моем файле .cabal использовать bindings-libzip-0.11 тогда и только тогда, когда pkg-config обнаружит версию 0.11 из libzip, и использовать bindings-libzip-0.10 тогда и только тогда, когда pkg-config обнаружит версию 0.10 из libzip?