50 lines
1.3 KiB
Bash
50 lines
1.3 KiB
Bash
|
cargoInstallPostBuildHook() {
|
||
|
echo "Executing cargoInstallPostBuildHook"
|
||
|
|
||
|
releaseDir=target/@shortTarget@/$cargoBuildType
|
||
|
tmpDir="${releaseDir}-tmp";
|
||
|
|
||
|
mkdir -p $tmpDir
|
||
|
cp -r ${releaseDir}/* $tmpDir/
|
||
|
bins=$(find $tmpDir \
|
||
|
-maxdepth 1 \
|
||
|
-type f \
|
||
|
-executable ! \( -regex ".*\.\(so.[0-9.]+\|so\|a\|dylib\)" \))
|
||
|
|
||
|
echo "Finished cargoInstallPostBuildHook"
|
||
|
}
|
||
|
|
||
|
cargoInstallHook() {
|
||
|
echo "Executing cargoInstallHook"
|
||
|
|
||
|
runHook preInstall
|
||
|
|
||
|
# rename the output dir to a architecture independent one
|
||
|
|
||
|
releaseDir=target/@shortTarget@/$cargoBuildType
|
||
|
tmpDir="${releaseDir}-tmp";
|
||
|
|
||
|
mapfile -t targets < <(find "$NIX_BUILD_TOP" -type d | grep "${tmpDir}$")
|
||
|
for target in "${targets[@]}"; do
|
||
|
rm -rf "$target/../../${cargoBuildType}"
|
||
|
ln -srf "$target" "$target/../../"
|
||
|
done
|
||
|
mkdir -p $out/bin $out/lib
|
||
|
|
||
|
xargs -r cp -t $out/bin <<< $bins
|
||
|
find $tmpDir \
|
||
|
-maxdepth 1 \
|
||
|
-regex ".*\.\(so.[0-9.]+\|so\|a\|dylib\)" \
|
||
|
-print0 | xargs -r -0 cp -t $out/lib
|
||
|
rmdir --ignore-fail-on-non-empty $out/lib $out/bin
|
||
|
runHook postInstall
|
||
|
|
||
|
echo "Finished cargoInstallHook"
|
||
|
}
|
||
|
|
||
|
|
||
|
if [ -z "${installPhase-}" ]; then
|
||
|
installPhase=cargoInstallHook
|
||
|
postBuildHooks+=(cargoInstallPostBuildHook)
|
||
|
fi
|