Dependency issue with qt5.quick3d when building derivation

Description

Hi, I want to build an application substance designer in nixos, but i got a dependency error while i building it.

System

image

Dependency error

auto-patchelf: 29 dependencies could not be satisfied
error: auto-patchelf could not satisfy dependency libQt5RemoteObjects.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQml/RemoteObjects/libqtqmlremoteobjects.so
error: auto-patchelf could not satisfy dependency libQt5Quick3D.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/libqquick3dplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DRuntimeRender.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/libqquick3dplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DAssetImport.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/libqquick3dplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DRender.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/libqquick3dplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DUtils.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/libqquick3dplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3D.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Effects/libqtquick3deffectplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DRuntimeRender.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Effects/libqtquick3deffectplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DAssetImport.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Effects/libqtquick3deffectplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DRender.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Effects/libqtquick3deffectplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DUtils.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Effects/libqtquick3deffectplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3D.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Materials/libqtquick3dmaterialplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DRuntimeRender.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Materials/libqtquick3dmaterialplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DAssetImport.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Materials/libqtquick3dmaterialplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DRender.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Materials/libqtquick3dmaterialplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DUtils.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Materials/libqtquick3dmaterialplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3D.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Helpers/libqtquick3dhelpersplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DRuntimeRender.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Helpers/libqtquick3dhelpersplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DAssetImport.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Helpers/libqtquick3dhelpersplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DRender.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Helpers/libqtquick3dhelpersplugin.so
error: auto-patchelf could not satisfy dependency libQt5Quick3DUtils.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtQuick3D/Helpers/libqtquick3dhelpersplugin.so
error: auto-patchelf could not satisfy dependency libQt5RemoteObjects.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtRemoteObjects/libqtremoteobjects.so
error: auto-patchelf could not satisfy dependency libQt5Scxml.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtScxml/libdeclarative_scxml.so
error: auto-patchelf could not satisfy dependency libQt5Purchasing.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtPurchasing/libdeclarative_purchasing.so
error: auto-patchelf could not satisfy dependency libnvcuvid.so.1 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/plugins/iray/nvcuvid_video_decoder.so
error: auto-patchelf could not satisfy dependency libgdbm.so.4 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/plugins/pythonsdk/lib/python3.9/lib-dynload/_gdbm.cpython-39-x86_64-linux-gnu.so
error: auto-patchelf could not satisfy dependency libtk8.5.so wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/plugins/pythonsdk/lib/python3.9/lib-dynload/_tkinter.cpython-39-x86_64-linux-gnu.so
error: auto-patchelf could not satisfy dependency libtcl8.5.so wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/plugins/pythonsdk/lib/python3.9/lib-dynload/_tkinter.cpython-39-x86_64-linux-gnu.so
error: auto-patchelf could not satisfy dependency libreadline.so.6 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/plugins/pythonsdk/lib/python3.9/lib-dynload/readline.cpython-39-x86_64-linux-gnu.so
auto-patchelf failed to find all the required dependencies.
Add the missing dependencies to --libs or use `--ignore-missing="foo.so.1 bar.so etc.so"`.
error: builder for '/nix/store/k5mdj5gn8c8nm1jym8477c1x4ghli94v-substance_designer.drv' failed with exit code 1;
       last 10 log lines:
       > error: auto-patchelf could not satisfy dependency libQt5RemoteObjects.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtRemoteObjects/libqtremoteobjects.so
       > error: auto-patchelf could not satisfy dependency libQt5Scxml.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtScxml/libdeclarative_scxml.so
       > error: auto-patchelf could not satisfy dependency libQt5Purchasing.so.5 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/qml/QtPurchasing/libdeclarative_purchasing.so
       > error: auto-patchelf could not satisfy dependency libnvcuvid.so.1 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/plugins/iray/nvcuvid_video_decoder.so
       > error: auto-patchelf could not satisfy dependency libgdbm.so.4 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/plugins/pythonsdk/lib/python3.9/lib-dynload/_gdbm.cpython-39-x86_64-linux-gnu.so
       > error: auto-patchelf could not satisfy dependency libtk8.5.so wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/plugins/pythonsdk/lib/python3.9/lib-dynload/_tkinter.cpython-39-x86_64-linux-gnu.so
       > error: auto-patchelf could not satisfy dependency libtcl8.5.so wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/plugins/pythonsdk/lib/python3.9/lib-dynload/_tkinter.cpython-39-x86_64-linux-gnu.so
       > error: auto-patchelf could not satisfy dependency libreadline.so.6 wanted by /nix/store/2l86xvjwsp799jjdhwfvnlv23ll4c8wf-substance_designer/substance_designer/plugins/pythonsdk/lib/python3.9/lib-dynload/readline.cpython-39-x86_64-linux-gnu.so
       > auto-patchelf failed to find all the required dependencies.
       > Add the missing dependencies to --libs or use `--ignore-missing="foo.so.1 bar.so etc.so"`.
       For full logs, run 'nix log /nix/store/k5mdj5gn8c8nm1jym8477c1x4ghli94v-substance_designer.drv'.

Derivation

 {
   stdenv,
   rpm,
   cpio,
   fetchurl,
   glibc,
   gcc-unwrapped,
   autoPatchelfHook,
   libz,
   libGL,
   libsForQt5,
   opencolorio,
   alembic,
   freeimage,
   ace,
   embree,
   tbb,
   rPackages,
   python3,
   libGLU,
   xorg,
   libstdcxx5,
   libxml2,
   libxcrypt,
   harfbuzz,
   ncurses5,
   python311Packages,
   gdbm,
   readline,
   tcllib,
   tk,
   openssl_1_1,
   cudaPackages,
   libxcrypt-legacy
}:
let
  buildInputs = [ libsForQt5.qt5.qtwayland libsForQt5.qt3d libsForQt5.qt5.qtquickcontrols2 libsForQt5.full libxcrypt-legacy glibc gcc-unwrapped xorg.libXrandr xorg.libXrender xorg.libSM xorg.libICE xorg.libX11 xorg.libXext python311Packages.gssapi libz libGL opencolorio alembic freeimage ace embree rPackages.libbib python3 libGLU libstdcxx5 libxml2 libxcrypt harfbuzz ncurses5 gdbm readline cudaPackages.cudatoolkit tcllib tk openssl_1_1 tbb libsForQt5.qt5.qtbase ];
  nativeBuildInputs = [ autoPatchelfHook rpm cpio libsForQt5.wrapQtAppsHook ];

  src =
  if stdenv.hostPlatform.system == "x86_64-linux" then
    fetchurl {
      url = "https://download.substance3d.com/adobe-substance-3d-designer/12.x/Adobe_Substance_3D_Designer-12.2.1-5947-linux-x64-standard.rpm";
      sha256 = "t8fmzDqNAVzafm015siyUyGdlEAYh8kpFoSEmg8EqsY=";
    }
  else
    throw "Substance Designern not supported on ${stdenv.hostPlatform.system}";
in
stdenv.mkDerivation {
  name = "substance_designer";

  system = "x86_64-linux";

  inherit src buildInputs nativeBuildInputs;

  unpackPhase = "true";

  installPhase = ''
    mkdir -p $out/bin/
    mkdir -p $out/substance_designer/

    cp $src $out
    cd $out

    rpm2cpio *.rpm | cpio -idmv
    rm -rf *.rpm
    mv $out/opt/Adobe/Adobe_Substance_3D_Designer/* $out/substance_designer/
    rm -rf opt

    mv substance_designer/"Adobe Substance 3D Designer" substance_designer/sd3D
    ln -s substance_designer/sd3D bin/
  '';
}

Error from the application

Problem

I think a problem in this library qt5 quick3d, but I can’t find qt5 version of it in nixpkgs. What should I do ? Should I build qt5 quick3d library ? If so, can I attach this lib to buildInputs without adding it to nixpkgs repos, and will wrapQtAppsHook recognize this library ?

You could make a package for it locally but it’s easier to add it to nixpkgs libsForQt5.qtquick3d: init by Artturin · Pull Request #308874 · NixOS/nixpkgs · GitHub

If you need help finding the rest of those .so files you can use GitHub - nix-community/nix-index: Quickly locate nix packages with specific files [maintainers=@bennofs @figsoda @raitobezarius]

2 Likes