From a6a0ad5fedd0139876aa647957f09b44b184dc5d Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Wed, 20 Jan 2016 14:39:07 +0000 Subject: [PATCH] community/mysql-workbench to 6.3.6-2 --- .../0002-mysql-connector-c++-json.patch | 41 ++++++ ...7-mysql-workbench-no-set-gtid-purged.patch | 29 ---- .../0009-mysql-workbench-gnome-keyring.patch | 17 --- .../0010-mysql-workbench-object.patch | 13 -- .../0013-mysql-workbench-no-json.patch | 58 -------- community/mysql-workbench/PKGBUILD | 127 +++++++++++------- .../mysql-workbench/arch_linux_profile.xml | 6 +- 7 files changed, 126 insertions(+), 165 deletions(-) create mode 100644 community/mysql-workbench/0002-mysql-connector-c++-json.patch delete mode 100644 community/mysql-workbench/0007-mysql-workbench-no-set-gtid-purged.patch delete mode 100644 community/mysql-workbench/0009-mysql-workbench-gnome-keyring.patch delete mode 100644 community/mysql-workbench/0010-mysql-workbench-object.patch delete mode 100644 community/mysql-workbench/0013-mysql-workbench-no-json.patch diff --git a/community/mysql-workbench/0002-mysql-connector-c++-json.patch b/community/mysql-workbench/0002-mysql-connector-c++-json.patch new file mode 100644 index 000000000..9a0225dab --- /dev/null +++ b/community/mysql-workbench/0002-mysql-connector-c++-json.patch @@ -0,0 +1,41 @@ +diff --git a/cppconn/datatype.h b/cppconn/datatype.h +index 7ada3bc..50c71cf 100644 +--- a/cppconn/datatype.h ++++ b/cppconn/datatype.h +@@ -59,7 +59,8 @@ public: + GEOMETRY, + ENUM, + SET, +- SQLNULL ++ SQLNULL, ++ JSON + }; + }; + +diff --git a/driver/mysql_metadata.cpp b/driver/mysql_metadata.cpp +index 8d3ef8b..2faf454 100644 +--- a/driver/mysql_metadata.cpp ++++ b/driver/mysql_metadata.cpp +@@ -4736,6 +4736,9 @@ MySQL_ConnectionMetaData::supportsConvert(int fromType, int toType) + } + } + ++ case sql::DataType::JSON: ++ return false; ++ + // MySQL doesn't support a NULL type + case sql::DataType::SQLNULL: + return false; +diff --git a/driver/mysql_util.cpp b/driver/mysql_util.cpp +index af5a7f4..3283eca 100644 +--- a/driver/mysql_util.cpp ++++ b/driver/mysql_util.cpp +@@ -431,6 +431,8 @@ mysql_type_to_datatype(const MYSQL_FIELD * const field) + return sql::DataType::SET; + case MYSQL_TYPE_GEOMETRY: + return sql::DataType::GEOMETRY; ++ case MYSQL_TYPE_JSON: ++ return sql::DataType::JSON; + default: + return sql::DataType::UNKNOWN; + } diff --git a/community/mysql-workbench/0007-mysql-workbench-no-set-gtid-purged.patch b/community/mysql-workbench/0007-mysql-workbench-no-set-gtid-purged.patch deleted file mode 100644 index 69242c507..000000000 --- a/community/mysql-workbench/0007-mysql-workbench-no-set-gtid-purged.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/plugins/wb.admin/frontend/wb_admin_export.py b/plugins/wb.admin/frontend/wb_admin_export.py -index 40f5167..ebf6c3d 100644 ---- a/plugins/wb.admin/frontend/wb_admin_export.py -+++ b/plugins/wb.admin/frontend/wb_admin_export.py -@@ -1858,8 +1858,6 @@ class WbAdminExportTab(WbAdminSchemaListTab): - args.append("--ssl-cipher=%s" % conn["sslCipher"]) - - # Sets the compatibility parameters if needed -- if self._compatibility_params: -- args.append("--set-gtid-purged=OFF") - if conn.get("OPT_ENABLE_CLEARTEXT_PLUGIN", ""): - args.append("--enable-cleartext-plugin") - -diff --git a/plugins/wb.admin/frontend/wb_admin_export_options.py b/plugins/wb.admin/frontend/wb_admin_export_options.py -index e9ec2e7..653f531 100644 ---- a/plugins/wb.admin/frontend/wb_admin_export_options.py -+++ b/plugins/wb.admin/frontend/wb_admin_export_options.py -@@ -53,9 +53,9 @@ export_options = { - "order-by-primary":["Dump each table's rows sorted by its primary key, or by its first unique index.","FALSE"], - "dump-date":["Include dump date as \"Dump completed on\" comment if --comments is given.","TRUE"], - "$internal$show-internal-schemas":["Show internal MySQL schemas (mysql, information_schema, performance_schema) in the export schema list.","FALSE"], -- "tz-utc":["Add SET TIME_ZONE='+00:00' to the dump file.","TRUE"], -+ "tz-utc":["Add SET TIME_ZONE='+00:00' to the dump file.","TRUE"] - # "xml":["Produce XML output.","FALSE"] -- "set-gtid-purged":["Add 'SET @@GLOBAL.GTID_PURGED' to the output.","AUTO","STR",("5.6.9", None)] -+# "set-gtid-purged":["Add 'SET @@GLOBAL.GTID_PURGED' to the output.","AUTO","STR",("5.6.9", None)] - } - - } diff --git a/community/mysql-workbench/0009-mysql-workbench-gnome-keyring.patch b/community/mysql-workbench/0009-mysql-workbench-gnome-keyring.patch deleted file mode 100644 index 006cfec50..000000000 --- a/community/mysql-workbench/0009-mysql-workbench-gnome-keyring.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/frontend/linux/workbench/mysql-workbench.in b/frontend/linux/workbench/mysql-workbench.in -index 02a8061..f8176f6 100755 ---- a/frontend/linux/workbench/mysql-workbench.in -+++ b/frontend/linux/workbench/mysql-workbench.in -@@ -4,6 +4,12 @@ - # This will cause passwords to be stored only temporarily for the session. - #WB_NO_GNOME_KEYRING=1 - -+# Looks like WB expects gnome-keyring to be present as soon as XDG_RUNTIME_DIR -+# environment variable is set. Do an extra check here... -+if ! type gnome-keyring-daemon >/dev/null 2>/dev/null; then -+ export WB_NO_GNOME_KEYRING=1 -+fi -+ - # force disable the Mac style single menu hack in Ubuntu Unity - export UBUNTU_MENUPROXY=0 - diff --git a/community/mysql-workbench/0010-mysql-workbench-object.patch b/community/mysql-workbench/0010-mysql-workbench-object.patch deleted file mode 100644 index 39b6cc5e1..000000000 --- a/community/mysql-workbench/0010-mysql-workbench-object.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/plugins/migration/copytable/copytable.cpp b/plugins/migration/copytable/copytable.cpp -index 7b760e0..ec05d11 100644 ---- a/plugins/migration/copytable/copytable.cpp -+++ b/plugins/migration/copytable/copytable.cpp -@@ -1922,7 +1922,7 @@ MySQLCopyDataTarget::MySQLCopyDataTarget(const std::string &hostname, int port, - mysql_init(&_mysql); - #if defined(MYSQL_VERSION_MAJOR) && defined(MYSQL_VERSION_MINOR) && defined(MYSQL_VERSION_PATCH) - #if MYSQL_CHECK_VERSION(5,6,6) -- if (is_mysql_version_at_least(5,6,6)) -+ if (MySQLCopyDataTarget::is_mysql_version_at_least(5,6,6)) - mysql_options4(&_mysql, MYSQL_OPT_CONNECT_ATTR_ADD, "program_name", app_name.c_str()); - #endif - #endif diff --git a/community/mysql-workbench/0013-mysql-workbench-no-json.patch b/community/mysql-workbench/0013-mysql-workbench-no-json.patch deleted file mode 100644 index d290c2618..000000000 --- a/community/mysql-workbench/0013-mysql-workbench-no-json.patch +++ /dev/null @@ -1,58 +0,0 @@ -diff --git a/plugins/migration/copytable/copytable.cpp b/plugins/migration/copytable/copytable.cpp -index de52d91..2df53a4 100644 ---- a/plugins/migration/copytable/copytable.cpp -+++ b/plugins/migration/copytable/copytable.cpp -@@ -79,7 +79,7 @@ static const char *mysql_field_type_to_name(enum enum_field_types type) - case MYSQL_TYPE_VAR_STRING: return "MYSQL_TYPE_VAR_STRING"; - case MYSQL_TYPE_STRING: return "MYSQL_TYPE_STRING"; - case MYSQL_TYPE_GEOMETRY: return "MYSQL_TYPE_GEOMETRY"; -- case MYSQL_TYPE_JSON: return "MYSQL_TYPE_JSON"; -+// case MYSQL_TYPE_JSON: return "MYSQL_TYPE_JSON"; - default: - return "UNKNOWN"; - } -@@ -241,7 +241,7 @@ RowBuffer::RowBuffer(boost::shared_ptr > columns, - case MYSQL_TYPE_STRING: - case MYSQL_TYPE_VAR_STRING: - case MYSQL_TYPE_BIT: -- case MYSQL_TYPE_JSON: -+// case MYSQL_TYPE_JSON: - if (!col->is_long_data) - bind.buffer_length = (unsigned)col->source_length+1; - -@@ -1551,8 +1551,8 @@ bool MySQLCopyDataSource::fetch_row(RowBuffer &rowbuffer) - rowbuffer[index].buffer_type == MYSQL_TYPE_LONG_BLOB || - rowbuffer[index].buffer_type == MYSQL_TYPE_BLOB || - rowbuffer[index].buffer_type == MYSQL_TYPE_STRING || -- rowbuffer[index].buffer_type == MYSQL_TYPE_GEOMETRY || -- rowbuffer[index].buffer_type == MYSQL_TYPE_JSON) -+ rowbuffer[index].buffer_type == MYSQL_TYPE_GEOMETRY) -+// rowbuffer[index].buffer_type == MYSQL_TYPE_JSON) - { - if (rowbuffer[index].buffer_length) - free(rowbuffer[index].buffer); -@@ -2357,7 +2357,7 @@ bool MySQLCopyDataTarget::append_bulk_column(size_t col_index) - case MYSQL_TYPE_STRING: - case MYSQL_TYPE_ENUM: - case MYSQL_TYPE_SET: -- case MYSQL_TYPE_JSON: -+// case MYSQL_TYPE_JSON: - _bulk_insert_record.append("'", 1); - ret_val = _bulk_insert_record.append_escaped((char*)(*_row_buffer)[col_index].buffer, *(*_row_buffer)[col_index].length); - _bulk_insert_record.append("'", 1); -diff --git a/backend/wbpublic/objimpl/db.query/db_query_Resultset.cpp b/backend/wbpublic/objimpl/db.query/db_query_Resultset.cpp -index f5c2ffb..b42ba6a 100644 ---- a/backend/wbpublic/objimpl/db.query/db_query_Resultset.cpp -+++ b/backend/wbpublic/objimpl/db.query/db_query_Resultset.cpp -@@ -300,9 +300,9 @@ public: - case sql::DataType::SET: - type= "string"; - break; -- case sql::DataType::JSON: -+ /* case sql::DataType::JSON: - type = "json"; -- break; -+ break; */ - case sql::DataType::SQLNULL: - type = "null"; - break; diff --git a/community/mysql-workbench/PKGBUILD b/community/mysql-workbench/PKGBUILD index bcfefaf8c..d90247bc2 100644 --- a/community/mysql-workbench/PKGBUILD +++ b/community/mysql-workbench/PKGBUILD @@ -10,16 +10,20 @@ pkgname=mysql-workbench pkgver=6.3.6 -pkgrel=1 +pkgrel=2 +_mysql_version=5.7.10 +_connector_version=1.1.6 +_gdal_version=2.0.1 +_boost_version=1.59.0 pkgdesc='A cross-platform, visual database design tool developed by MySQL' arch=('i686' 'x86_64') url='https://www.mysql.com/products/workbench/' license=('GPL2') -depends=('python2' 'libzip' 'libmariadbclient' 'gtkmm' 'ctemplate' - 'libgnome-keyring' 'libgl' 'python2-paramiko' 'python2-pexpect' 'gdal' +depends=('python2' 'libzip' 'gtkmm' 'ctemplate' + 'libgnome-keyring' 'libgl' 'python2-paramiko' 'python2-pexpect' 'pcre' 'tinyxml' 'libxml2' 'mysql-python' 'cairo' 'python2-cairo' 'hicolor-icon-theme' 'desktop-file-utils' 'libiodbc' - 'mysql-connector-c++' 'vsqlite++' 'unixodbc' 'freetype2' + 'vsqlite++' 'unixodbc' 'freetype2' 'libantlr3c') optdepends=('gnome-keyring: store SSH/MySQL passwords in GNOME password manager' 'python2-pyodbc: database migration') @@ -27,22 +31,26 @@ makedepends=('cmake' 'boost' 'curl' 'mesa' 'swig' 'java-runtime' 'imagemagick') install=mysql-workbench.install validpgpkeys=('A4A9406876FCBD3C456770C88C718D3B5072E1F5') source=("http://cdn.mysql.com/Downloads/MySQLGUITools/mysql-workbench-community-${pkgver}-src.tar.gz"{,.asc} + "http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-${_mysql_version}.tar.gz"{,.asc} + "http://cdn.mysql.com/Downloads/Connector-C++/mysql-connector-c++-${_connector_version}.tar.gz"{,.asc} + "http://download.osgeo.org/gdal/${_gdal_version}/gdal-${_gdal_version}.tar.gz" + "https://downloads.sourceforge.net/project/boost/boost/${_boost_version}/boost_${_boost_version//./_}.tar.bz2" 'http://www.antlr3.org/download/antlr-3.4-complete.jar' '0001-mysql-workbench-no-check-for-updates.patch' - '0007-mysql-workbench-no-set-gtid-purged.patch' - '0009-mysql-workbench-gnome-keyring.patch' - '0010-mysql-workbench-object.patch' - '0013-mysql-workbench-no-json.patch' + '0002-mysql-connector-c++-json.patch' 'arch_linux_profile.xml') sha256sums=('c51fce1a3fd9425dd9adf4d16e24e84f92e2f8374b43a956f580fd84d03afe62' 'SKIP' + '1ea1644884d086a23eafd8ccb04d517fbd43da3a6a06036f23c5c3a111e25c74' + 'SKIP' + 'ad710b3900cae3be94656825aa70319cf7a96e1ad46bf93e07275f3606f69447' + 'SKIP' + 'b55f794768e104a2fd0304eaa61bb8bda3dc7c4e14f2c9d0913baca3e55b83ab' + '727a932322d94287b62abb1bd2d41723eec4356a7728909e38adb65ca25241ca' '9d3e866b610460664522520f73b81777b5626fb0a282a5952b9800b751550bf7' 'b189e15c6b6f5a707357d9a9297f39ee3a33264fd28b44d5de6f537f851f82cf' - 'b49d4ea352d2c2013b9c5834668c44521a0a2c5f9c7e3fe746ad94ce0d2bb865' - '9c2ae2fe7a4f59502bdcf591a07353c350b0ba29c3935c8242d97848cc0e50d3' - '2bc79f935cd5059409d32aa64832b7aa2c49ba533cc93d40a063bcbfe01a4485' - '663b6eed3715988e16a695f5810bdfb7e76aaeb28baaf4b11b2a73ee2bcb403d' - '28724c4b4cec29ce19aada08279df1b086381cd788fef7ae07c1860f7d17af7e') + '4beb8b6c92f6b2b2189bfdd2f1a073ad54d501f05ef4686e47c661b40f63b9d3' + '2ade582ca25f6d6d748bc84a913de39b34dcaa6e621a77740fe143007f2833af') prepare() { cd "${srcdir}/mysql-workbench-community-${pkgver}-src/" @@ -51,56 +59,83 @@ prepare() { # Updates are provided via Arch Linux packages patch -Np1 < "${srcdir}"/0001-mysql-workbench-no-check-for-updates.patch - # mysqldump from mariadb (currently 1.0.16) does not support --set-gtid-purged - patch -Np1 < "${srcdir}"/0007-mysql-workbench-no-set-gtid-purged.patch - - # fix gnome-keyring - patch -Np1 < "${srcdir}"/0009-mysql-workbench-gnome-keyring.patch - - # fix cannot call member function without object - patch -Np1 < "${srcdir}"/0010-mysql-workbench-object.patch - - # we have no JSON, probably missing in mariadb - patch -Np1 < "${srcdir}"/0013-mysql-workbench-no-json.patch - - # make cmake happy with mariadb - sed -i '/^find_package(MySQL /c find_package(MySQL REQUIRED)' \ - CMakeLists.txt - # we need python 2.x sed -i '/^FIND_PROGRAM(PYTHON_EXEC /c FIND_PROGRAM(PYTHON_EXEC "python2")' \ CMakeLists.txt - # fix the swig workaround - sed -i '/SWIG_VERSION/s/0x030008/0x030006/' \ - library/forms/mforms/textbox.h \ - library/forms/swig/mforms.i - - # fix GDAL - 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 - + # MySQL connector C++ is lagging behind and misses JSON support + cd "${srcdir}/mysql-connector-c++-${_connector_version}/" + patch -Np1 < "${srcdir}"/0002-mysql-connector-c++-json.patch # put antlr into place install -D ${srcdir}/antlr-3.4-complete.jar ${srcdir}/linux-res/bin/antlr-3.4-complete.jar } build() { - cd "${srcdir}/mysql-workbench-community-${pkgver}-src/" + # Build mysql + cd "${srcdir}/mysql-${_mysql_version}" + cmake . \ + -DBUILD_CONFIG=mysql_release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DSYSCONFDIR=/etc/mysql \ + -DMYSQL_DATADIR=/var/lib/mysql \ + -DWITH_BOOST="${srcdir}/boost_${_boost_version//./_}" + make + make DESTDIR="${srcdir}/install-bundle/" install - # link to libsigc++, which requires ISO C++ 2011 standard - # so add the flag to enable c++11 + # Build mysql-connector-c++ + cd "${srcdir}/mysql-connector-c++-${_connector_version}/" + cmake . \ + -Wno-dev \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DMYSQLCPPCONN_BUILD_EXAMPLES=OFF \ + -DMYSQL_DIR="${srcdir}/install-bundle/" \ + -DMYSQL_CONFIG_EXECUTABLE="${srcdir}/install-bundle/usr/bin/mysql_config" \ + -DBOOST_ROOT:STRING="${srcdir}/boost_${_boost_version//./_}" + + make DESTDIR="${srcdir}/install-bundle/" install + + # Build gdal + cd "${srcdir}/gdal-${_gdal_version}/" + ./configure \ + --prefix=/usr \ + --includedir=/usr/include/gdal \ + --with-sqlite3 \ + --with-mysql="${srcdir}/install-bundle/usr/bin/mysql_config" \ + --with-curl + make + make DESTDIR="${srcdir}/install-bundle/" install + + # Build MySQL Workbench itself with bundled libs + cd "${srcdir}/mysql-workbench-community-${pkgver}-src/" cmake . \ -DCMAKE_INSTALL_PREFIX:PATH=/usr \ -DCMAKE_CXX_FLAGS="${CXXFLAGS} -std=c++11 -fsigned-char" - + -DCMAKE_BUILD_TYPE=Release \ + -DMySQL_CONFIG_PATH="${srcdir}/install-bundle/usr/bin/mysql_config" \ + -DMYSQLCPPCONN_LIBRARY="-L${srcdir}/install-bundle/usr/lib -lmysqlcppconn" \ + -DMYSQLCPPCONN_INCLUDE_DIR="${srcdir}/install-bundle/usr/include" \ + -DGDAL_INCLUDE_DIR="${srcdir}/install-bundle/usr/include" \ + -DGDAL_LIBRARY="${srcdir}/install-bundle/usr/lib/libgdal.so" \ + -DUSE_BUNDLED_MYSQLDUMP=1 make } package() { - cd "${srcdir}/mysql-workbench-community-${pkgver}-src" + # install bundled libraries files and files + for LIBRARY in $(find "${srcdir}/install-bundle/usr/lib/" -type f -regex '.*/lib\(gdal\|mysql\(client\|cppconn\)\)\.so\..*'); do + install -D -m0755 "${LIBRARY}" "${pkgdir}"/usr/lib/mysql-workbench/"$(basename "${LIBRARY}")" + done + for SYMLINK in $(find "${srcdir}/install-bundle/usr/lib/" -type l -regex '.*/lib\(gdal\|mysql\(client\|cppconn\)\)\.so\..*'); do + ln -s "$(readlink "${SYMLINK}")" "${pkgdir}"/usr/lib/mysql-workbench/"$(basename "${SYMLINK}")" + done + install -m0755 "${srcdir}/install-bundle/usr/bin/mysql"{,dump} "${pkgdir}"/usr/lib/mysql-workbench/ + + # install MySQL Workbench itself + cd "${srcdir}/mysql-workbench-community-${pkgver}-src/" make DESTDIR="${pkgdir}" install @@ -113,6 +148,6 @@ package() { done install -D -m 0644 "${srcdir}"/arch_linux_profile.xml \ - "${pkgdir}"/usr/share/mysql-workbench/mysql.profiles/Arch_Linux_\(MariaDB_5.5_Package\).xml + "${pkgdir}"/usr/share/mysql-workbench/mysql.profiles/Arch_Linux_\(MariaDB\).xml } diff --git a/community/mysql-workbench/arch_linux_profile.xml b/community/mysql-workbench/arch_linux_profile.xml index cdfa8756e..08334c96a 100644 --- a/community/mysql-workbench/arch_linux_profile.xml +++ b/community/mysql-workbench/arch_linux_profile.xml @@ -7,10 +7,12 @@ systemctl start mysqld systemctl stop mysqld - ps -C mysqld -o pid= + systemctl is-active mysqld + MariaDB + 0 Linux - 10.0 + 10.1