summary refs log tree commit diff
path: root/pkgs/build-support/rust/build-rust-crate/install-crate.nix
blob: 934c3a03176424f5f794f1acb5833ad616b99f76 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
crateName: metadata:
''
  runHook preInstall
  # always create $out even if we do not have binaries. We are detecting binary targets during compilation, if those are missing there is no way to only have $lib
  mkdir $out
  if [[ -s target/env ]]; then
    mkdir -p $lib
    cp target/env $lib/env
  fi
  if [[ -s target/link.final ]]; then
    mkdir -p $lib/lib
    cp target/link.final $lib/lib/link
  fi
  if [[ "$(ls -A target/lib)" ]]; then
    mkdir -p $lib/lib
    cp target/lib/* $lib/lib #*/
    for library in $lib/lib/*.so $lib/lib/*.dylib; do #*/
      ln -s $library $(echo $library | sed -e "s/-${metadata}//")
    done
  fi
  if [[ "$(ls -A target/build)" ]]; then # */
    mkdir -p $lib/lib
    cp -r target/build/* $lib/lib # */
  fi
  if [[ -d target/bin ]]; then
    if [[ "$(ls -A target/bin)" ]]; then
      mkdir -p $out/bin
      cp -P target/bin/* $out/bin # */
    fi
  fi
  runHook postInstall
''