Skip to content

--set-rpath fails with “no version information available”, while exporting LD_LIBRARY_PATH works #99

@michalrus

Description

@michalrus

So I’ve got this expression to install Transcribe!, that is distributed in binary form:

super: self:

let

  libpath = super.lib.makeLibraryPath (with super; [
    stdenv.cc.cc glib gtk2 atk pango cairo gdk_pixbuf alsaLib
    xorg.libX11 xorg.libSM libpng12 gstreamer gst_plugins_base zlib
  ]);

in

super.stdenv.mkDerivation {
  name = "transcribe-8.40";

  src = super.fetchurl {
    url = "http://www.seventhstring.com/xscribe/downlinux64/xsc64setup.tar.gz";
    sha256 = "0fqs0f2p9kbp1skgqm5sgcq9xxf6rccbm22fvka8qmpvxpsxpcbs";
  };

  buildInputs = [ super.makeWrapper ];

  dontPatchELF = true;

  installPhase = ''
    mkdir -p $out/bin
    cp transcribe $out/bin

    patchelf \
      --set-interpreter "$(cat ${super.stdenv.cc}/nix-support/dynamic-linker)" \
      --set-rpath "${libpath}" \
      $out/bin/transcribe

    #wrapProgram $out/bin/transcribe \
    #  --set LD_LIBRARY_PATH "${libpath}"
  '';
}

When I run this, I’m getting:

% transcribe
transcribe: transcribe: no version information available (required by transcribe)
[…]
transcribe: transcribe: no version information available (required by transcribe)
transcribe: symbol lookup error: transcribe: undefined symbol:
(127)%

However, after removing --set-rpath and wrapping the program in a wrapper that exports LD_LIBRARY_PATH with what was previously passed to --set-rpath, the program launches.

Also, with --set-rpath, ldd $(which transcribe) returns lots of the exact error, no version information available. After setting a proper LD_LIBRARY_PATH, it shows correct paths.

The RPATH in original binary is empty.

How can I get this to work using --set-rpath only?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions