Move library directly to libdir, don't create any symlinks to directories

Related: #1501933
Add 'Conflicts' with mariadb package on F<28
  Related: #1506441

Patch extension
This commit is contained in:
Michal Schorm 2017-10-26 17:35:37 +02:00
parent 949ef84e50
commit 039fdbed92
2 changed files with 100 additions and 64 deletions

View File

@ -14,3 +14,20 @@
SET(INSTALL_PLUGINDIR_RPM "lib/mariadb/plugin")
ENDIF()
SET(INSTALL_INCLUDEDIR_RPM "include")
--- mariadb-connector-c-3.0.2-src/mariadb_config/mariadb_config.c.in 2017-07-19 11:31:02.000000000 +0200
+++ mariadb-connector-c-3.0.2-src/mariadb_config/mariadb_config.c.in_patched 2017-10-25 12:32:42.075324299 +0200
@@ -5,8 +5,8 @@
static char *mariadb_progname;
-#define INCLUDE "-I@CMAKE_INSTALL_PREFIX@/@INSTALL_INCLUDEDIR@ -I@CMAKE_INSTALL_PREFIX@/@INSTALL_INCLUDEDIR@/mysql"
-#define LIBS "-L@CMAKE_INSTALL_PREFIX@/@INSTALL_LIBDIR@/ -lmariadb "\
+#define INCLUDE "-I@INSTALL_INCLUDEDIR@ -I@INSTALL_INCLUDEDIR@"
+#define LIBS "-L@INSTALL_LIBDIR@/ -lmariadb "\
"@extra_dynamic_LDFLAGS@"
#define LIBS_SYS "@extra_dynamic_LDFLAGS@"
#define CFLAGS INCLUDE

View File

@ -1,22 +1,28 @@
Name: mariadb-connector-c
Version: 3.0.2
Release: 11%{?dist}
Release: 12%{?dist}
Summary: The MariaDB Native Client library (C driver)
Group: Applications/Databases
License: LGPLv2+
Source: https://downloads.mariadb.org/interstitial/connector-c-%{version}/mariadb-connector-c-%{version}-src.tar.gz
Url: http://mariadb.org/
# Informations: https://mariadb.com/kb/en/mariadb/building-connectorc-from-source/
# More information: https://mariadb.com/kb/en/mariadb/building-connectorc-from-source/
%if 0%{fedora} >= 28
# RPM does not expand "less" correctly
%else
# mariadb-connector-c is a part of mariadb. *Every* file is meant to conflict.
# From F28 the client library part was removed from mariadb and tis package is required instead.
# On F<28 is the package present from both historical and compatibility reasons.
Conflicts: mariadb-libs mariadb-devel
%endif
BuildRequires: zlib-devel cmake openssl-devel
Suggests: openssl
# Remote-IO plugin
BuildRequires: libcurl-devel
# RPMLint issues of 2.3.2 release tracked on the upstream JIRA:
# https://jira.mariadb.org/browse/CONC-232
# https://jira.mariadb.org/browse/CONC-234
# Patch for "-DINSTALL_LAYOUT=RPM"
# Patch for "-DINSTALL_LAYOUT=RPM" and mariadb_config
Patch1: cmake.patch
%if 0%{?__isa_bits} == 64
@ -33,6 +39,8 @@ Provides: libmysqlclient.so.18(libmysqlclient_18)
The MariaDB Native Client library (C driver) is used to connect applications
developed in C/C++ to MariaDB and MySQL databases.
%package devel
Summary: Development files for mariadb-connector-c
Group: Development/Libraries
@ -41,76 +49,70 @@ Requires: %{name} = %{version}-%{release}
%description devel
Development files for mariadb-connector-c.
Contains everything needed to build against libmariadb.so >=3 client library.
%prep
%setup -q -n mariadb-connector-c-%{version}-src
%patch1 -p1
# Remove unsused parts
rm -r win zlib win-iconv examples
%build
%cmake . \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMARIADB_PORT=3306 \
-DWITH_EXTERNAL_ZLIB=ON \
-DCMAKE_SYSTEM_PROCESSOR="%{_arch}" \
-DPLUGIN_INSTALL_DIR="%{_libdir}/mariadb/plugin" \
-DWITH_MYSQLCOMPAT=ON \
-DINSTALL_LAYOUT=RPM \
\
-DMARIADB_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMARIADB_PORT=3306 \
\
-DWITH_EXTERNAL_ZLIB=YES \
-DWITH_SSL=OPENSSL \
-DWITH_MYSQLCOMPAT=ON \
\
-DINSTALL_LAYOUT=RPM \
-DINSTALL_BINDIR="%{_bindir}" \
-DINSTALL_LIBDIR="%{_libdir}" \
-DINSTALL_INCLUDEDIR=%{_includedir}/mysql \
-DPLUGIN_INSTALL_DIR="%{_libdir}/mariadb/plugin"
# Use
#-DMARIADB_PORT=number
#-DMARIADB_UNIX_ADDR=/path_to_socket/file.sock
# https://jira.mariadb.org/browse/MDEV-13836
# Causes build errors:
# -DAUTH_NATIVE=DYNAMIC
# -DCMAKE_INSTALL_PREFIX="/usr"
# Causes build errors
# -DAUTH_NATIVE=DYNAMIC
# https://jira.mariadb.org/browse/MDEV-13836:
# The server has (used to have for ages) some magic around the port number.
# If it's 0, the default port value will use getservbyname("mysql", "tcp"), that is, whatever is written in /etc/services.
# If it's a positive number, say, 3306, it will be 3306, no matter what /etc/services say.
# I don't know if that behavior makes much sense, /etc/services wasn't supposed to be a system configuration file.
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d
echo "%{_libdir}/mysql" > %{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf
# Remove static linked libraries and symlinks to them
rm %{buildroot}%{_libdir}/libmariadbclient.a
rm %{buildroot}%{_libdir}/libmysqlclient.a
rm %{buildroot}%{_libdir}/libmysqlclient_r.a
# static linked libraries and symlinks to them
rm %{buildroot}%{_libdir}/mariadb/libmariadbclient.a
rm %{buildroot}%{_libdir}/mariadb/libmysqlclient.a
rm %{buildroot}%{_libdir}/mariadb/libmysqlclient_r.a
# add a compatibility symlink
# Add a compatibility symlinks
ln -s mariadb_config %{buildroot}%{_bindir}/mysql_config
mv %{buildroot}%{_libdir}/mariadb %{buildroot}%{_libdir}/mysql
ln -s mysql %{buildroot}%{_libdir}/mariadb
ln -s mariadb_version.h %{buildroot}%{_includedir}/mysql_version.h
# move header files to the same location, as they would be in mariadb-server (10.2.8)
# which means from /usr/include to /usr/include/mysql
mkdir %{buildroot}%{_includedir}/temporary
mv %{buildroot}%{_includedir}/{*.h,mysql,mariadb} %{buildroot}%{_includedir}/temporary
mv %{buildroot}%{_includedir}/temporary %{buildroot}%{_includedir}/mysql
ln -s mariadb_version.h %{buildroot}%{_includedir}/mysql/mysql_version.h
%pre devel
rpm -qf /usr/lib64/mysql
if [ $? -eq 1 ]; then
if [ "$(ls -A /usr/lib64/mysql)" ]; then
mv /usr/lib64/mysql /usr/lib64/.mysql_update_tmp
fi
rm -rf /usr/lib64/{mysql*,mariadb*}
if [ -h %{_libdir}/mariadb ]; then
unlink %{_libdir}/mariadb
fi
%post devel
if [ -d "/usr/lib64/.mysql_update_tmp" ]; then
if [ "$(ls -A /usr/lib64/.mysql_update_tmp)" ]; then
mv /usr/lib64/.mysql_update_tmp/* /usr/lib64/mysql
rm -rf /usr/lib64/.mysql_update_tmp
fi
if [ -h %{_libdir}/mysql ]; then
unlink %{_libdir}/mysql
fi
%post -p /sbin/ldconfig
@ -119,12 +121,11 @@ fi
%files
%{_libdir}/mysql/libmariadb.so.*
%dir %{_libdir}/mysql/plugin
%{_libdir}/mysql/plugin/*
%{_libdir}/libmariadb.so.*
# fix of RPATH. If there is a set config file, libdir/mariadb/ is added to search for libraries
%config(noreplace) %{_sysconfdir}/ld.so.conf.d
%dir %{_libdir}/mariadb
%dir %{_libdir}/mariadb/plugin
%{_libdir}/mariadb/plugin/*
%doc README
%license COPYING.LIB
@ -132,22 +133,40 @@ fi
%files devel
# program which provides compiler info for programs compiling with this library
# Binary which provides compiler info for software compiling against this library
%{_bindir}/mariadb_config
%{_bindir}/mysql_config
%dir %{_libdir}/mysql
%{_libdir}/mariadb
%{_libdir}/mysql/libmariadb.so
%{_libdir}/mysql/libmysqlclient.so
%{_libdir}/mysql/libmysqlclient_r.so
# Symlinks to the versioned library
%{_libdir}/libmariadb.so
%{_libdir}/libmysqlclient.so
%{_libdir}/libmysqlclient_r.so
# header files
%{_includedir}/*
# Header files
%dir %{_includedir}/mysql
%{_includedir}/mysql/*
%license COPYING.LIB
# RPMLint issues from 2.3.2 release tracked on the upstream JIRA:
# https://jira.mariadb.org/browse/CONC-232
# https://jira.mariadb.org/browse/CONC-234
# RPMLint issues from 3.0.2 release tracked on the upstream JIRA:
# https://jira.mariadb.org/browse/CONC-271
# https://jira.mariadb.org/browse/CONC-287
# https://jira.mariadb.org/browse/CONC-290
# https://jira.mariadb.org/browse/MDEV-13836
%changelog
* Thu Oct 26 2017 Michal Schorm <mschorm@redhat.com> - 3.0.2-12
- Move library directly to libdir, don't create any symlinks to directories
- Update scritplets, so they only check for old symlinks to directories
Related: #1501933
- Add 'Conflicts' with mariadb package on F<28
Related: #1506441
* Mon Oct 09 2017 Michal Schorm <mschorm@redhat.com> - 3.0.2-11
- Fix ldconfig path