Sources: Spec URL: https://raw.githubusercontent.com/FaramosCZ/Fedora-maintain/master/mariadb/mariadb-connector-odbc/SPECS/mariadb-connector-odbc.spec SRPM URL: https://raw.githubusercontent.com/FaramosCZ/Fedora-maintain/master/mariadb/mariadb-connector-odbc/SRPMS/mariadb-connector-odbc-2.0.12-1.fc24.src.rpm GitHub: https://github.com/FaramosCZ/Fedora-maintain/tree/master/mariadb/mariadb-connector-odbc COPR: https://copr.fedorainfracloud.org/coprs/mschorm/mariadb-connector-odbc/ Description: MariaDB Connector/ODBC is a standardized, LGPL licensed database driver using the industry standard Open Database Connectivity (ODBC) API. It supports ODBC Standard 3.5, can be used as a drop-in replacement for MySQL Connector/ODBC, and it supports both Unicode and ANSI modes Aditional info: In this SRPM a patch is included, which creates possibility to build package with dynamic library (instead of the static one). Link to patch suggestion sent to upstream: https://jira.mariadb.org/browse/ODBC-55
Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated Issues: ======= - Development (unversioned) .so files in -devel subpackage, if present. Note: Unversioned so-files directly in %_libdir. See: http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages - If (and only if) the source package includes the text of the license(s) in its own file, then that file, containing the text of the license(s) for the package is included in %license. Note: License file COPYING is not marked as %license See: http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#License_Text ===== MUST items ===== C/C++: [x]: Package does not contain kernel modules. [x]: Package contains no static executables. [x]: Header files in -devel subpackage, if present. [x]: Package does not contain any libtool archives (.la) [x]: Rpath absent or only used for internal libs. Generic: [x]: Package is licensed with an open-source compatible license and meets other legal requirements as defined in the legal section of Packaging Guidelines. [x]: License field in the package spec file matches the actual license. Note: Checking patched sources after %prep for licenses. Licenses found: "BSD", "LGPL (v2.1 or later)", "Unknown or generated". 7 files have unknown license. Detailed output of licensecheck in /home/pemensik/fedora/rawhide/1381548-mariadb-connector- odbc/licensecheck.txt [x]: License file installed when any subpackage combination is installed. [!]: Package requires other packages for directories it uses. Note: No known owner of /usr/share/doc/mariadb_connector_odbc [!]: Package must own all directories that it creates. Note: Directories without known owners: /usr/share/doc/mariadb_connector_odbc [x]: %build honors applicable compiler flags or justifies otherwise. [x]: Package contains no bundled libraries without FPC exception. [x]: Changelog in prescribed format. [x]: Sources contain only permissible code or content. [x]: Each %files section contains %defattr if rpm < 4.4 Note: %defattr present but not needed [-]: Package contains desktop file if it is a GUI application. [-]: Development files must be in a -devel package [x]: Package uses nothing in %doc for runtime. [!]: Package consistently uses macros (instead of hard-coded directory names). Let RPM create path /usr/share/doc/mariadb_connector_odbc using %doc [x]: Package is named according to the Package Naming Guidelines. [x]: Package does not generate any conflict. [x]: Package obeys FHS, except libexecdir and /usr/target. [-]: If the package is a rename of another package, proper Obsoletes and Provides are present. [x]: Requires correct, justified where necessary. [x]: Spec file is legible and written in American English. [-]: Package contains systemd file(s) if in need. [-]: Useful -debuginfo package or justification otherwise. [x]: Package is not known to require an ExcludeArch tag. [-]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 30720 bytes in 2 files. [!]: Package complies to the Packaging Guidelines Use %license with relative path for COPYING %doc for README. Will not create hardcoded path in /usr/share/doc. [x]: Package successfully compiles and builds into binary rpms on at least one supported primary architecture. [x]: Package installs properly. [x]: Rpmlint is run on all rpms the build produces. Note: There are rpmlint messages (see attachment). [x]: Package does not own files or directories owned by other packages. [x]: All build dependencies are listed in BuildRequires, except for any that are listed in the exceptions section of Packaging Guidelines. [x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT [x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the beginning of %install. [x]: Macros in Summary, %description expandable at SRPM build time. [x]: Dist tag is present. [x]: Package does not contain duplicates in %files. [x]: Permissions on files are set properly. [x]: Package use %makeinstall only when make install DESTDIR=... doesn't work. [x]: Package is named using only allowed ASCII characters. [x]: Package does not use a name that already exists. [x]: Package is not relocatable. [x]: Sources used to build the package match the upstream source, as provided in the spec URL. [x]: Spec file name must match the spec package %{name}, in the format %{name}.spec. [x]: File names are valid UTF-8. [x]: Packages must not store files under /srv, /opt or /usr/local ===== SHOULD items ===== Generic: [-]: If the source package does not include license text(s) as a separate file from upstream, the packager SHOULD query upstream to include it. [x]: Final provides and requires are sane (see attachments). [x]: Fully versioned dependency in subpackages if applicable. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in mariadb- connector-odbc-debuginfo [x]: Package functions as described. [x]: Latest version is packaged. [x]: Package does not include license text files separate from upstream. [x]: Patches link to upstream bugs/comments/lists or are otherwise justified. Note: Add link to jira.mariadb.org also to the spec as a comment. [-]: Description and summary sections in the package spec file contains translations for supported Non-English languages, if available. [?]: Package should compile and build into binary rpms on all supported architectures. [!]: %check is present and all tests pass. [x]: Packages should try to preserve timestamps of original installed files. [x]: Reviewer should test that the package builds in mock. [x]: Buildroot is not present [x]: Package has no %clean section with rm -rf %{buildroot} (or $RPM_BUILD_ROOT) [x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin. [x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file [x]: Uses parallel make %{?_smp_mflags} macro. [x]: Sources can be downloaded from URI in Source: tag [x]: SourceX is a working URL. [x]: Spec use %global instead of %define unless justified. ===== EXTRA items ===== Generic: [!]: Spec file according to URL is the same as in SRPM. Note: Spec file as given by url is not the same as in SRPM (see attached diff). See: (this test has no URL) [x]: Rpmlint is run on debuginfo package(s). Note: No rpmlint messages. [x]: Rpmlint is run on all installed packages. Note: There are rpmlint messages (see attachment). [x]: Large data in /usr/share should live in a noarch subpackage if package is arched. Rpmlint ------- Checking: mariadb-connector-odbc-2.0.12-1.fc26.x86_64.rpm mariadb-connector-odbc-debuginfo-2.0.12-1.fc26.x86_64.rpm mariadb-connector-odbc-2.0.12-1.fc26.src.rpm mariadb-connector-odbc.x86_64: E: invalid-soname /usr/lib64/libmaodbc.so libmaodbc.so mariadb-connector-odbc.src:12: W: macro-in-comment %{_libdir} 3 packages and 0 specfiles checked; 1 errors, 1 warnings. Rpmlint (debuginfo) ------------------- Checking: mariadb-connector-odbc-debuginfo-2.0.12-1.fc26.x86_64.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings. Rpmlint (installed packages) ---------------------------- mariadb-connector-odbc.x86_64: E: invalid-soname /usr/lib64/libmaodbc.so libmaodbc.so mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_get_server_name mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so my_no_flags_free mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so my_malloc mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_sqlstate mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_ping mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_errno mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_send_long_data mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_get_server_version mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_more_results mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_commit mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so init_dynamic_array mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_query mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_find_charset_name mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_fetch_row mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_options mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_server_init mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_get_charset_by_name mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_attr_set mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_data_seek mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_rollback mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_more_results mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_init mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so insert_dynamic mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_fetch mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so alloc_dynamic mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so list_delete mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_data_seek mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_ps_fetch_functions mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_next_result mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so delete_dynamic mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_prepare mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so dynstr_append mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_errno mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so madb_get_os_character_set mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_store_result mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_close mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_result_metadata mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_bind_result mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_fetch_fields mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so my_charset_utf8_general_ci mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_fetch_column mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so init_dynamic_string mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_ssl_set mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_get_server_info mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so delete_dynamic_element mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_affected_rows mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_get_charset_by_nr mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so get_dynamic mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_field_count mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so my_strndup mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_next_result mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_real_connect mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_get_parameters mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_num_rows mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_close mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so my_realloc mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_select_db mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so list_add mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_error mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_init mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_field_count mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so my_strdup mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_free_result mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_real_escape_string mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so dynstr_free mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_real_query mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_get_socket mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_free_result mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mariadb_convert_string mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_error mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_affected_rows mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_execute mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_bind_param mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_autocommit mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so my_snprintf mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_thread_id mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_param_count mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so dynstr_append_mem mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_sqlstate mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_stmt_reset mariadb-connector-odbc.x86_64: W: undefined-non-weak-symbol /usr/lib64/libmaodbc.so mysql_store_result mariadb-connector-odbc.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libmaodbc.so libmariadb.so.2 2 packages and 0 specfiles checked; 1 errors, 82 warnings. Diff spec file in url and in SRPM --------------------------------- --- /home/pemensik/fedora/rawhide/1381548-mariadb-connector-odbc/srpm/mariadb-connector-odbc.spec 2016-10-04 15:21:46.455209407 +0200 +++ /home/pemensik/fedora/rawhide/1381548-mariadb-connector-odbc/srpm-unpacked/mariadb-connector-odbc.spec 2016-10-04 09:21:01.000000000 +0200 @@ -1,15 +1,15 @@ -Name: mariadb-connector-odbc -Version: 2.0.12 -Release: 1%{?dist} -Summary: The MariaDB Native Client library (ODBC driver) -Group: Applications/Databases -License: LGPLv2+ -Source: http://mirror.hosting90.cz/mariadb/connector-odbc-%{version}/source/mariadb-connector-odbc-%{version}-ga-src.tar.gz -Url: https://mariadb.org/en/ -BuildRequires: cmake unixODBC-devel -BuildRequires: mariadb-connector-c-devel >= 2.3.1 +Name: mariadb-connector-odbc +Version: 2.0.12 +Release: 1%{?dist} +Summary: The MariaDB Native Client library (ODBC driver) +Group: Applications/Databases +License: LGPLv2+ +Source: http://mirror.hosting90.cz/mariadb/connector-odbc-%{version}/source/mariadb-connector-odbc-%{version}-ga-src.tar.gz +Url: https://mariadb.org/en/ +BuildRequires: cmake unixODBC-devel +BuildRequires: mariadb-connector-c-devel >= 2.3.1 -# Set Cmake to build against dynamic library with parameter "-DMARIADB_DYNAMIC_LIB=..." -Patch: CMakeLists.txt.patch +# Set Cmake to build against dynamic library with parameter "-DMARIADB_DYNAMIC_LIB="%{_libdir}/mariadb/libmariadb.so"" +Patch: CMakeLists.txt.patch %description @@ -43,7 +43,4 @@ %changelog -* Tue Oct 04 2016 Michal Schorm <mschorm> - 2.0.12-1 +* Wed Sep 21 2016 Michal Schorm <mschorm> - 2.0.12-1 - Initial version for 2.0.12 - - - Requires -------- mariadb-connector-odbc (rpmlib, GLIBC filtered): libc.so.6()(64bit) libm.so.6()(64bit) libmariadb.so.2()(64bit) libodbcinst.so.2()(64bit) rtld(GNU_HASH) mariadb-connector-odbc-debuginfo (rpmlib, GLIBC filtered): Provides -------- mariadb-connector-odbc: libmaodbc.so()(64bit) mariadb-connector-odbc mariadb-connector-odbc(x86-64) mariadb-connector-odbc-debuginfo: mariadb-connector-odbc-debuginfo mariadb-connector-odbc-debuginfo(x86-64) Unversioned so-files -------------------- mariadb-connector-odbc: /usr/lib64/libmaodbc.so Source checksums ---------------- http://mirror.hosting90.cz/mariadb/connector-odbc-2.0.12/source/mariadb-connector-odbc-2.0.12-ga-src.tar.gz : CHECKSUM(SHA256) this package : 83652ca9860e7bc0790f2c789256b12a91e1b0e2f6c0bf64890c2be05cf49fdb CHECKSUM(SHA256) upstream package : 83652ca9860e7bc0790f2c789256b12a91e1b0e2f6c0bf64890c2be05cf49fdb Generated by fedora-review 0.6.1 (f03e4e7) last change: 2016-05-02 Command line :/usr/bin/fedora-review -b 1381548 -m fedora-rawhide-x86_64 Buildroot used: fedora-rawhide-x86_64 Active plugins: Generic, Shell-api, C/C++ Disabled plugins: Java, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP Disabled flags: EXARCH, DISTTAG, EPEL5, BATCH, EPEL6
Second review request: I believe all (atleast most) issues were resolved. Fast was made check with $> fedora-review -b 1381548 --mock-options="-r fedora-rawhide-x86_64" * %licence and %doc files repaired to use proper macros and remove duplicates. * SPECfile match the one in SRPM * %check not present since output is plugin library only. * make command removed, since %cmake does its job * unversioned .so file is left in main package, since it is not devel file and directly provides functionality of this package. * version not needed, since this library works as mariadb plugin _____ SPEC and SRPM urls did not change, the now point to updated version. Old version can be found on GitHub in "Version 1" branch.
License and doc are good. If it is mariadb plugin, it should reside in mariadb plugin directory. If you run ldd on libmaodbc.so, it will not find libmariadb.so.2. As the package depends on it anyway, I suggest you add Requires: mariadb-connector-c%{?_isa} Then make libmaodbc.so install into directory %{_libdir}/mariadb. If it is not in %{_libdir} directly, I do not care about soname. You should add %{_libdir}/mariadb/ into %files section of package mariadb-connector-c. Current version has unowned directory, that will not be removed after uninstallation.
Third review request: * %{_libdir}/mariadb/ added as into %files section of package mariadb-connector-c-devel and RPATH was fixed. New release (2.3.1-2.fc26) is on its way to rawhide repo by now. Reason: You can install mariadb-connector-c as a part of mariadb (so mariadb owns the libdir/mariadb directory). But the goal of mariadb-connector-c, which can be used as a standalone package in various use-cases, is to offer its functionality without whole mariadb. (For example if mariadb-server is remote) That's why mariadb-connector-c-devel (which place library in libdir/mariadb) must own libdir/mariadb directory. * libmaodbc.so should stay directly in %{_libdir} Reason: mariadb-connector-odbc is NOT mariadb plugin. To be exact, it is unix-odbc plugin. To preserve consistency, it should reside, where all other unixODBC plugins are - directly in %{_libdir} directory. Note: In order to Packaging guidelines, (1) plugins libraries don't need to be versioned and (2) NONE unversioned libraries should be directly in libdir. The only right solution would be to move ALL unix-odbc plugins from all associated packages to their new libdir/unixodbc directory at once. _____ SPEC and url did not change, the now point to updated version. SRPM url update to: https://raw.githubusercontent.com/FaramosCZ/Fedora-maintain/master/mariadb/mariadb-connector-odbc/SRPMS/mariadb-connector-odbc-2.0.12-1.fc26.src.rpm Old version can be found on GitHub in "Version 1" and "Version 2" branches.
[x]: Package requires other packages for directories it uses. [x]: Package must own all directories that it creates. [x]: Package consistently uses macros (instead of hard-coded directory names). [x]: Package complies to the Packaging Guidelines [x]: Package should compile and build into binary rpms on all supported architectures. [x]: Spec file according to URL is the same as in SRPM. Ok, all other ODBC plugins are there, they can be moved to plugins directory later. Some fixes of mariadb-connector-c are wrong, but that is not what I review. I think mariadb-connector-c is used as ordinary library by ODBC and should be therefore installed as ordinary library in %{_libdir}.
Package request has been approved: https://admin.fedoraproject.org/pkgdb/package/rpms/mariadb-connector-odbc
I think there are problems with unresolved symbols. They really not support dynamic linking, my_free used in odbc connector expands to my_no_flags_free. That symbol is NOT exported by libmariadb from mariadb-connector-c. It is impossible to load successfully odbc plugin because missing symbols. It seems to me, on current rawhide, it is missing these symbols: my_no_flags_free my_malloc my_charset_utf8_general_ci my_strndup my_realloc my_strdup my_snprintf
I am afraid there is too many symbols to satisfy, it cannot be done by adding a few symbols to exported list. The most simple way I have found to make odbc plugin working is to remove export filter on the mariadb-connector-c library, thus all symbols used in code are exported. I doubt that is solution acceptable by upstream. Another options are static linking as done by upstream or linking against mariadb-devel/mariadb-libs package. I will discuss options later.
Created attachment 1213533 [details] disable export filter for mariadb-connector-c Patch will export all symbols from libmariadb.so, not only official API. That will allow libmaodbc.so to successfully load from isql.
Dynamic link problems have to be solved with upstream and/or mariadb-connector-c mantainer.