Unverified Commit e1395f8e authored by Aleksana's avatar Aleksana Committed by GitHub
Browse files

ndi: add ffmpeg to rpath and fixup patchelf script (#462704)

parents deceef8d 9d7f73c7
Loading
Loading
Loading
Loading
+19 −16
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
  stdenv,
  fetchurl,
  avahi,
  ffmpeg_7,
  obs-studio-plugins,
}:

@@ -29,8 +30,6 @@ stdenv.mkDerivation rec {
    hash = versionJSON.hash;
  };

  buildInputs = [ avahi ];

  unpackPhase = ''
    unpackFile $src
    echo y | ./${installerName}.sh
@@ -38,27 +37,28 @@ stdenv.mkDerivation rec {
  '';

  installPhase = ''
    mkdir $out
    mkdir -p $out $out/share/doc/ndi-6
    mv bin/${ndiPlatform} $out/bin
    mv lib/${ndiPlatform} $out/lib
    # Fake ndi version 5 for compatibility with DistroAV (obs plugin using NDI)
    ln -s $out/lib/libndi.so $out/bin/libndi.so.5
    mv include examples $out/
    mv licenses $out/share/doc/ndi-6/licenses
    mv documentation/* $out/share/doc/ndi-6/
  '';

  dontPatchELF = true;

  fixupPhase = ''
    for i in $out/bin/*; do
      if [ -L "$i" ]; then continue; fi
      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$i"
      patchelf --set-rpath "${avahi}/lib:${ffmpeg_7.lib}/lib:${stdenv.cc.libc}/lib" "$i"
    done
    patchelf --set-rpath "${avahi}/lib:${stdenv.cc.libc}/lib" $out/bin/ndi-record
    patchelf --set-rpath "${avahi}/lib:${stdenv.cc.libc}/lib" $out/bin/ndi-free-audio
    mv lib/${ndiPlatform} $out/lib
    for i in $out/lib/*; do
      if [ -L "$i" ]; then continue; fi
      patchelf --set-rpath "${avahi}/lib:${stdenv.cc.libc}/lib" "$i"
      patchelf --set-rpath "${avahi}/lib:${ffmpeg_7.lib}/lib:${stdenv.cc.libc}/lib" "$i"
    done
    rm $out/bin/libndi.so.${majorVersion}
    ln -s $out/lib/libndi.so $out/bin/libndi.so.${majorVersion}
    # Fake ndi version 5 for compatibility with DistroAV (obs plugin using NDI)
    ln -s $out/lib/libndi.so $out/bin/libndi.so.5
    mv include examples $out/
    mkdir -p $out/share/doc/ndi-6
    mv licenses $out/share/doc/ndi-6/licenses
    mv documentation/* $out/share/doc/ndi-6/
  '';

  # Stripping breaks ndi-record.
@@ -81,6 +81,9 @@ stdenv.mkDerivation rec {
    ];
    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
    license = lib.licenses.unfree;
    maintainers = with lib.maintainers; [ globule655 ];
    maintainers = with lib.maintainers; [
      globule655
      ChaosAttractor
    ];
  };
}
+14 −12
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
  stdenv,
  fetchurl,
  avahi,
  ffmpeg_4,
  obs-studio-plugins,
}:

@@ -32,8 +33,6 @@ stdenv.mkDerivation rec {
    hash = versionJSON.hash;
  };

  buildInputs = [ avahi ];

  unpackPhase = ''
    unpackFile $src
    echo y | ./${installerName}.sh
@@ -41,24 +40,26 @@ stdenv.mkDerivation rec {
  '';

  installPhase = ''
    mkdir $out
    mkdir -p $out $out/share/doc/${pname}-${version}
    mv bin/${ndiPlatform} $out/bin
    mv lib/${ndiPlatform} $out/lib
    mv include examples $out/
    mv licenses $out/share/doc/${pname}-${version}/licenses
    mv documentation/* $out/share/doc/${pname}-${version}/
  '';

  dontPatchELF = true;

  fixupPhase = ''
    for i in $out/bin/*; do
      if [ -L "$i" ]; then continue; fi
      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$i"
      patchelf --set-rpath "${avahi}/lib:${ffmpeg_4.lib}/lib:${stdenv.cc.libc}/lib" "$i"
    done
    patchelf --set-rpath "${avahi}/lib:${stdenv.cc.libc}/lib" $out/bin/ndi-record
    mv lib/${ndiPlatform} $out/lib
    for i in $out/lib/*; do
      if [ -L "$i" ]; then continue; fi
      patchelf --set-rpath "${avahi}/lib:${stdenv.cc.libc}/lib" "$i"
      patchelf --set-rpath "${avahi}/lib:${ffmpeg_4.lib}/lib:${stdenv.cc.libc}/lib" "$i"
    done
    rm $out/bin/libndi.so.${majorVersion}
    ln -s $out/lib/libndi.so.${version} $out/bin/libndi.so.${majorVersion}
    mv include examples $out/
    mkdir -p $out/share/doc/${pname}-${version}
    mv licenses $out/share/doc/${pname}-${version}/licenses
    mv documentation/* $out/share/doc/${pname}-${version}/
  '';

  # Stripping breaks ndi-record.
@@ -78,6 +79,7 @@ stdenv.mkDerivation rec {
      "aarch64-linux"
      "armv7l-linux"
    ];
    maintainers = with lib.maintainers; [ ChaosAttractor ];
    hydraPlatforms = [ ];
    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
    license = lib.licenses.unfree;