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.
This commit is contained in:
Randy Eckenrode 2024-01-28 17:18:07 -05:00
parent 9f2b9d882f
commit 341a8aa7f7
No known key found for this signature in database
GPG Key ID: 64C1CD4EC2A600D9
2 changed files with 11 additions and 3 deletions

View File

@ -1,5 +1,5 @@
{ 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 [
# baculas `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"

View File

@ -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 {