packaging/mysql-connector-odbc.spec.in (235 lines of code) (raw):
# Copyright (c) 2007, 2024, Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0, as
# published by the Free Software Foundation.
#
# This program is designed to work with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms, as
# designated in a particular file or component or in included license
# documentation. The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have either included with
# the program or referenced in the documentation.
#
# Without limiting anything contained in the foregoing, this file,
# which is part of Connector/ODBC, is also subject to the
# Universal FOSS Exception, version 1.0, a copy of which can be found at
# https://oss.oracle.com/licenses/universal-foss-exception.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
##############################################################################
#
# mysql-connector-odbc RPM specification
#
##############################################################################
%global mysql_vendor Oracle and/or its affiliates
%global driver_name_w MySQL ODBC @CONNECTOR_BASE_VERSION@ Unicode Driver
%global driver_name_a MySQL ODBC @CONNECTOR_BASE_VERSION@ ANSI Driver
%global lib_base_name libmyodbc@CONNECTOR_MAJOR@
%if 0%{?commercial}
%global license_type Commercial
%global license_files LICENSE.txt README.txt
%global product_suffix -commercial
%else
%global license_type GPLv2
%global license_files LICENSE.txt README.txt
%endif
%global cmake_cmd cmake%{?el6:3}%{?el7:3}
# Use rpmbuild -ba --define 'shared_mysqlclient 1' ... to build shared
%{!?shared_mysqlclient: %global static_mysqlclient 1}
# Don't bundle plugins when linking clientlib dynamically
%{!?shared_mysqlclient: %global bundle_plugins 1}
# Note: ${rpmversion} macro is introduced in version 4.19 -- if building with
# earlier versions use version computed by cmake.
# TODO: use %rpmversion if available, note that it is in the format X.Y.Z.Y
# and the current logic requires numeric format XYYZZ.
%global rpm_ver_num @RPM_VER_NUM@
##############################################################################
#
# Main information section
#
##############################################################################
Summary: An ODBC @CONNECTOR_BASE_VERSION@ driver for MySQL - driver package
Name: mysql-connector-odbc%{?product_suffix}
Version: @CONNECTOR_NODASH_VERSION@
Release: 1%{?fedora:0}%{?commercial:.1}%{?dist}
License: Copyright (c) 2000, @CURRENT_YEAR@, %{mysql_vendor}. All rights reserved. Under %{license_type} license as shown in the Description field.
Source0: http://cdn.mysql.com/Downloads/Connector-ODBC/@CONNECTOR_BASE_VERSION@/%{name}-@CONNECTOR_VERSION@-src.tar.gz
URL: http://www.mysql.com/
Group: Applications/Databases
Vendor: %{mysql_vendor}
Packager: %{mysql_vendor} Product Engineering Team <mysql-build@oss.oracle.com>
# Note: Field `Suggests` is recognized by RPM 4.13 and later
%if %{rpm_ver_num} >= 41300
Suggests: krb5-libs, cyrus-sasl-lib, libfido2
%endif
BuildRequires: %{cmake_cmd} >= 3.15.0
%{?shared_mysqlclient:BuildRequires: mysql-community-devel}
BuildRequires: unixODBC-devel
BuildRequires: gtk2-devel
%if 0%{?rhel} != 6 && 0%{?suse_version} != 1315
BuildRequires: gtk3-devel
%endif
%if 0%{?rhel} != 6
Requires: unixODBC >= 2.3
%else
# RHEL still has UnixODBC 2.2.14
Requires: unixODBC >= 2.2.14
%endif
%if 0%{?odbc_gui}
%package setup
Summary: An ODBC @CONNECTOR_BASE_VERSION@ driver for MySQL - setup library
Group: Application/Databases
AutoReq: no
Requires: %{name} = %{version}-%{release}
%endif
%package test
Summary: An ODBC @CONNECTOR_BASE_VERSION@ driver for MySQL - tests
Group: Application/Databases
Requires: %{name} = %{version}-%{release}
##############################################################################
#
# Documentation
#
##############################################################################
%description
mysql-connector-odbc is an ODBC (@CONNECTOR_BASE_VERSION@) driver for connecting an ODBC-aware
application to MySQL. mysql-connector-odbc works on Windows XP/Vista/7/8
Windows Server 2003/2008/2012, and most Unix platforms (incl. OSX and Linux).
MySQL is a trademark of %{mysql_vendor}
mysql-connector-odbc @CONNECTOR_BASE_VERSION@ is an enhanced version of mysql-connector-odbc @CONNECTOR_BASE_PREVIOUS@.
The driver comes in 2 flavours - ANSI and Unicode and commonly referred to as
'%{driver_name_a}' or '%{driver_name_w}' respectively.
The MySQL software has Dual Licensing, which means you can use the
MySQL software free of charge under the GNU General Public License
(http://www.gnu.org/licenses/). You can also purchase commercial MySQL
licenses from %{mysql_vendor} if you do not wish to be bound by the
terms of the GPL. See the chapter "Licensing and Support" in the
manual for further info.
The MySQL web site (http://www.mysql.com/) provides the latest news
and information about the MySQL software. Also please see the
documentation and the manual for more information.
%if 0%{?odbc_gui}
%description setup
The setup library for the MySQL ODBC package, handles the optional GUI
dialog for configuring the driver.
%endif
%description test
The test suite for MySQL ODBC.
##############################################################################
#
# Build
#
##############################################################################
%prep
%setup -q -n %{name}-@CONNECTOR_VERSION@-src
%build
%global install_layout -DINSTALL_LIBDIR=.%{_libdir} -DINSTALL_BINDIR=.%{_bindir} -DINSTALL_TESTDIR=.%{_libdir}/mysql-connector-odbc/test
%global plugin_dir %{_libdir}/mysql/%{lib_base_name}/plugin
%global cmake_config %{cmake_cmd} -DBUNDLE_DEPENDENCIES=1 -DWITH_UNIXODBC=1 -DDEFAULT_PLUGIN_DIR="%{plugin_dir}" %{install_layout} %{?static_mysqlclient:-DMYSQLCLIENT_STATIC_LINKING=1} %{!?odbc_gui:-DDISABLE_GUI=1} %{?cmake_opt_extra}
SRC=`pwd`
cd ..
mkdir -p release
export CFLAGS="%{optflags}"
%{cmake_config} -DCMAKE_BUILD_TYPE=RelWithDebInfo -S ${SRC} -B release
%{cmake_cmd} --build release --verbose
##############################################################################
#
# Cleanup
#
##############################################################################
%clean
rm -rf %{buildroot}
##############################################################################
#
# Install and deinstall scripts
#
##############################################################################
# ----------------------------------------------------------------------
# Install, but remove the doc files.
# The way %doc <file-without-path> works, we can't
# have these files installed
# ----------------------------------------------------------------------
%install
cd ..
%{cmake_cmd} --install release --prefix %{buildroot}
cd %{buildroot}
rm -vf ./{ChangeLog,README*,LICENSE*.*,INFO_SRC,INFO_BIN}
%if 0%{?bundle_plugins}
mkdir -p .%{plugin_dir}
mv -v .%{_libdir}/plugin/* .%{plugin_dir}
%endif
rm -rf .%{_libdir}/{plugin,private}
# ----------------------------------------------------------------------
# REGISTER DRIVER
# Note that "-e" is not working for drivers currently, so we have to
# deinstall before reinstall to change anything
# ----------------------------------------------------------------------
%post
if [ -x /usr/bin/myodbc-installer ]; then
/usr/bin/myodbc-installer -a -d -n "%{driver_name_w}" -t "DRIVER=%{_libdir}/%{lib_base_name}w.so"
/usr/bin/myodbc-installer -a -d -n "%{driver_name_a}" -t "DRIVER=%{_libdir}/%{lib_base_name}a.so"
fi
%if 0%{?odbc_gui}
%post setup
/usr/bin/myodbc-installer -r -d -n "%{driver_name_w}"
/usr/bin/myodbc-installer -r -d -n "%{driver_name_a}"
/usr/bin/myodbc-installer -a -d -n "%{driver_name_w}" -t "DRIVER=%{_libdir}/%{lib_base_name}w.so;SETUP=%{_libdir}/%{lib_base_name}S.so"
/usr/bin/myodbc-installer -a -d -n "%{driver_name_a}" -t "DRIVER=%{_libdir}/%{lib_base_name}a.so;SETUP=%{_libdir}/%{lib_base_name}S.so"
%endif
# ----------------------------------------------------------------------
# DEREGISTER DRIVER
# ----------------------------------------------------------------------
# Removing the driver package, we simply orphan any related DSNs
%preun
myodbc-installer -r -d -n "%{driver_name_w}"
myodbc-installer -r -d -n "%{driver_name_a}"
# Removing the setup RPM, downgrade the registration
%if 0%{?odbc_gui}
%preun setup
if [ "$1" = 0 ]; then
if [ -x %{_bindir}/myodbc-installer ]; then
%{_bindir}/myodbc-installer -r -d -n "%{driver_name_w}" > /dev/null 2>&1 || :
%{_bindir}/myodbc-installer -r -d -n "%{driver_name_a}" > /dev/null 2>&1 || :
%{_bindir}/myodbc-installer -a -d -n "%{driver_name_w}" -t "DRIVER=%{_libdir}/%{lib_base_name}w.so" > /dev/null 2>&1 || :
%{_bindir}/myodbc-installer -a -d -n "%{driver_name_a}" -t "DRIVER=%{_libdir}/%{lib_base_name}a.so" > /dev/null 2>&1 || :
fi
fi
%endif
##############################################################################
#
# Listing of files to be in the package
#
##############################################################################
%files
%defattr(-, root, root, -)
%{_bindir}/myodbc-installer
%{_libdir}/%{lib_base_name}w.so
%{_libdir}/%{lib_base_name}a.so
%if 0%{?bundle_plugins}
%{plugin_dir}
%endif
%doc %{license_files}
%doc ChangeLog INFO_SRC INFO_BIN
%if 0%{?odbc_gui}
%files setup
%defattr(-, root, root, -)
%doc %{license_files}
%doc INFO_SRC INFO_BIN
%{_libdir}/%{lib_base_name}S.so
%{_libdir}/%{lib_base_name}S-gtk*.so
%endif
%files test
%defattr(-, root, root, -)
%doc %{license_files}
%doc INFO_SRC INFO_BIN
%attr(-, root, root) %{_libdir}/mysql-connector-odbc/test
##############################################################################