Unverified Commit f23b7584 authored by Austin Horstman's avatar Austin Horstman Committed by GitHub
Browse files

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

parents 5543e308 37cbc94d
Loading
Loading
Loading
Loading
+51 −65
Original line number Diff line number Diff line
@@ -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,
  libuuid,
  libzip,
  libsecret,
  libssh,
  python3,
  jre,
  boost,
  libsigcxx,
  libX11,
  libssh,
  openssl,
  rapidjson,
  proj,
  cairo,
  libxkbcommon,
  libepoxy,
  wrapGAppsHook3,
  at-spi2-core,
  dbus,
  bash,
  coreutils,
  zstd,
  libuuid,
  libzip,
  libsecret,
  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
Original line number Diff line number Diff line
@@ -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 { };