Unverified Commit 341a8aa7 authored by Randy Eckenrode's avatar Randy Eckenrode
Browse files

bacula: fix build on Darwin

After the CoreFoundation hook was dropped, bacula requires the following
changes to build on Darwin:

* Ensure bacula links CoreFoundation. Override incorrectly failing
  `configure` tests and add gettext as a build input. Even if those
  tests pass, bacula only links CoreFoundation when it finds libintl.
* Add Kerberos framework. Required to build on x86_64-darwin.
parent 9f2b9d88
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
{ lib, stdenv, fetchurl, sqlite, postgresql, zlib, acl, ncurses, openssl, readline
, CoreFoundation, IOKit
, gettext, CoreFoundation, IOKit, Kerberos
}:

stdenv.mkDerivation rec {
@@ -19,8 +19,10 @@ stdenv.mkDerivation rec {

  buildInputs = [ postgresql sqlite zlib ncurses openssl readline ]
    ++ lib.optionals stdenv.hostPlatform.isDarwin [
      gettext # bacula requires CoreFoundation, but its `configure` script will only link it when it detects libintl.
      CoreFoundation
      IOKit
      Kerberos
    ]
    # acl relies on attr, which I can't get to build on darwin
    ++ lib.optional (!stdenv.hostPlatform.isDarwin) acl;
@@ -31,7 +33,13 @@ stdenv.mkDerivation rec {
    "--with-logdir=/var/log/bacula"
    "--with-working-dir=/var/lib/bacula"
    "--mandir=\${out}/share/man"
  ] ++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) "ac_cv_func_setpgrp_void=yes";
  ] ++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) "ac_cv_func_setpgrp_void=yes"
    ++ lib.optionals stdenv.isDarwin [
      # bacula’s `configure` script fails to detect CoreFoundation correctly,
      # but these symbols are available in the nixpkgs CoreFoundation framework.
      "gt_cv_func_CFLocaleCopyCurrent=yes"
      "gt_cv_func_CFPreferencesCopyAppValue=yes"
  ];

  installFlags = [
    "logdir=\${out}/logdir"
+1 −1
Original line number Diff line number Diff line
@@ -6083,7 +6083,7 @@ with pkgs;
  };
  bacula = callPackage ../tools/backup/bacula {
    inherit (darwin.apple_sdk.frameworks) CoreFoundation IOKit;
    inherit (darwin.apple_sdk.frameworks) CoreFoundation IOKit Kerberos;
  };
  bacon = callPackage ../development/tools/bacon {