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.SlackBuild231
1 files changed, 164 insertions, 67 deletions
diff --git a/development/mysql-workbench/mysql-workbench.SlackBuild b/development/mysql-workbench/mysql-workbench.SlackBuild
index b2344f4ef3..741ed6263d 100644
--- a/development/mysql-workbench/mysql-workbench.SlackBuild
+++ b/development/mysql-workbench/mysql-workbench.SlackBuild
@@ -3,7 +3,7 @@
# 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-2021 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,9 +24,15 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=mysql-workbench
-PRGNAM2=antlr
-VERSION=${VERSION:-6.3.10}
-ANTLRVER=3.4
+PRGNAM2=mysql
+VERSION=${VERSION:-8.0.25}
+VERSION_MYSQL=8.0.25
+PRGNAM3=boost
+VERSION_BOOST=1_73_0
+PRGNAM4=mysql-connector-c++
+VERSION_MYSQL_CONNECTOR=8.0.25
+PRGNAM5=gdal
+VERSION_GDAL=3.2.2
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -61,9 +67,103 @@ 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 {} \;
+
+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 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS -fpermissive" \
+CPPFLAGS="-I/usr/include/mysql/server" \
+./configure \
+ --prefix=/usr \
+ --includedir=/usr/include/gdal \
+ --with-sqlite3 \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --with-mysql="$TMP/install-bundle/usr/bin/mysql_config" \
+ --with-curl \
+ --without-jasper
+
+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,91 +174,88 @@ 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 '/^set/s|-Werror -Wall|-Wall|' 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
-
-# mysqldump from mariadb does not support --set-gtid-purged
-patch -p1 < $CWD/mysql-workbench-no-set-gtid-purged.patch
-
-# 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
+# Big thanks to ARCH Linux for all these work.
+# GCC 7.x introduced some new warnings, remove '-Werror' for the build to complete
+sed -i '/^set/s|-Werror -Wall|-Wall|' CMakeLists.txt
-# Patch to remove JSON support
-# MariaDB support for JSON started at 10.2
-patch -p1 < $CWD/mysql-workbench-no-json.patch
+# GCC 7.x complains about unsupported flag
+sed -i 's|-Wno-deprecated-register||' ext/scintilla/gtk/CMakeLists.txt
-# 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
+# disable stringop-truncation for GCC 8.x
+sed -i '/^set/s|-Wall|-Wall -Wno-stringop-truncation|' CMakeLists.txt
-# 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
+# make sure to link against bundled libraries
+sed -i "/target_link_libraries/s|\\$|-L$TMP/install-bundle/usr/lib${LIBDIRSUFFIX}/ \\$|" backend/wbpublic/CMakeLists.txt
-install -D $CWD/$PRGNAM2-$ANTLRVER-complete.jar $TMP/linux-res/bin/$PRGNAM2-$ANTLRVER-complete.jar
+# Fix boost 1.73
+patch -p1 < $CWD/boost-1.73.0.patch
-# make cmake happy with mariadb
-sed -i '/^find_package(MySQL /c find_package(MySQL REQUIRED)' CMakeLists.txt
+# Install antlr Java JAR
+cp $CWD/antlr-4.9.2-complete.jar $TMP/install-bundle/antlr-4.9.2-complete.jar
-# 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
+sed -i 's|4.9.1|4.9.2|' CMakeLists.txt
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" \
+ -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.9.2-complete.jar" \
+ -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}
-)
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc