about summary refs log tree commit diff
path: root/pkgs/development/interpreters/perl
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-01-18 12:07:00 +0000
committerAlyssa Ross <hi@alyssa.is>2023-01-18 12:10:34 +0000
commitb0997077e77465b0773339b0bd643d424c771fa5 (patch)
tree7f1acd4891601da695f06b3576121dadd88b11f5 /pkgs/development/interpreters/perl
parentf46ee73ba6851e458dedc78e3f0fe2c6eb099697 (diff)
perl: don't use libxcrypt on FreeBSD
Tested by building pkgsCross.x86_64-freebsd.perl from x86_64-linux.
Diffstat (limited to 'pkgs/development/interpreters/perl')
-rw-r--r--pkgs/development/interpreters/perl/default.nix11
1 files changed, 10 insertions, 1 deletions
diff --git a/pkgs/development/interpreters/perl/default.nix b/pkgs/development/interpreters/perl/default.nix
index 4d95ebf2052bf..ce7947a842ca6 100644
--- a/pkgs/development/interpreters/perl/default.nix
+++ b/pkgs/development/interpreters/perl/default.nix
@@ -36,7 +36,16 @@ let
       optional crossCompiling "mini";
     setOutputFlags = false;
 
-    propagatedBuildInputs = lib.optional enableCrypt libxcrypt;
+    # On FreeBSD, if Perl is built with threads support, having
+    # libxcrypt available will result in a build failure, because
+    # perl.h will get conflicting definitions of struct crypt_data
+    # from libc's unistd.h and libxcrypt's crypt.h.
+    #
+    # FreeBSD Ports has the same issue building the perl port if
+    # the libxcrypt port has been installed.
+    #
+    # Without libxcrypt, Perl will still find FreeBSD's crypt functions.
+    propagatedBuildInputs = lib.optional (enableCrypt && !stdenv.isFreeBSD) libxcrypt;
 
     disallowedReferences = [ stdenv.cc ];