on iko/ghcjs-patch-master help sign in
Fix for postgresql-libpg and musl (fixes #948) (#1056)
583acc2Hamish Mackenzie
lib/pkgconf-nixpkgs-map.nix+3−2
@@ -21,7 +21,6 @@ pkgs:
21 "cairo-ps" = [ pkgs."cairo" ];
21 "cairo-ps" = [ pkgs."cairo" ];
22 "cairo-svg" = [ pkgs."cairo" ];
22 "cairo-svg" = [ pkgs."cairo" ];
23 "crypt" = []; # provided by glibc
23 "crypt" = []; # provided by glibc
24− "crypto" = [ pkgs."openssl" ];
25 "curses" = [ pkgs."ncurses" ];
24 "curses" = [ pkgs."ncurses" ];
26 "dbusmenu-glib-0.4" = [ pkgs."libdbusmenu" ];
25 "dbusmenu-glib-0.4" = [ pkgs."libdbusmenu" ];
27 "dbusmenu-gtk3-0.4" = [ pkgs."libdbusmenu-gtk3" ]; # do we also need pkgs."gtk3"
26 "dbusmenu-gtk3-0.4" = [ pkgs."libdbusmenu-gtk3" ]; # do we also need pkgs."gtk3"
@@ -80,6 +79,7 @@ pkgs:
80 "lber" = [ pkgs."openldap" ];
79 "lber" = [ pkgs."openldap" ];
81 "ldap" = [ pkgs."openldap" ];
80 "ldap" = [ pkgs."openldap" ];
82 "libavutil" = [ pkgs."ffmpeg" ];
81 "libavutil" = [ pkgs."ffmpeg" ];
82+ "libcrypto" = [ pkgs."openssl".dev ];
83 "libgsasl" = [ pkgs."gsasl" ];
83 "libgsasl" = [ pkgs."gsasl" ];
84 "libpcre" = [ pkgs."pcre" ];
84 "libpcre" = [ pkgs."pcre" ];
85 "libqrencode" = [ pkgs."qrencode" ];
85 "libqrencode" = [ pkgs."qrencode" ];
@@ -88,6 +88,7 @@ pkgs:
88 "libsecp256k1" = [ pkgs."secp256k1" ];
88 "libsecp256k1" = [ pkgs."secp256k1" ];
89 "libsoup-2.4" = [ pkgs."libsoup" ];
89 "libsoup-2.4" = [ pkgs."libsoup" ];
90 "libsoup-gnome-2.4" = [ pkgs."libsoup" ];
90 "libsoup-gnome-2.4" = [ pkgs."libsoup" ];
91+ "libssl" = [ pkgs."openssl".dev ];
91 "libsystemd" = [ pkgs."systemd" ];
92 "libsystemd" = [ pkgs."systemd" ];
92 "libudev" = [ pkgs."systemd" ];
93 "libudev" = [ pkgs."systemd" ];
93 "libusb-1.0" = [ pkgs."libusb1" ];
94 "libusb-1.0" = [ pkgs."libusb1" ];
@@ -115,6 +116,7 @@ pkgs:
115 "png" = [ pkgs."libpng" ];
116 "png" = [ pkgs."libpng" ];
116 "poppler-glib" = [ pkgs."poppler" ];
117 "poppler-glib" = [ pkgs."poppler" ];
117 "pq" = [ pkgs."postgresql" ];
118 "pq" = [ pkgs."postgresql" ];
119+ "libpq" = [ pkgs."postgresql" ];
118 "pthread" = [];
120 "pthread" = [];
119 "pulse" = [ pkgs."libpulseaudio" ];
121 "pulse" = [ pkgs."libpulseaudio" ];
120 "pulse-simple" = [ pkgs."libpulseaudio" ];
122 "pulse-simple" = [ pkgs."libpulseaudio" ];
@@ -136,7 +138,6 @@ pkgs:
136 "sodium" = [ pkgs."libsodium" ];
138 "sodium" = [ pkgs."libsodium" ];
137 "sqlite3" = [ pkgs."sqlite" ];
139 "sqlite3" = [ pkgs."sqlite" ];
138 "ssh2" = [ pkgs."libssh2" ];
140 "ssh2" = [ pkgs."libssh2" ];
139− "ssl" = [ pkgs."openssl" ];
140 "statgrab" = [ pkgs."libstatgrab" ];
141 "statgrab" = [ pkgs."libstatgrab" ];
141 "stdc++" = []; # What is that?
142 "stdc++" = []; # What is that?
142 "stdc++.dll" = []; # What is that?
143 "stdc++.dll" = []; # What is that?
overlays/hackage-quirks.nix+18
@@ -73,6 +73,24 @@ in { haskell-nix = prev.haskell-nix // {
73 '';
73 '';
74 };
74 };
75
75
76+ # See https://github.com/input-output-hk/haskell.nix/issues/948
77+ postgrest = {
78+ cabalProject = ''
79+ packages: .
80+ package postgresql-libpq
81+ flags: +use-pkg-config
82+ '';
83+ modules = [(
84+ {pkgs, ...}: final.lib.mkIf pkgs.stdenv.hostPlatform.isMusl {
85+ # The order of -lssl and -lcrypto is important here
86+ packages.postgrest.configureFlags = [
87+ "--ghc-option=-optl=-lssl"
88+ "--ghc-option=-optl=-lcrypto"
89+ "--ghc-option=-optl=-L${pkgs.openssl.out}/lib"
90+ ];
91+ })];
92+ };
93+
76 }."${name}" or {};
94 }."${name}" or {};
77
95
78}; }
96}; }
overlays/musl.nix+5
@@ -15,6 +15,11 @@ final: prev: prev.lib.optionalAttrs prev.stdenv.hostPlatform.isMusl ({
15
15
16 numactl = prev.numactl.overrideAttrs (_: { configureFlags = "--enable-static"; });
16 numactl = prev.numactl.overrideAttrs (_: { configureFlags = "--enable-static"; });
17
17
18+ # See https://github.com/input-output-hk/haskell.nix/issues/948
19+ postgresql = (prev.postgresql.overrideAttrs (old: { dontDisableStatic = true; }))
20+ .override { enableSystemd = false; };
21+ openssl = prev.openssl.override { static = true; };
22+
18 # Fails on cross compile
23 # Fails on cross compile
19 nix = prev.nix.overrideAttrs (_: { doInstallCheck = false; });
24 nix = prev.nix.overrideAttrs (_: { doInstallCheck = false; });
20} // prev.lib.optionalAttrs (prev.lib.versionAtLeast prev.lib.trivial.release "20.03") {
25} // prev.lib.optionalAttrs (prev.lib.versionAtLeast prev.lib.trivial.release "20.03") {