mysql-workbench: fix build, modernize and clean up deps (#344547)

This commit is contained in:
Austin Horstman
2024-12-30 15:07:51 -06:00
committed by GitHub
5 changed files with 52 additions and 67 deletions
@@ -3,49 +3,52 @@
stdenv,
fetchurl,
replaceVars,
cmake,
ninja,
pkg-config,
glibc,
gtk3,
gtkmm3,
pcre,
jre,
swig,
antlr4_12,
wrapGAppsHook3,
bash,
coreutils,
glibc,
sudo,
cairo,
mysql,
libiodbc,
proj,
antlr4_12,
gtkmm3,
libxml2,
libmysqlconnectorcpp,
vsqlite,
gdal,
libiodbc,
libpthreadstubs,
libXdmcp,
boost,
libssh,
openssl,
rapidjson,
libuuid,
libzip,
libsecret,
libssh,
python3,
jre,
boost,
libsigcxx,
libX11,
openssl,
rapidjson,
proj,
cairo,
libxkbcommon,
libepoxy,
wrapGAppsHook3,
at-spi2-core,
dbus,
bash,
coreutils,
zstd,
python3Packages,
}:
let
inherit (python3.pkgs) paramiko pycairo pyodbc;
# for some reason the package doesn't build with swig 4.3.0
swig_4_2 = swig.overrideAttrs (prevAttrs: {
version = "4.2.1";
src = prevAttrs.src.override {
hash = "sha256-VlUsiRZLScmbC7hZDzKqUr9481YXVwo0eXT/jy6Fda8=";
};
});
getCoreExe = lib.getExe' coreutils;
inherit (python3Packages) paramiko pycairo pyodbc;
in
stdenv.mkDerivation (finalAttrs: {
pname = "mysql-workbench";
@@ -58,23 +61,23 @@ stdenv.mkDerivation (finalAttrs: {
patches = [
(replaceVars ./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";
stat = "${coreutils}/bin/stat";
sudo = "${sudo}/bin/sudo";
bash = lib.getExe bash;
catchsegv = lib.getExe' glibc "catchsegv";
cp = getCoreExe "cp";
dd = getCoreExe "dd";
ls = getCoreExe "ls";
mkdir = getCoreExe "mkdir";
nohup = getCoreExe "nohup";
rm = getCoreExe "rm";
rmdir = getCoreExe "rmdir";
stat = getCoreExe "stat";
sudo = lib.getExe sudo;
})
# Fix swig not being able to find headers
# https://github.com/NixOS/nixpkgs/pull/82362#issuecomment-597948461
(replaceVars ./fix-swig-build.patch {
cairoDev = "${cairo.dev}";
cairoDev = lib.getDev cairo;
})
# Don't try to override the ANTLR_JAR_PATH specified in cmakeFlags
@@ -93,17 +96,13 @@ stdenv.mkDerivation (finalAttrs: {
ninja
pkg-config
jre
swig
swig_4_2
wrapGAppsHook3
];
buildInputs = [
gtk3
gtkmm3
libX11
antlr4_12.runtime.cpp
python3
mysql
gtkmm3
(libxml2.override { enableHttp = true; })
libmysqlconnectorcpp
vsqlite
@@ -112,29 +111,16 @@ stdenv.mkDerivation (finalAttrs: {
libssh
openssl
rapidjson
libiodbc
pcre
cairo
libuuid
libzip
libsecret
libsigcxx
proj
libiodbc
# python dependencies:
paramiko
pycairo
pyodbc
# TODO: package sqlanydb and add it here
# transitive dependencies:
libpthreadstubs
libXdmcp
libxkbcommon
libepoxy
at-spi2-core
dbus
zstd
];
env.NIX_CFLAGS_COMPILE = toString (
@@ -153,13 +139,13 @@ stdenv.mkDerivation (finalAttrs: {
);
cmakeFlags = [
"-DMySQL_CONFIG_PATH=${mysql}/bin/mysql_config"
"-DIODBC_CONFIG_PATH=${libiodbc}/bin/iodbc-config"
(lib.cmakeFeature "MySQL_CONFIG_PATH" (lib.getExe' mysql "mysql_config"))
(lib.cmakeFeature "IODBC_CONFIG_PATH" (lib.getExe' libiodbc "iodbc-config"))
(lib.cmakeFeature "ANTLR_JAR_PATH" "${antlr4_12.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.
"-DANTLR_JAR_PATH=${antlr4_12.jarLocation}"
"-DMySQLCppConn_INCLUDE_DIR=${libmysqlconnectorcpp}/include/jdbc"
(lib.cmakeFeature "MySQLCppConn_INCLUDE_DIR" "${lib.getDev libmysqlconnectorcpp}/include/jdbc")
];
# There is already an executable and a wrapper in bindir
@@ -168,8 +154,8 @@ stdenv.mkDerivation (finalAttrs: {
preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : "${python3}/bin"
--prefix PROJSO : "${proj}/lib/libproj.so"
--prefix PATH : "${lib.makeBinPath [ python3Packages.python ]}"
--prefix PROJSO : "${lib.getLib proj}/lib/libproj.so"
--set PYTHONPATH $PYTHONPATH
)
'';
+1 -2
View File
@@ -18148,12 +18148,11 @@ with pkgs;
lice = python3Packages.callPackage ../tools/misc/lice { };
mysql-workbench = callPackage ../applications/misc/mysql-workbench (let mysql = mysql80; in {
mysql-workbench = callPackage ../by-name/my/mysql-workbench/package.nix (let mysql = mysql80; in {
gdal = gdal.override {
libmysqlclient = mysql;
};
mysql = mysql;
pcre = pcre-cpp;
});
resp-app = libsForQt5.callPackage ../applications/misc/resp-app { };