summaryrefslogtreecommitdiffstats
path: root/development/mysql-workbench/mysql-workbench.SlackBuild
diff options
context:
space:
mode:
Diffstat (limited to 'development/mysql-workbench/mysql-workbench.SlackBuild')
-rw-r--r--development/mysql-workbench/mysql-workbench.SlackBuild248
1 files changed, 180 insertions, 68 deletions
diff --git a/development/mysql-workbench/mysql-workbench.SlackBuild b/development/mysql-workbench/mysql-workbench.SlackBuild
index b2344f4ef3..34a26bb7e1 100644
--- a/development/mysql-workbench/mysql-workbench.SlackBuild
+++ b/development/mysql-workbench/mysql-workbench.SlackBuild
@@ -1,9 +1,9 @@
-#!/bin/sh
+#!/bin/bash
# Slackware build script for mysql-workbench
# Originally written by Andre Geraldo Vieira <andre.geraldo@gmail.com>
-# Copyright 2013-2017 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
+# Copyright 2013-2024 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,12 +23,21 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+cd $(dirname $0) ; CWD=$(pwd)
+
PRGNAM=mysql-workbench
-PRGNAM2=antlr
-VERSION=${VERSION:-6.3.10}
-ANTLRVER=3.4
+PRGNAM2=mysql
+VERSION=${VERSION:-8.0.36}
+VERSION_MYSQL=8.3.0
+PRGNAM3=boost
+VERSION_BOOST=1_77_0
+PRGNAM4=mysql-connector-c++
+VERSION_MYSQL_CONNECTOR=8.3.0
+PRGNAM5=gdal
+VERSION_GDAL=3.8.3
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
SRCVERSION=$VERSION-src
@@ -40,7 +49,11 @@ if [ -z "$ARCH" ]; then
esac
fi
-CWD=$(pwd)
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
@@ -61,9 +74,104 @@ fi
set -e
-rm -rf $PKG
+rm -rf $PKG $TMP/install-bundle
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
+
+# Extract Boost
+rm -rf ${PRGNAM3}_${VERSION_BOOST}
+tar xvf $CWD/${PRGNAM3}_${VERSION_BOOST}.tar.bz2
+
+# Building MySQL
+rm -rf $PRGNAM2-${VERSION_MYSQL}
+tar xvf $CWD/$PRGNAM2-${VERSION_MYSQL}.tar.gz
+cd $PRGNAM2-${VERSION_MYSQL}
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+
+SLKCFLAGS+=" -Wno-error"
+
+mkdir -p build
+cd build
+cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DWITHOUT_SERVER=ON \
+ -DBUILD_CONFIG=mysql_release \
+ -DINSTALL_LIBDIR="lib${LIBDIRSUFFIX}" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DSYSCONFDIR=/etc/mysql \
+ -DMYSQL_DATADIR=/var/lib/mysql \
+ -DWITH_BOOST=$TMP/${PRGNAM3}_${VERSION_BOOST} \
+ -DCMAKE_BUILD_TYPE=Release ..
+
+make
+make install DESTDIR=$TMP/install-bundle
+
+cd ../..
+
+# Building mysql-connector-c++
+rm -rf $PRGNAM4-$VERSION-src
+tar xvf $CWD/${PRGNAM4}-${VERSION_MYSQL_CONNECTOR}-src.tar.gz
+cd $PRGNAM4-${VERSION_MYSQL_CONNECTOR}-src
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -Wno-dev \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DWITH_JDBC=ON \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib${LIBDIRSUFFIX} \
+ -DINSTALL_LIB_DIR=lib${LIBDIRSUFFIX} \
+ -DMYSQL_DIR="$TMP/install-bundle/" \
+ -DMYSQL_CONFIG_EXECUTABLE="$TMP/install-bundle/usr/bin/mysql_config" \
+ -DCMAKE_BUILD_TYPE=Release ..
+
+make
+make install DESTDIR=$TMP/install-bundle
+
+cd ../..
+
+# Building gdal
+rm -rf ${PRGNAM5}-${VERSION_GDAL}
+tar xvf $CWD/${PRGNAM5}-${VERSION_GDAL}.tar.xz
+cd ${PRGNAM5}-${VERSION_GDAL}
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DGDAL_USE_JASPER='OFF' \
+ -DGDAL_USE_MYSQL='OFF' \
+ -DCMAKE_BUILD_TYPE=Release ..
+
+make LD_LIBRARY_PATH="$TMP/install-bundle/usr/lib${LIBDIRSUFFIX}/"
+make LD_LIBRARY_PATH="$TMP/install-bundle/usr/lib${LIBDIRSUFFIX}/" DESTDIR="$TMP/install-bundle/" install
+cd ../../
+
+# Building mysql-workbench
rm -rf $PRGNAM-community-$SRCVERSION
tar xvf $CWD/$PRGNAM-community-$SRCVERSION.tar.gz
cd $PRGNAM-community-$SRCVERSION
@@ -74,95 +182,99 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+# From Archlinux: GCC 7.x complains about an unsupported flag; it also
+# introduced some new warnings, remove '-Werror' for the build to complete
+sed -i 's|-Wno-deprecated-register||' ext/scintilla/gtk/CMakeLists.txt
+sed -i '/^\s*set/s| -Werror||' CMakeLists.txt
+
# Patch from Ponce
patch -p1 < $CWD/config_and_ifconfig_paths.patch
-# Patch to fix gdal include path
-sed -i '/#include/s|gdal/||' \
- backend/wbpublic/grtui/geom_draw_box.h \
- backend/wbpublic/grt/spatial_handler.h \
- backend/wbpublic/objimpl/db.query/db_query_Resultset.cpp
+# GCC 7.x complains about unsupported flag
+sed -i 's|-Wno-deprecated-register||' ext/scintilla/gtk/CMakeLists.txt
-# mysqldump from mariadb does not support --set-gtid-purged
-patch -p1 < $CWD/mysql-workbench-no-set-gtid-purged.patch
+# disable stringop-truncation for GCC 8.x
+sed -i '/^set/s|-Wall|-Wall -Wno-stringop-truncation|' CMakeLists.txt
-# fix gnome-keyring
-# this is reserved for future gnome-keyring releases, but harmless for
-# gnome-keyring package in stable release as well
-patch -p1 < $CWD/mysql-workbench-gnome-keyring.patch
+# make sure to link against bundled libraries
+sed -i "/target_link_libraries/s|\\$|-L$TMP/install-bundle/usr/lib${LIBDIRSUFFIX}/ \\$|" backend/wbpublic/CMakeLists.txt
-# Patch to remove JSON support
-# MariaDB support for JSON started at 10.2
-patch -p1 < $CWD/mysql-workbench-no-json.patch
+# Fix boost 1.73
+patch -p1 < $CWD/boost-1.73.0.patch
-# Self-made patch
-# Used to avoid differences between MariaDB and MySQL 5.7
-# mysql_real_escape_string_quote is available in MySQL 5.7.6 and above
-# https://dev.mysql.com/doc/refman/5.7/en/mysql-real-escape-string-quote.html
-patch -p1 < $CWD/copytable.patch
+patch -Np1 < $CWD/0003-include-list.patch
-# Patch to disable warning on Slackware and fix for x86
-# Taken from ARCH Linux
-patch -p1 < $CWD/disable-unsupported-operating-system-warning.patch
-patch -p1 < $CWD/add-option-to-hide-nonstandard-server-warning.patch
-patch -p1 < $CWD/fix-build-for-i686.patch
+# Install antlr Java JAR
+cp $CWD/antlr-4.13.0-complete.jar $TMP/install-bundle/antlr-4.13.0-complete.jar
-install -D $CWD/$PRGNAM2-$ANTLRVER-complete.jar $TMP/linux-res/bin/$PRGNAM2-$ANTLRVER-complete.jar
+sed -i 's|4.11.1|4.13.0|' CMakeLists.txt
-# make cmake happy with mariadb
-sed -i '/^find_package(MySQL /c find_package(MySQL REQUIRED)' CMakeLists.txt
+# patch for GCC 13.0
+patch -p1 < $CWD/gcc13.patch
-# save this for GCC 7.0
-#sed -i "s|std=c++11|std=c++11 -Wno-error=implicit-fallthrough -Wno-error=strict-aliasing -Wno-error=format-overflow|" CMakeLists.txt
-
-# patch for gdal 2.2.0
-patch -p1 < $CWD/gdal-2.2.0.patch
+# Patch for libxml2
+patch -p1 < $CWD/0004-libxml2.patch
mkdir -p wb-build
cd wb-build
cmake \
- -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DLIB_INSTALL_DIR=/usr/lib$LIBDIRSUFFIX \
- -DPYTHON_INCLUDE_DIR:PATH=/usr/include/python2.7 \
- -DPYTHON_LIBRARY:FILEPATH=/usr/lib$LIBDIRSUFFIX/libpython2.7.so \
- -DGDAL_INCLUDE_DIR=/usr/include \
- -DCMAKE_CXX_FLAGS="-std=c++11" \
- -DCMAKE_BUILD_TYPE=Release ..
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -D_GLIBCXX_USE_CXX11_ABI=1" \
+ -Wno-dev \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DCMAKE_CXX_FLAGS="-std=c++17" \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DLIB_INSTALL_DIR=/usr/lib${LIBDIRSUFFIX} \
+ -DMySQL_CONFIG_PATH="$TMP/install-bundle/usr/bin/mysql_config" \
+ -DMySQLCppConn_LIBRARY="$TMP/install-bundle/usr/lib${LIBDIRSUFFIX}/libmysqlcppconn.so" \
+ -DMySQLCppConn_INCLUDE_DIR="$TMP/install-bundle/usr/include/jdbc" \
+ -DGDAL_INCLUDE_DIR="$TMP/install-bundle/usr/include" \
+ -DGDAL_LIBRARY="$TMP/install-bundle/usr/lib${LIBDIRSUFFIX}/libgdal.so" \
+ -DWITH_ANTLR_JAR="$TMP/install-bundle/antlr-4.13.0-complete.jar" \
+ -DUNIXODBC_CONFIG_PATH="/usr/bin/odbc_config" \
+ -DUNIXODBC_INCLUDE_DIRS="/usr/include" \
+ -DUSE_BUNDLED_MYSQLDUMP=1 \
+ ..
-make
+make -j1
+make install DESTDIR=$PKG
-# we will remove it later after installation
-# without these document, it will fail to build
-touch $TMP/$PRGNAM-community-$SRCVERSION/LICENSE.mysql
+cd ..
-make install DESTDIR=$PKG
+# Add Slackware Linux Profile
+install -m0644 $CWD/slackware_linux_profile.xml $PKG/usr/share/mysql-workbench/mysql.profiles/Slackware_Linux_15.0_\(MySQL_5.6_Package\).xml
+
+# install bundled mysql and mysqldump
+install -m0755 "$TMP/install-bundle/usr/bin/mysql"{,dump} $PKG/usr/lib${LIBDIRSUFFIX}/mysql-workbench/
-# Add Slackware Linux
-install -m0644 $CWD/slackware_linux_profile.xml $PKG/usr/share/mysql-workbench/mysql.profiles/Slackware_Linux_14.1_\(MariaDB_5.5_Package\).xml
+# icons
+for SIZE in 16 24 32 48 64 96 128; do
+# set modify/create for reproducible builds
+ convert -scale ${SIZE} +set date:create +set date:modify \
+ "images/icons/MySQLWorkbench-128.png" \
+ "mysql-workbench.png"
+ install -D -m0644 "mysql-workbench.png" "$PKG/usr/share/icons/hicolor/${SIZE}x${SIZE}/apps/mysql-workbench.png"
+done
+
+# install bundled libraries
+for LIBRARY in $(find "$TMP/install-bundle/usr/lib${LIBDIRSUFFIX}/" -type f -regex '.*/lib\(gdal\|mysql\(client\|cppconn\)\)\.so\..*'); do
+ BASENAME="$(basename "${LIBRARY}")"
+ SONAME="$(readelf -d "${LIBRARY}" | grep -Po '(?<=(Library soname: \[)).*(?=\])')"
+ install -D -m0755 "${LIBRARY}" "$PKG"/usr/lib${LIBDIRSUFFIX}/mysql-workbench/"${BASENAME}"
+ ln -s "${BASENAME}" "$PKG"/usr/lib${LIBDIRSUFFIX}/mysql-workbench/"${SONAME}"
+done
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-cd ..
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS COPYING* ChangeLog README INSTALL $PKG/usr/doc/$PRGNAM-$VERSION
+mv AUTHORS *.txt $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-# remove unnecessary empty document
-rm -f $TMP/$PRGNAM-$SRCVERSION/LICENSE.mysql
-
-# Fix missing shared library libwbbase
-(
- cd $PKG/usr/lib${LIBDIRSUFFIX}
- rm -f libwbbase.so*
- ln -s mysql-workbench/libwbbase.so .
- ln -s libwbbase.so libwbbase.so.${VERSION}
-)
+rm -rf $PKG/usr/share/doc
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE