1#!/usr/bin/env nix-shell
2#! nix-shell -p coreutils -i bash
3
4scriptDir=$(cd "`dirname "$0"`"; pwd)
5echo "scriptDir='$scriptDir'"
6
7function get_pkg_out() {
8 local pkg="$1"
9 local suffix="${2:-}"
10 local nixExp="with (import <nixpkgs> {}); ${pkg}"
11 echo "$(nix-build -E "$nixExp" --no-out-link)${suffix}"
12}
13
14interpreter="$(get_pkg_out "stdenv.glibc" "/lib/ld-linux-x86-64.so.2")"
15echo "interpreter='$interpreter'"
16
17# For clangformat dep on 'libtinfo.so.5'.
18ncursesLibDir="$(get_pkg_out "ncurses5.out" "/lib")"
19echo "ncursesLibDir='$ncursesLibDir'"
20
21# For clanformat dep on 'libstdc++.so.6'.
22stdcppLibDir="$(get_pkg_out "stdenv.cc.cc.lib" "/lib")"
23echo "stdcppLibDir='$stdcppLibDir'"
24
25# For clangformat dep on 'libz.so.1'.
26zlibLibDir="$(get_pkg_out "zlib.out" "/lib")"
27echo "zlibLibDir='$zlibLibDir'"
28
29function patchelf_mono() {
30 local exe="$1"
31 patchelf --set-interpreter "$interpreter" "$exe"
32}
33
34function patchelf_clangformat() {
35 local exe="$1"
36 patchelf --set-interpreter "$interpreter" "$exe"
37 local rpath="$ncursesLibDir:$stdcppLibDir:$zlibLibDir"
38 patchelf --set-rpath "$rpath" "$exe"
39}
40
41function print_nix_version_clangtools() {
42 nixClangToolsBin="$(get_pkg_out "clang-tools" "/bin")"
43 echo "nixClangToolsBin='$nixClangToolsBin'"
44 $nixClangToolsBin/clang-format --version
45}
46
47function print_nix_version_mono() {
48 nixMonoBin="$(get_pkg_out "mono" "/bin")"
49 echo "nixMonoBin='$nixMonoBin'"
50 $nixMonoBin/mono --version
51}
52