about summary refs log tree commit diff
path: root/doc/platform-notes.xml
diff options
context:
space:
mode:
authorDaiderd Jordan <daiderd@gmail.com>2018-07-30 23:25:33 +0200
committerDaiderd Jordan <daiderd@gmail.com>2018-08-01 20:58:45 +0200
commit61a1b20d23132639f556346d1a27436db506cc04 (patch)
treed72ebaab05e5762abadf9e16cb5139bbe2a617cc /doc/platform-notes.xml
parent742627f27185944ccea50806699b042c2a77e076 (diff)
doc: add darwin installCheckTarget example
Diffstat (limited to 'doc/platform-notes.xml')
-rw-r--r--doc/platform-notes.xml32
1 files changed, 32 insertions, 0 deletions
diff --git a/doc/platform-notes.xml b/doc/platform-notes.xml
index b2c20c2d35c09..ea581421547db 100644
--- a/doc/platform-notes.xml
+++ b/doc/platform-notes.xml
@@ -29,6 +29,7 @@
       }
     </programlisting>
    </listitem>
+
    <listitem>
     <para>
      On darwin libraries are linked using absolute paths, libraries are
@@ -46,6 +47,37 @@
       }
     </programlisting>
    </listitem>
+
+   <listitem>
+    <para>
+     Even if the libraries are linked using absolute paths and resolved via
+     their <literal>install_name</literal> correctly, tests can sometimes fail
+     to run binaries.  This happens because the <varname>checkPhase</varname>
+     runs before the libraries are installed.
+    </para>
+    <para>
+     This can usually be solved by running the tests after the
+     <varname>installPhase</varname> or alternatively by using
+     <varname>DYLD_LIBRARY_PATH</varname>. More information about this variable
+     can be found in the <citerefentry><refentrytitle>dyld</refentrytitle>
+     <manvolnum>1</manvolnum></citerefentry> manpage.
+    </para>
+<programlisting>
+      dyld: Library not loaded: /nix/store/7hnmbscpayxzxrixrgxvvlifzlxdsdir-jq-1.5-lib/lib/libjq.1.dylib
+      Referenced from: /private/tmp/nix-build-jq-1.5.drv-0/jq-1.5/tests/../jq
+      Reason: image not found
+      ./tests/jqtest: line 5: 75779 Abort trap: 6
+    </programlisting>
+<programlisting>
+      stdenv.mkDerivation {
+        name = "libfoo-1.2.3";
+        # ...
+        doInstallCheck = true;
+        installCheckTarget = "check";
+      }
+    </programlisting>
+   </listitem>
+
    <listitem>
     <para>
      Some packages assume xcode is available and use <command>xcrun</command>