%define build_java 1 %define build_autotools 1 %define tartype gpl %define Werror_cflags %nil %define _disable_ld_no_undefined 1 %define _default_patch_fuzz 3 # commandline overrides: # rpm -ba|--rebuild --with 'xxx' %{?_with_java: %{expand: %%global build_java 1}} %{?_without_java: %{expand: %%global build_java 0}} %{?_with_autotools: %{expand: %%global build_autotools 1}} %{?_without_autotools: %{expand: %%global build_autotools 0}} %global mw_version 5.2.44 Summary: Extensible modeling tool for MySQL 5.x Name: mysql-workbench Group: Databases Version: %{mw_version} Release: %mkrel 4 License: GPL URL: http://wb.mysql.com # Upstream has a mirror redirector for downloads, so the URL is hard to # represent statically. You can get the tarball by following a link from # http://dev.mysql.com/downloads/workbench/ Source: http://gd.tuwien.ac.at/db/mysql/Downloads/MySQLGUITools/%{name}-%{tartype}-%{version}-src.tar.gz # don't build extension, use system one # !!! This patch use versioned soname (libmysqlcppconn.so.6) !!! Patch1: %{name}-5.2.43-cppconn.patch Patch2: %{name}-5.2.43-ctemplate.patch Patch3: %{name}-5.2.41-tinyxml.patch Patch4: %{name}-5.2.33b-mysql55.patch #Use system antlr version Patch5: %{name}-5.2.43-antlr.patch Patch6: %{name}-gpl-5.2.31-mga-fix-ifconfig.patch Patch7: %{name}-5.2.44-nodocs.patch Obsoletes: mysql-workbench-oss < 5.2.30 Provides: mysql-workbench-oss Obsoletes: mysql-gui-tools < 5.1 Provides: mysql-gui-tools Obsoletes: mysql-administrator < 5.1 Provides: mysql-administrator BuildRequires: antlr3-C-devel BuildRequires: autoconf2.5 BuildRequires: boost-devel >= 1.35.0 BuildRequires: cairo-devel BuildRequires: cairomm-devel BuildRequires: ctemplate-devel >= 0.91 BuildRequires: expat-devel BuildRequires: fdupes BuildRequires: file BuildRequires: freetype2-devel >= 2.1.10 BuildRequires: gettext BuildRequires: gettext-devel BuildRequires: glib2-devel BuildRequires: glibmm2.4-devel BuildRequires: glitz-devel BuildRequires: gtk2-devel BuildRequires: gtkhtml-3.14-devel BuildRequires: gtkmm2.4-devel >= 2.6 BuildRequires: imagemagick BuildRequires: iodbc-devel BuildRequires: libext2fs-devel BuildRequires: libfcgi-devel BuildRequires: libfontconfig-devel BuildRequires: libglade2.0-devel >= 2.5 BuildRequires: libgnome2-devel BuildRequires: libgnomeprint-devel >= 2.2.0 BuildRequires: libpng-devel BuildRequires: libsigc++2.0-devel BuildRequires: libslang-devel BuildRequires: libtool BuildRequires: libuuid-devel BuildRequires: libx11-devel BuildRequires: libxext-devel BuildRequires: libxml2-devel BuildRequires: libxrender-devel BuildRequires: libzip-devel BuildRequires: lua5.1-devel BuildRequires: mesagl-devel BuildRequires: mesaglu-devel BuildRequires: mysql-connector-c++-devel BuildRequires: mariadb-devel >= 5.0 BuildRequires: ncurses-devel BuildRequires: openssl-devel BuildRequires: pcre-devel >= 5.0 BuildRequires: pixman-devel >= 0.11.2 BuildRequires: pkgconfig BuildRequires: python-devel BuildRequires: readline-devel BuildRequires: scintilla-devel BuildRequires: termcap-devel BuildRequires: sqlite3-devel BuildRequires: libgnome-keyring-devel BuildRequires: tinyxml-devel %if %{build_java} BuildRequires: junit BuildRequires: eclipse-ecj BuildRequires: gcj-tools BuildRequires: jpackage-utils %endif # requires mysql-client (for mysqldump and mysql cmdline client) Requires: mysql-client Requires: gnome-keyring Requires: python-paramiko Requires: python-pexpect %description MySQL Workbench is modeling tool that allows you to design and generate MySQL databases graphically. MySQL Workbench requires OpenGL and a 3D accelerated graphics card with at least 16MB of memory. %package -n mysql-utilities Summary: Scripts for managing and administering MySQL servers # Not yet published (else will be package separatly) # see ext/mysql-utilities/CHANGES.txt Version: 1.0.0 Release: %mkrel 0.%{mw_version}.4 BuildRequires: python-devel >= 2.4 BuildRequires: python-sphinx >= 1.0 Requires: mysql-connector-python %description -n mysql-utilities MySQL Utilities contain a collection of scripts useful for managing and administering MySQL servers. %prep %setup -q -n mysql-workbench-gpl-%{mw_version}-src %patch1 -p1 -b .cppconn %patch2 -p1 -b .ctemplate %patch3 -p1 -b .tinyxml %patch4 -p0 -b .mysql55 %patch5 -p1 -b .antlr %patch6 -p0 -b .ifconfig %patch7 -p1 -b .nodocs # lib64 fix perl -pi -e "s|/lib/|/%{_lib}/|g" frontend/linux/workbench/program.cpp touch -r COPYING .timestamp4rpm %{__sed} -i -e 's/\r//g' COPYING touch -r .timestamp4rpm COPYING # we use System provided libraries rm -rf ext/boost rm -rf ext/curl rm -rf ext/libsigc++ rm -rf ext/yassl # avoid "No such file" during configure touch po/POTFILES.in # ctemplete is now ctemplate and not google anymore for i in `grep -Rl google .`; do sed -i 's/google/ctemplate/g' $i; done %build #export CPPFLAGS="$CPPFLAGS `pkg-config --cflags scintilla`" %if %{build_autotools} NOCONFIGURE=yes ./autogen.sh %endif %define _disable_ld_no_undefined 1 export CXXFLAGS="$RPM_OPT_FLAGS -fpermissive" %configure2_5x --disable-debug --enable-mysql-utilities #fgrep -rlZ pkglib_DATA --include Makefile.am . | xargs -0 sed -i 's/pkglib_DATA/pkgdata_DATA/g' # antibork #find -type f -name Makefile | xargs perl -pi -e "s|-Wl,--as-needed||g" # use the shared libs #find -type f -name Makefile | xargs perl -pi -e "s|%{_libdir}/python%{pyver}/config/libpython%{pyver}.a|-lpython%{pyver}|g" %make pushd ext/mysql-utilities %{__python} setup.py build_man popd %install rm -rf %{buildroot} %makeinstall_std pushd ext/mysql-utilities %{__install} --directory %{buildroot}%{_prefix}/man/man1 %{__python} setup.py install --skip-profile --root %{buildroot} %{__install} --directory %{buildroot}%{_mandir} %{__mv} %{buildroot}%{_prefix}/man/man1 %{buildroot}%{_mandir}/man1 popd # construct a clean and correct wrapper cat > %{buildroot}%{_bindir}/mysql-workbench << EOF #!/bin/bash export LD_LIBRARY_PATH="%{_libdir}/mysql-workbench:\$LD_LIBRARY_PATH" export MWB_DATA_DIR="%{_datadir}/mysql-workbench" export MWB_LIBRARY_DIR="%{_datadir}/mysql-workbench/libraries" export MWB_MODULE_DIR="%{_libdir}/mysql-workbench/modules" export MWB_PLUGIN_DIR="%{_libdir}/mysql-workbench/plugins" export DBC_DRIVER_PATH="%{_libdir}/mysql-workbench" %{_libdir}/mysql-workbench-bin \$* EOF # fix some menu entries and stuff... install -d %{buildroot}%{_miconsdir} install -d %{buildroot}%{_iconsdir} install -d %{buildroot}%{_liconsdir} install -d %{buildroot}%{_datadir}/applications rm -f %{buildroot}%{_datadir}/applications/MySQLWorkbench.desktop cat > %{buildroot}%{_datadir}/applications/mysql-workbench.desktop << EOF [Desktop Entry] Name=MySQL Workbench Comment=MySQL Database Design Tool Exec=%{_bindir}/mysql-workbench Terminal=false Type=Application Icon=mysql-workbench Categories=Database;Office; EOF # make some icons convert %{buildroot}%{_datadir}/mysql-workbench/images/MySQLWorkbench-48.png -resize 16x16 %{buildroot}%{_miconsdir}/mysql-workbench.png convert %{buildroot}%{_datadir}/mysql-workbench/images/MySQLWorkbench-48.png -resize 32x32 %{buildroot}%{_iconsdir}/mysql-workbench.png convert %{buildroot}%{_datadir}/mysql-workbench/images/MySQLWorkbench-48.png -resize 48x48 %{buildroot}%{_liconsdir}/mysql-workbench.png # cleanup rm -f %{buildroot}%{_libdir}/mysql-workbench/*.*a rm -f %{buildroot}%{_libdir}/mysql-workbench/lib*.so rm -f %{buildroot}%{_libdir}/mysql-workbench/modules/*.*a rm -f %{buildroot}%{_libdir}/mysql-workbench/plugins/*.*a %clean rm -rf %{buildroot} %files %defattr(-, root, root, -) # NEWS and ChangeLog are empty or outdated %doc AUTHORS COPYING COPYING.LGPL README samples %{_bindir}/%{name} %{_libdir}/%{name}-bin %{_datadir}/applications/mysql-workbench.desktop %{_miconsdir}/mysql-workbench.png %{_iconsdir}/mysql-workbench.png %{_liconsdir}/mysql-workbench.png %{_iconsdir}/hicolor/* %{_libdir}/%{name} %{_datadir}/%{name} %{_datadir}/mime/packages/* %{_datadir}/mime-info/* #%exclude %{_datadir}/doc/%{name} %files -n mysql-utilities %defattr(-, root, root, -) %doc ext/mysql-utilities/*.txt %{_bindir}/mysqldbcompare %{_bindir}/mysqldbcopy %{_bindir}/mysqldbexport %{_bindir}/mysqldbimport %{_bindir}/mysqldiff %{_bindir}/mysqldiskusage %{_bindir}/mysqlfailover %{_bindir}/mysqlindexcheck %{_bindir}/mysqlmetagrep %{_bindir}/mysqlprocgrep %{_bindir}/mysqlreplicate %{_bindir}/mysqlrpladmin %{_bindir}/mysqlrplcheck %{_bindir}/mysqlrplshow %{_bindir}/mysqlserverclone %{_bindir}/mysqlserverinfo %{_bindir}/mysqluc %{_bindir}/mysqluserclone %{_bindir}/wbcopytables %{python_sitelib}/mysql/* %{python_sitelib}/mysql_utilities* %{_mandir}/man1/* # empty file already provided by mysql-connector-python %exclude %{python_sitelib}/mysql/__init*