diff options
Diffstat (limited to 'development/mysql-workbench/mysql-workbench.SlackBuild')
-rw-r--r-- | development/mysql-workbench/mysql-workbench.SlackBuild | 248 |
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 |