diff --git a/cmake/DeployMacros.cmake b/cmake/DeployMacros.cmake index f156f9a8..91e85323 100644 --- a/cmake/DeployMacros.cmake +++ b/cmake/DeployMacros.cmake @@ -631,6 +631,10 @@ macro(deploy_target _T) if (_ICON_NAME) set(_CMD_ ${_CMD_} COMMAND cp ${_VERB} -f ${_ICON_FN} ${_AGD}/usr/share/pixmaps) endif() + set(_bintool -l "${CMAKE_LDD}") + if (CMAKE_CROSSCOMPILING) + set(_bintool -L "${CMAKE_READELF}" --dpkg-workdir "${CMAKE_DPKG_WORKDIR}") + endif() set(_deb_name "${_TV}_debian_${_DEB_ARCH}.deb") add_custom_target(deploy_${_T} # gather deb dir @@ -646,7 +650,7 @@ macro(deploy_target _T) COMMAND echo "Version: ${_DEBVERSION}" ${_C_echo} COMMAND echo "Architecture: ${_DEB_ARCH}" ${_C_echo} COMMAND echo "Maintainer: ${${_T}_COMPANY} <>" ${_C_echo} - COMMAND deploy_tool ${_OPTIONS} --prefix "Depends: " --dependencies -l ${CMAKE_LDD} -a "${_DEP_LIBS_CS}" -o "${_AGD}/usr/lib" ${_DEPLOY_DIR}/${_T} ${_ADD_DEPS} ${_C_echo} + COMMAND deploy_tool ${_OPTIONS} --prefix "Depends: " --dependencies ${_bintool} -a "${_DEP_LIBS_CS}" -o "${_AGD}/usr/lib" ${_DEPLOY_DIR}/${_T} ${_ADD_DEPS} ${_C_echo} COMMAND echo "Conflicts:" ${_C_echo} COMMAND echo "Replaces:" ${_C_echo} COMMAND echo "Section: misc" ${_C_echo} diff --git a/utils/deploy_tool/main.cpp b/utils/deploy_tool/main.cpp index c30c6eea..be493dc1 100644 --- a/utils/deploy_tool/main.cpp +++ b/utils/deploy_tool/main.cpp @@ -46,7 +46,7 @@ void usage() { piCout << ""; piCout << Green << Bold << "Usage:" << Default << "\"deploy_tool [-hvfC] [--dependencies [--prefix ]] " "[-p ] [-s ] [--ignore ] [-S ] " - "[-l ] [-D ] [-L | -W | -M ] " + "[-l ] [-D ] [--dpkg-workdir ] [-L | -W | -M ] " "[--name-tool ] [-d ] [-q ] [-a ] [-S ] " "[-P ] [--qt-plugins ] -o [ ...]\"" << NewLine; piCout << Green << Bold << "Details:"; @@ -63,6 +63,7 @@ void usage() { piCout << "-W " << Green << "- \"objdump\" path, overrides \"ldd\""; piCout << "-M " << Green << "- \"otool\" path, overrides \"ldd\""; piCout << "-D " << Green << "- \"dpkg\" path, default \"/usr/bin/dpkg\""; + piCout << "--dpkg-workdir " << Green << "- dpkg \"admindir\" path, default \"\""; piCout << "--name-tool " << Green << "- \"install_name_tool\" path, default \"install_name_tool\""; piCout << "-d " << Green << "- maximum dependepcies depth, default 8"; //piCout << "-Q, --Qt-force " << Green << "- force add Qt root dir, default takes from \"qmake -v\""; @@ -109,7 +110,7 @@ QtDep qt_deps[] = { int depth = 8; bool fake = false, is_ldd = true, is_deps = false, need_qt = false; -PIString ldd, readelf, objdump, otool, dpkg, nametool, out_dir, qt_dir, out_plugins_dir; +PIString ldd, readelf, objdump, otool, dpkg, nametool, out_dir, qt_dir, out_plugins_dir, dpkg_workdir; PIStringList styles, lib_dirs, add_libs, platforms, sqldrivers, input_files, plugin_libs; PISet all_libs, miss_libs, all_deps, frameworks, framework_libs, miss_frameworks, qt_plugins, ignore_libs; PIMap qt_filters; @@ -362,7 +363,10 @@ void procQt() { bool procDpkg(const PIString & l) { - PIString cmd = dpkg + " -S " + l + " 2> /dev/null"; + PIString dpkgdir; + if (!dpkg_workdir.isEmpty()) + dpkgdir = " --admindir=" + dpkg_workdir; + PIString cmd = dpkg + dpkgdir + " -S " + l + " 2> /dev/null"; PIString vs = execute(cmd); if (!vs.isEmpty()) { vs = vs.left(vs.find(":")); @@ -468,6 +472,7 @@ int main(int argc, char * argv[]) { cli.addArgument("Motool", true); cli.addArgument("name-tool", PIChar('\0'), true); cli.addArgument("Dpkg", true); + cli.addArgument("dpkg-workdir", PIChar('\0'), true); cli.addArgument("depth", true); cli.addArgument("qtdir", true); cli.addArgument("add_libs", true); @@ -493,6 +498,7 @@ int main(int argc, char * argv[]) { if (nametool.isEmpty()) nametool = "install_name_tool"; dpkg = cli.argumentValue("Dpkg"); + dpkg_workdir = cli.argumentValue("dpkg-workdir"); #ifdef WINDOWS readelf.replaceAll("/", "\\"); objdump.replaceAll("/", "\\");