summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO66
-rw-r--r--0001-mysql-workbench-no-check-for-updates.patch21
-rw-r--r--0007-mysql-workbench-no-set-gtid-purged.patch29
-rw-r--r--0009-mysql-workbench-gnome-keyring.patch17
-rw-r--r--0010-mysql-workbench-object.patch13
-rw-r--r--0012-mysql-workbench-cpp11.patch25
-rw-r--r--0013-mysql-workbench-no-json.patch58
-rw-r--r--PKGBUILD126
-rw-r--r--arch_linux_profile.xml16
-rw-r--r--mysql-workbench.install14
10 files changed, 385 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..92a572973d3d
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,66 @@
+pkgbase = mysql-workbench-git
+ pkgdesc = A cross-platform, visual database design tool developed by MySQL - git checkout
+ pkgver = 6.3.5.r0.gaa9272c
+ pkgrel = 1
+ url = https://www.mysql.com/products/workbench/
+ install = mysql-workbench.install
+ arch = i686
+ arch = x86_64
+ license = GPL2
+ makedepends = git
+ makedepends = cmake
+ makedepends = boost
+ makedepends = curl
+ makedepends = mesa
+ makedepends = swig
+ makedepends = java-runtime
+ makedepends = imagemagick
+ depends = python2
+ depends = libzip
+ depends = libmariadbclient
+ depends = gtkmm
+ depends = ctemplate
+ depends = libgnome-keyring
+ depends = libgl
+ depends = python2-paramiko
+ depends = python2-pexpect
+ depends = gdal
+ depends = pcre
+ depends = tinyxml
+ depends = libxml2
+ depends = mysql-python
+ depends = cairo
+ depends = python2-cairo
+ depends = hicolor-icon-theme
+ depends = desktop-file-utils
+ depends = libiodbc
+ depends = mysql-connector-c++
+ depends = vsqlite++
+ depends = unixodbc
+ depends = freetype2
+ depends = libantlr3c
+ optdepends = gnome-keyring: store SSH/MySQL passwords in GNOME password manager
+ optdepends = python2-pyodbc: database migration
+ provides = mysql-workbench
+ conflicts = mysql-workbench
+ source = git://github.com/mysql/mysql-workbench.git
+ source = http://www.antlr3.org/download/antlr-3.4-complete.jar
+ source = 0001-mysql-workbench-no-check-for-updates.patch
+ source = 0007-mysql-workbench-no-set-gtid-purged.patch
+ source = 0009-mysql-workbench-gnome-keyring.patch
+ source = 0010-mysql-workbench-object.patch
+ source = 0012-mysql-workbench-cpp11.patch
+ source = 0013-mysql-workbench-no-json.patch
+ source = arch_linux_profile.xml
+ sha256sums = SKIP
+ sha256sums = 9d3e866b610460664522520f73b81777b5626fb0a282a5952b9800b751550bf7
+ sha256sums = b189e15c6b6f5a707357d9a9297f39ee3a33264fd28b44d5de6f537f851f82cf
+ sha256sums = b49d4ea352d2c2013b9c5834668c44521a0a2c5f9c7e3fe746ad94ce0d2bb865
+ sha256sums = 9c2ae2fe7a4f59502bdcf591a07353c350b0ba29c3935c8242d97848cc0e50d3
+ sha256sums = 2bc79f935cd5059409d32aa64832b7aa2c49ba533cc93d40a063bcbfe01a4485
+ sha256sums = f76ffa7343b758ac0de2448e948c533e8623a0e426d293602ab7261c853ec684
+ sha256sums = 663b6eed3715988e16a695f5810bdfb7e76aaeb28baaf4b11b2a73ee2bcb403d
+ sha256sums = 28724c4b4cec29ce19aada08279df1b086381cd788fef7ae07c1860f7d17af7e
+
+pkgname = mysql-workbench-git
+
diff --git a/0001-mysql-workbench-no-check-for-updates.patch b/0001-mysql-workbench-no-check-for-updates.patch
new file mode 100644
index 000000000000..129b63b18ff4
--- /dev/null
+++ b/0001-mysql-workbench-no-check-for-updates.patch
@@ -0,0 +1,21 @@
+diff --git a/res/wbdata/main_menu.xml b/res/wbdata/main_menu.xml
+index a32256c..08d9a21 100644
+--- a/res/wbdata/main_menu.xml
++++ b/res/wbdata/main_menu.xml
+@@ -2900,6 +2900,7 @@ value type="object" struct-name="app.MenuItem" id="com.mysql.wb.menu.view.fkhili
+ <value type="string" key="itemType">action</value>
+ </value>
+
++ <!-- We build a package that should be updated via pacman, so disable this check.
+ <value type="object" struct-name="app.MenuItem" id="com.mysql.wb.menu.separator.help.checkver">
+ <value type="string" key="itemType">separator</value>
+ </value>
+@@ -2910,7 +2911,7 @@ value type="object" struct-name="app.MenuItem" id="com.mysql.wb.menu.view.fkhili
+ <value type="string" key="name">checkUpdate</value>
+ <value type="string" key="command">plugin:wb.tools.checkForUpdates</value>
+ <value type="string" key="itemType">action</value>
+- </value>
++ </value> //-->
+
+ <value type="object" struct-name="app.MenuItem" id="com.mysql.wb.menu.separator.help.report_a_bug">
+ <value type="string" key="itemType">separator</value>
diff --git a/0007-mysql-workbench-no-set-gtid-purged.patch b/0007-mysql-workbench-no-set-gtid-purged.patch
new file mode 100644
index 000000000000..69242c507bf8
--- /dev/null
+++ b/0007-mysql-workbench-no-set-gtid-purged.patch
@@ -0,0 +1,29 @@
+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/0009-mysql-workbench-gnome-keyring.patch b/0009-mysql-workbench-gnome-keyring.patch
new file mode 100644
index 000000000000..006cfec50437
--- /dev/null
+++ b/0009-mysql-workbench-gnome-keyring.patch
@@ -0,0 +1,17 @@
+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/0010-mysql-workbench-object.patch b/0010-mysql-workbench-object.patch
new file mode 100644
index 000000000000..39b6cc5e1832
--- /dev/null
+++ b/0010-mysql-workbench-object.patch
@@ -0,0 +1,13 @@
+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/0012-mysql-workbench-cpp11.patch b/0012-mysql-workbench-cpp11.patch
new file mode 100644
index 000000000000..336d7bc2f484
--- /dev/null
+++ b/0012-mysql-workbench-cpp11.patch
@@ -0,0 +1,25 @@
+diff --git a/library/forms/swig/mforms.i b/library/forms/swig/mforms.i
+index 3f5104f..cdcca30 100644
+--- a/library/forms/swig/mforms.i
++++ b/library/forms/swig/mforms.i
+@@ -533,7 +533,7 @@ inline boost::function<void (mforms::TextEntryAction)> pycall_void_entryaction_f
+
+ #define SWIG_ADD_SIGNAL_BOOL_INT_CALLBACK(method, signal)\
+ void add_##method(PyObject *callback) { signal->connect(pycall_bool_int_fun(callback)); }\
+- bool call_##method(int i) { return (*signal)(i); }
++ bool call_##method(int i) { return *( (*signal)(i) ); }
+
+ #define SWIG_ADD_SIGNAL_VOID_ENTRYACTION_CALLBACK(method, signal)\
+ void add_##method(PyObject *callback) { signal->connect(pycall_void_entryaction_fun(callback)); }
+diff --git a/library/forms/view.cpp b/library/forms/view.cpp
+index ec49389..67ff486 100644
+--- a/library/forms/view.cpp
++++ b/library/forms/view.cpp
+@@ -512,7 +512,7 @@ DropPosition View::get_drop_position()
+ bool View::mouse_leave()
+ {
+ if (_signal_mouse_leave.num_slots() > 0)
+- return _signal_mouse_leave();
++ return *_signal_mouse_leave();
+ return false;
+ }
diff --git a/0013-mysql-workbench-no-json.patch b/0013-mysql-workbench-no-json.patch
new file mode 100644
index 000000000000..d290c261887a
--- /dev/null
+++ b/0013-mysql-workbench-no-json.patch
@@ -0,0 +1,58 @@
+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<std::vector<ColumnInfo> > 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/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..334b46749b8b
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,126 @@
+# Maintainer: Christian Hesse <mail@eworm.de>
+# Contributor: Alexandre Boily <alexandreboily@gmail.com>
+# Contributor: Illarion Kovalchuk <illarion.kovalchuk@gmail.com>
+# Contributor: totoloco <totoloco at gmail _dot_com>
+# Contributor: Ionut Biru <ibiru@archlinux.org>
+
+pkgname=mysql-workbench-git
+pkgver=6.3.5.r0.gaa9272c
+pkgrel=1
+pkgdesc='A cross-platform, visual database design tool developed by MySQL - git checkout'
+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'
+ 'pcre' 'tinyxml' 'libxml2' 'mysql-python' 'cairo'
+ 'python2-cairo' 'hicolor-icon-theme' 'desktop-file-utils' 'libiodbc'
+ 'mysql-connector-c++' 'vsqlite++' 'unixodbc' 'freetype2'
+ 'libantlr3c')
+optdepends=('gnome-keyring: store SSH/MySQL passwords in GNOME password manager'
+ 'python2-pyodbc: database migration')
+provides=('mysql-workbench')
+conflicts=('mysql-workbench')
+makedepends=('git' 'cmake' 'boost' 'curl' 'mesa' 'swig' 'java-runtime' 'imagemagick')
+install=mysql-workbench.install
+validpgpkeys=('A4A9406876FCBD3C456770C88C718D3B5072E1F5')
+source=('git://github.com/mysql/mysql-workbench.git'
+ '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'
+ '0012-mysql-workbench-cpp11.patch'
+ '0013-mysql-workbench-no-json.patch'
+ 'arch_linux_profile.xml')
+sha256sums=('SKIP'
+ '9d3e866b610460664522520f73b81777b5626fb0a282a5952b9800b751550bf7'
+ 'b189e15c6b6f5a707357d9a9297f39ee3a33264fd28b44d5de6f537f851f82cf'
+ 'b49d4ea352d2c2013b9c5834668c44521a0a2c5f9c7e3fe746ad94ce0d2bb865'
+ '9c2ae2fe7a4f59502bdcf591a07353c350b0ba29c3935c8242d97848cc0e50d3'
+ '2bc79f935cd5059409d32aa64832b7aa2c49ba533cc93d40a063bcbfe01a4485'
+ 'f76ffa7343b758ac0de2448e948c533e8623a0e426d293602ab7261c853ec684'
+ '663b6eed3715988e16a695f5810bdfb7e76aaeb28baaf4b11b2a73ee2bcb403d'
+ '28724c4b4cec29ce19aada08279df1b086381cd788fef7ae07c1860f7d17af7e')
+
+pkgver() {
+ cd mysql-workbench/
+
+ if GITTAG="$(git describe --abbrev=0 --tags 2>/dev/null)"; then
+ printf '%s.r%s.g%s' \
+ "$(sed -e "s/^${pkgname%%-git}//" -e 's/^[-_/a-zA-Z]\+//' -e 's/[-_+]/./g' <<< ${GITTAG})" \
+ "$(git rev-list --count ${GITTAG}..)" \
+ "$(git log -1 --format='%h')"
+ else
+ printf '0.r%s.g%s' \
+ "$(git rev-list --count master)" \
+ "$(git log -1 --format='%h')"
+ fi
+}
+
+prepare() {
+ cd mysql-workbench/
+
+ # Disable 'Help' -> 'Check for Updates'
+ # 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
+
+ # fix for C++11
+ # http://bugs.mysql.com/bug.php?id=78668
+ patch -Np1 < "${srcdir}"/0012-mysql-workbench-cpp11.patch
+
+ # we have no JSON, probably missing in mariadb
+ patch -Np1 < "${srcdir}"/0013-mysql-workbench-no-json.patch
+
+ # 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
+
+ # put antlr into place
+ install -D ${srcdir}/antlr-3.4-complete.jar ${srcdir}/linux-res/bin/antlr-3.4-complete.jar
+}
+
+build() {
+ cd mysql-workbench/
+
+ # link to libsigc++, which requires ISO C++ 2011 standard
+ # so add the flag to enable c++11
+ cmake . \
+ -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DCMAKE_CXX_FLAGS="-std=c++11"
+
+ make
+}
+
+package() {
+ cd mysql-workbench/
+
+ make DESTDIR="${pkgdir}" install
+
+ # icons
+ for SIZE in 16 24 32 48 64 96 128; do
+ convert -scale ${SIZE} \
+ images/icons/linux/128x128/apps/mysql-workbench.png \
+ ${srcdir}/mysql-workbench.png
+ install -D -m0644 ${srcdir}/mysql-workbench.png "${pkgdir}/usr/share/icons/hicolor/${SIZE}x${SIZE}/apps/mysql-workbench.png"
+ done
+
+ install -D -m 0644 "${srcdir}"/arch_linux_profile.xml \
+ "${pkgdir}"/usr/share/mysql-workbench/mysql.profiles/Arch_Linux_\(MariaDB_5.5_Package\).xml
+}
+
diff --git a/arch_linux_profile.xml b/arch_linux_profile.xml
new file mode 100644
index 000000000000..cdfa8756ed1c
--- /dev/null
+++ b/arch_linux_profile.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+
+<data>
+ <value type="dict">
+ <value type="string" key="sys.config.path">/etc/mysql/my.cnf</value>
+ <value type="string" key="sys.config.section">mysqld</value>
+
+ <value type="string" key="sys.mysqld.start">systemctl start mysqld</value>
+ <value type="string" key="sys.mysqld.stop">systemctl stop mysqld</value>
+ <value type="string" key="sys.mysqld.status">ps -C mysqld -o pid=</value>
+ <value type="int" key="sys.usesudo">0</value>
+
+ <value type="string" key="sys.system">Linux</value>
+ <value type="string" key="serverVersion">10.0</value>
+ </value>
+</data>
diff --git a/mysql-workbench.install b/mysql-workbench.install
new file mode 100644
index 000000000000..a7bbe097a7c3
--- /dev/null
+++ b/mysql-workbench.install
@@ -0,0 +1,14 @@
+post_install() {
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+ update-desktop-database -q
+ update-mime-database usr/share/mime
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
+