uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
189
pkgs/applications/misc/mysql-workbench/default.nix
Normal file
189
pkgs/applications/misc/mysql-workbench/default.nix
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
{ lib, stdenv
|
||||
, fetchurl
|
||||
, substituteAll
|
||||
, cmake
|
||||
, ninja
|
||||
, pkg-config
|
||||
, glibc
|
||||
, gtk3
|
||||
, gtkmm3
|
||||
, pcre
|
||||
, swig
|
||||
, antlr4_8
|
||||
, sudo
|
||||
, mysql
|
||||
, libxml2
|
||||
, libmysqlconnectorcpp
|
||||
, vsqlite
|
||||
, gdal
|
||||
, libiodbc
|
||||
, libpthreadstubs
|
||||
, libXdmcp
|
||||
, libuuid
|
||||
, libzip
|
||||
, libsecret
|
||||
, libssh
|
||||
, python2
|
||||
, jre
|
||||
, boost
|
||||
, libsigcxx
|
||||
, libX11
|
||||
, openssl
|
||||
, rapidjson
|
||||
, proj
|
||||
, cairo
|
||||
, libxkbcommon
|
||||
, libepoxy
|
||||
, wrapGAppsHook
|
||||
, at-spi2-core
|
||||
, dbus
|
||||
, bash
|
||||
, coreutils
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (python2.pkgs) paramiko pycairo pyodbc;
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "mysql-workbench";
|
||||
version = "8.0.21";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-${version}-src.tar.gz";
|
||||
sha256 = "0rqgr1dcbf6yp60hninbw5dnwykx5ngbyhhx0sbhgv0m0cq5a44h";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./fix-gdal-includes.patch
|
||||
|
||||
(substituteAll {
|
||||
src = ./hardcode-paths.patch;
|
||||
catchsegv = "${glibc.bin}/bin/catchsegv";
|
||||
bash = "${bash}/bin/bash";
|
||||
cp = "${coreutils}/bin/cp";
|
||||
dd = "${coreutils}/bin/dd";
|
||||
ls = "${coreutils}/bin/ls";
|
||||
mkdir = "${coreutils}/bin/mkdir";
|
||||
nohup = "${coreutils}/bin/nohup";
|
||||
rm = "${coreutils}/bin/rm";
|
||||
rmdir = "${coreutils}/bin/rmdir";
|
||||
sudo = "${sudo}/bin/sudo";
|
||||
})
|
||||
|
||||
# Fix swig not being able to find headers
|
||||
# https://github.com/NixOS/nixpkgs/pull/82362#issuecomment-597948461
|
||||
(substituteAll {
|
||||
src = ./fix-swig-build.patch;
|
||||
cairoDev = "${cairo.dev}";
|
||||
})
|
||||
];
|
||||
|
||||
# have it look for 4.7.2 instead of 4.7.1
|
||||
preConfigure = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "antlr-4.7.1-complete.jar" "antlr-4.8-complete.jar"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
pkg-config
|
||||
jre
|
||||
swig
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gtk3
|
||||
gtkmm3
|
||||
libX11
|
||||
antlr4_8.runtime.cpp
|
||||
python2
|
||||
mysql
|
||||
libxml2
|
||||
libmysqlconnectorcpp
|
||||
vsqlite
|
||||
gdal
|
||||
boost
|
||||
libssh
|
||||
openssl
|
||||
rapidjson
|
||||
libiodbc
|
||||
pcre
|
||||
cairo
|
||||
libuuid
|
||||
libzip
|
||||
libsecret
|
||||
libsigcxx
|
||||
proj
|
||||
|
||||
# python dependencies:
|
||||
paramiko
|
||||
pycairo
|
||||
pyodbc
|
||||
# TODO: package sqlanydb and add it here
|
||||
|
||||
# transitive dependencies:
|
||||
libpthreadstubs
|
||||
libXdmcp
|
||||
libxkbcommon
|
||||
libepoxy
|
||||
at-spi2-core
|
||||
dbus
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs tools/get_wb_version.sh
|
||||
'';
|
||||
|
||||
# error: 'OGRErr OGRSpatialReference::importFromWkt(char**)' is deprecated
|
||||
NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations";
|
||||
|
||||
cmakeFlags = [
|
||||
"-DMySQL_CONFIG_PATH=${mysql}/bin/mysql_config"
|
||||
"-DIODBC_CONFIG_PATH=${libiodbc}/bin/iodbc-config"
|
||||
"-DWITH_ANTLR_JAR=${antlr4_8.jarLocation}"
|
||||
# mysql-workbench 8.0.21 depends on libmysqlconnectorcpp 1.1.8.
|
||||
# Newer versions of connector still provide the legacy library when enabled
|
||||
# but the headers are in a different location.
|
||||
"-DMySQLCppConn_INCLUDE_DIR=${libmysqlconnectorcpp}/include/jdbc"
|
||||
];
|
||||
|
||||
# There is already an executable and a wrapper in bindir
|
||||
# No need to wrap both
|
||||
dontWrapGApps = true;
|
||||
|
||||
preFixup = ''
|
||||
gappsWrapperArgs+=(
|
||||
--prefix PATH : "${python2}/bin"
|
||||
--prefix PROJSO : "${proj}/lib/libproj.so"
|
||||
--set PYTHONPATH $PYTHONPATH
|
||||
)
|
||||
'';
|
||||
|
||||
# Let’s wrap the programs not ending with bin
|
||||
# until https://bugs.mysql.com/bug.php?id=91948 is fixed
|
||||
postFixup = ''
|
||||
find -L "$out/bin" -type f -executable -print0 \
|
||||
| while IFS= read -r -d ''' file; do
|
||||
if [[ "''${file}" != *-bin ]]; then
|
||||
echo "Wrapping program $file"
|
||||
wrapGApp "$file"
|
||||
fi
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Visual MySQL database modeling, administration and querying tool";
|
||||
longDescription = ''
|
||||
MySQL Workbench is a modeling tool that allows you to design
|
||||
and generate MySQL databases graphically. It also has administration
|
||||
and query development modules where you can manage MySQL server instances
|
||||
and execute SQL queries.
|
||||
'';
|
||||
|
||||
homepage = "http://wb.mysql.com/";
|
||||
license = licenses.gpl2;
|
||||
maintainers = [ maintainers.kkallio ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
--- a/backend/wbpublic/grt/spatial_handler.h
|
||||
+++ b/backend/wbpublic/grt/spatial_handler.h
|
||||
@@ -24,12 +24,12 @@
|
||||
#ifndef SPATIAL_HANDLER_H_
|
||||
#define SPATIAL_HANDLER_H_
|
||||
|
||||
-#include <gdal/ogrsf_frmts.h>
|
||||
-#include <gdal/ogr_api.h>
|
||||
-#include <gdal/gdal_pam.h>
|
||||
-#include <gdal/memdataset.h>
|
||||
-#include <gdal/gdal_alg.h>
|
||||
-#include <gdal/gdal.h>
|
||||
+#include <ogrsf_frmts.h>
|
||||
+#include <ogr_api.h>
|
||||
+#include <gdal_pam.h>
|
||||
+#include <memdataset.h>
|
||||
+#include <gdal_alg.h>
|
||||
+#include <gdal.h>
|
||||
#include <deque>
|
||||
#include "base/geometry.h"
|
||||
#include "wbpublic_public_interface.h"
|
||||
--- a/backend/wbpublic/grtui/geom_draw_box.h
|
||||
+++ b/backend/wbpublic/grtui/geom_draw_box.h
|
||||
@@ -25,7 +25,7 @@
|
||||
#define _GEOM_DRAW_BOX_H_
|
||||
|
||||
#include <mforms/drawbox.h>
|
||||
-#include <gdal/ogr_geometry.h>
|
||||
+#include <ogr_geometry.h>
|
||||
#include "wbpublic_public_interface.h"
|
||||
|
||||
class WBPUBLICBACKEND_PUBLIC_FUNC GeomDrawBox : public mforms::DrawBox {
|
||||
--- a/backend/wbpublic/objimpl/db.query/db_query_Resultset.cpp
|
||||
+++ b/backend/wbpublic/objimpl/db.query/db_query_Resultset.cpp
|
||||
@@ -21,9 +21,9 @@
|
||||
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
-#include <gdal/ogrsf_frmts.h>
|
||||
-#include <gdal/ogr_api.h>
|
||||
-#include <gdal/gdal.h>
|
||||
+#include <ogrsf_frmts.h>
|
||||
+#include <ogr_api.h>
|
||||
+#include <gdal.h>
|
||||
|
||||
#include <grts/structs.db.query.h>
|
||||
#include <grtpp_util.h>
|
||||
12
pkgs/applications/misc/mysql-workbench/fix-swig-build.patch
Normal file
12
pkgs/applications/misc/mysql-workbench/fix-swig-build.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
--- a/library/forms/swig/CMakeLists.txt
|
||||
+++ b/library/forms/swig/CMakeLists.txt
|
||||
@@ -57,7 +57,7 @@
|
||||
|
||||
set(CMAKE_SWIG_FLAGS -w312)
|
||||
set_source_files_properties(cairo.i PROPERTIES CPLUSPLUS ON)
|
||||
-set_property(SOURCE cairo.i PROPERTY SWIG_FLAGS -DCAIRO_HAS_PNG_FUNCTIONS=1 -fcompact -DSWIG_PYTHON_LEGACY_BOOL -I/usr/include)
|
||||
+set_property(SOURCE cairo.i PROPERTY SWIG_FLAGS -DCAIRO_HAS_PNG_FUNCTIONS=1 -fcompact -DSWIG_PYTHON_LEGACY_BOOL -I@cairoDev@/include)
|
||||
if(CMAKE_VERSION VERSION_LESS 3.8)
|
||||
swig_add_module(cairo python cairo.i)
|
||||
else()
|
||||
|
||||
187
pkgs/applications/misc/mysql-workbench/hardcode-paths.patch
Normal file
187
pkgs/applications/misc/mysql-workbench/hardcode-paths.patch
Normal file
|
|
@ -0,0 +1,187 @@
|
|||
--- a/frontend/linux/workbench/mysql-workbench.in
|
||||
+++ b/frontend/linux/workbench/mysql-workbench.in
|
||||
@@ -99,8 +99,8 @@
|
||||
if test "$WB_DEBUG" != ""; then
|
||||
$WB_DEBUG $MWB_BINARIES_DIR/mysql-workbench-bin "$@"
|
||||
else
|
||||
- if type -p catchsegv > /dev/null; then
|
||||
- catchsegv $MWB_BINARIES_DIR/mysql-workbench-bin "$@"
|
||||
+ if type -p @catchsegv@ > /dev/null; then
|
||||
+ @catchsegv@ $MWB_BINARIES_DIR/mysql-workbench-bin "$@"
|
||||
else
|
||||
$MWB_BINARIES_DIR/mysql-workbench-bin "$@"
|
||||
fi
|
||||
--- a/plugins/migration/frontend/migration_bulk_copy_data.py
|
||||
+++ b/plugins/migration/frontend/migration_bulk_copy_data.py
|
||||
@@ -110,7 +110,7 @@
|
||||
return 'sh'
|
||||
|
||||
def generate_import_script(self, connection_args, path_to_file, schema_name):
|
||||
- output = ['#!/bin/bash']
|
||||
+ output = ['#!/usr/bin/env bash']
|
||||
output.append('MYPATH=\`pwd\`')
|
||||
|
||||
output.append('if [ -f \$MYPATH/%s ] ; then' % self.error_log_name)
|
||||
@@ -164,7 +164,7 @@
|
||||
return 'sh'
|
||||
|
||||
def generate_import_script(self, connection_args, path_to_file, schema_name):
|
||||
- output = ['#!/bin/bash']
|
||||
+ output = ['#!/usr/bin/env bash']
|
||||
output.append('MYPATH=\`pwd\`')
|
||||
|
||||
output.append('if [ -f \$MYPATH/%s ] ; then' % self.error_log_name)
|
||||
@@ -417,7 +417,7 @@
|
||||
|
||||
with open(script_path, 'w+') as f:
|
||||
os.chmod(script_path, 0700)
|
||||
- f.write('#!/bin/bash\n\n')
|
||||
+ f.write('#!/usr/bin/env bash\n\n')
|
||||
f.write('MYPATH=`pwd`\n')
|
||||
|
||||
f.write("arg_source_password=\"<put source password here>\"\n")
|
||||
@@ -521,7 +521,7 @@
|
||||
|
||||
with open(script_path, 'w+') as f:
|
||||
os.chmod(script_path, 0700)
|
||||
- f.write('#!/bin/bash\n\n')
|
||||
+ f.write('#!/usr/bin/env bash\n\n')
|
||||
f.write('MYPATH=`pwd`\n')
|
||||
|
||||
f.write("arg_source_password=\"<put source password here>\"\n")
|
||||
--- a/plugins/wb.admin/backend/wb_server_control.py
|
||||
+++ b/plugins/wb.admin/backend/wb_server_control.py
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
UnixVariant = {
|
||||
"" : {
|
||||
- 'sudo_command' : "/usr/bin/sudo -k -S -p EnterPasswordHere ",
|
||||
+ 'sudo_command' : "@sudo@ -k -S -p EnterPasswordHere ",
|
||||
}
|
||||
}
|
||||
|
||||
--- a/plugins/wb.admin/backend/wb_server_management.py
|
||||
+++ b/plugins/wb.admin/backend/wb_server_management.py
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
def reset_sudo_prefix():
|
||||
global default_sudo_prefix
|
||||
- default_sudo_prefix = '/usr/bin/sudo -k -S -p EnterPasswordHere'
|
||||
+ default_sudo_prefix = '@sudo@ -k -S -p EnterPasswordHere'
|
||||
|
||||
reset_sudo_prefix()
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
if to_spawn:
|
||||
command += ' &'
|
||||
- sudo_prefix += ' /usr/bin/nohup'
|
||||
+ sudo_prefix += ' @nohup@'
|
||||
|
||||
# If as_user is the CURRENT then there's no need to sudo
|
||||
if as_user != Users.CURRENT:
|
||||
@@ -111,7 +111,7 @@
|
||||
if '/bin/sh' in sudo_prefix or '/bin/bash' in sudo_prefix:
|
||||
command = "LANG=C " + sudo_prefix + " \"" + command.replace('\\', '\\\\').replace('"', r'\"').replace('$','\\$') + "\""
|
||||
else:
|
||||
- command = "LANG=C " + sudo_prefix + " /bin/bash -c \"" + command.replace('\\', '\\\\').replace('"', r'\"').replace('$','\\$') + "\""
|
||||
+ command = "LANG=C " + sudo_prefix + " @bash@ -c \"" + command.replace('\\', '\\\\').replace('"', r'\"').replace('$','\\$') + "\""
|
||||
|
||||
return command
|
||||
|
||||
@@ -896,9 +896,9 @@
|
||||
if as_user == Users.CURRENT:
|
||||
raise PermissionDeniedError("Cannot set owner of directory %s" % path)
|
||||
else:
|
||||
- command = "/bin/mkdir %s && chown %s %s" % (quote_path(path), with_owner, quote_path(path))
|
||||
+ command = "@mkdir@ %s && chown %s %s" % (quote_path(path), with_owner, quote_path(path))
|
||||
else:
|
||||
- command = "/bin/mkdir %s" % (quote_path(path))
|
||||
+ command = "@mkdir@ %s" % (quote_path(path))
|
||||
|
||||
res = self.process_ops.exec_cmd(command,
|
||||
as_user = as_user,
|
||||
@@ -927,7 +927,7 @@
|
||||
@useAbsPath("path")
|
||||
def remove_directory(self, path, as_user = Users.CURRENT, user_password = None):
|
||||
output = StringIO.StringIO()
|
||||
- res = self.process_ops.exec_cmd('/bin/rmdir ' + quote_path(path),
|
||||
+ res = self.process_ops.exec_cmd('@rmdir@ ' + quote_path(path),
|
||||
as_user = as_user,
|
||||
user_password = user_password,
|
||||
output_handler = output.write,
|
||||
@@ -940,7 +940,7 @@
|
||||
@useAbsPath("path")
|
||||
def remove_directory_recursive(self, path, as_user = Users.CURRENT, user_password = None):
|
||||
output = StringIO.StringIO()
|
||||
- res = self.process_ops.exec_cmd('/bin/rm -R ' + quote_path(path),
|
||||
+ res = self.process_ops.exec_cmd('@rm@ -R ' + quote_path(path),
|
||||
as_user = as_user,
|
||||
user_password = user_password,
|
||||
output_handler = output.write,
|
||||
@@ -953,7 +953,7 @@
|
||||
@useAbsPath("path")
|
||||
def delete_file(self, path, as_user = Users.CURRENT, user_password = None):
|
||||
output = StringIO.StringIO()
|
||||
- res = self.process_ops.exec_cmd("/bin/rm " + quote_path(path),
|
||||
+ res = self.process_ops.exec_cmd("@rm@ " + quote_path(path),
|
||||
as_user = as_user,
|
||||
user_password = user_password,
|
||||
output_handler = output.write,
|
||||
@@ -1001,7 +1001,7 @@
|
||||
def _copy_file(self, source, dest, as_user = Users.CURRENT, user_password = None):
|
||||
output = StringIO.StringIO()
|
||||
|
||||
- res = self.process_ops.exec_cmd("LC_ALL=C /bin/cp " + quote_path(source) + " " + quote_path(dest),
|
||||
+ res = self.process_ops.exec_cmd("LC_ALL=C @cp@ " + quote_path(source) + " " + quote_path(dest),
|
||||
as_user = as_user,
|
||||
user_password = user_password,
|
||||
output_handler = output.write,
|
||||
@@ -1077,9 +1077,9 @@
|
||||
# for ls -l, the output format changes depending on stdout being a terminal or not
|
||||
# since both cases are possible, we need to handle both at the same time (1st line being total <nnnn> or not)
|
||||
# the good news is that if the line is there, then it will always start with total, regardless of the locale
|
||||
- command = 'LC_ALL=C /bin/ls -l -p %s' % quote_path(path)
|
||||
+ command = 'LC_ALL=C @ls@ -l -p %s' % quote_path(path)
|
||||
else:
|
||||
- command = 'LC_ALL=C /bin/ls -1 -p %s' % quote_path(path)
|
||||
+ command = 'LC_ALL=C @ls@ -1 -p %s' % quote_path(path)
|
||||
|
||||
output = StringIO.StringIO()
|
||||
res = self.process_ops.exec_cmd(command,
|
||||
@@ -2160,9 +2160,9 @@
|
||||
def get_range(self, start, end):
|
||||
f = StringIO.StringIO()
|
||||
if not self._need_sudo:
|
||||
- ret = self.server_helper.execute_command("/bin/dd if=%s ibs=1 skip=%i count=%i 2> /dev/null" % (quote_path(self.path), start, end-start), as_user = Users.CURRENT, user_password=None, output_handler=f.write)
|
||||
+ ret = self.server_helper.execute_command("@dd@ if=%s ibs=1 skip=%i count=%i 2> /dev/null" % (quote_path(self.path), start, end-start), as_user = Users.CURRENT, user_password=None, output_handler=f.write)
|
||||
else:
|
||||
- ret = self.server_helper.execute_command("/bin/dd if=%s ibs=1 skip=%i count=%i 2> /dev/null" % (quote_path(self.path), start, end-start), as_user = Users.ADMIN, user_password=self.get_password, output_handler=f.write)
|
||||
+ ret = self.server_helper.execute_command("@dd@ if=%s ibs=1 skip=%i count=%i 2> /dev/null" % (quote_path(self.path), start, end-start), as_user = Users.ADMIN, user_password=self.get_password, output_handler=f.write)
|
||||
|
||||
if ret != 0:
|
||||
raise RuntimeError("Could not get data from file %s" % self.path)
|
||||
@@ -2170,9 +2170,9 @@
|
||||
|
||||
def read_task(self, offset, file):
|
||||
if not self._need_sudo:
|
||||
- self.server_helper.execute_command("/bin/dd if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.CURRENT, user_password=None, output_handler=file.write)
|
||||
+ self.server_helper.execute_command("@dd@ if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.CURRENT, user_password=None, output_handler=file.write)
|
||||
else:
|
||||
- self.server_helper.execute_command("/bin/dd if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.ADMIN, user_password=self.get_password, output_handler=file.write)
|
||||
+ self.server_helper.execute_command("@dd@ if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.ADMIN, user_password=self.get_password, output_handler=file.write)
|
||||
# this will signal the reader end that there's no more data
|
||||
file.close()
|
||||
|
||||
@@ -2198,9 +2198,9 @@
|
||||
self._pos = offset
|
||||
f = StringIO.StringIO()
|
||||
if not self._need_sudo:
|
||||
- self.server_helper.execute_command("/bin/dd if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.CURRENT, user_password=None, output_handler=f.write)
|
||||
+ self.server_helper.execute_command("@dd@ if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.CURRENT, user_password=None, output_handler=f.write)
|
||||
else:
|
||||
- self.server_helper.execute_command("/bin/dd if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.ADMIN, user_password=self._password, output_handler=f.write)
|
||||
+ self.server_helper.execute_command("@dd@ if=%s ibs=1 skip=%i 2> /dev/null" % (quote_path(self.path), offset), as_user = Users.ADMIN, user_password=self._password, output_handler=f.write)
|
||||
self.data = f
|
||||
self.data.seek(0)
|
||||
if self.skip_first_newline:
|
||||
Loading…
Add table
Add a link
Reference in a new issue