Skip to content

Commit cb3e3e6

Browse files
gtalentprobonopd
authored andcommitted
Move RPATH adjustment to after library bundling (#216)
Libraries found with the RPATH could not be found by the bundler because the RPATH was getting changed before the bundling.
1 parent da29f36 commit cb3e3e6

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

tools/linuxdeployqt/shared.cpp

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1158,9 +1158,6 @@ DeploymentInfo deployQtLibraries(const QString &appDirPath, const QStringList &a
11581158
LogDebug() << "Changed LD_LIBRARY_PATH:" << newPath;
11591159
setenv("LD_LIBRARY_PATH",newPath.toUtf8().constData(),1);
11601160

1161-
foreach (const QString &executable, QStringList() << applicationBundle.binaryPath << additionalExecutables) {
1162-
changeIdentification("$ORIGIN/" + QFileInfo(executable).dir().relativeFilePath(libraryPath) + "/" + bundleLibraryDirectory, QFileInfo(executable).canonicalFilePath());
1163-
}
11641161
applicationBundle.libraryPaths = findAppLibraries(appDirPath);
11651162
LogDebug() << "applicationBundle.libraryPaths:" << applicationBundle.libraryPaths;
11661163

@@ -1175,17 +1172,24 @@ DeploymentInfo deployQtLibraries(const QString &appDirPath, const QStringList &a
11751172
LogDebug() << "allRPaths:" << allRPaths;
11761173

11771174
QList<LibraryInfo> libraries = getQtLibrariesForPaths(allBinaryPaths, appDirPath, allRPaths);
1175+
1176+
DeploymentInfo depInfo;
11781177
if (libraries.isEmpty() && !alwaysOwerwriteEnabled) {
1179-
LogWarning() << "Could not find any external Qt libraries to deploy in" << appDirPath;
1180-
LogWarning() << "Perhaps linuxdeployqt was already used on" << appDirPath << "?";
1181-
LogWarning() << "If so, you will need to rebuild" << appDirPath << "before trying again.";
1182-
LogWarning() << "Or ldd does not find the external Qt libraries but sees the system ones.";
1183-
LogWarning() << "If so, you will need to set LD_LIBRARY_PATH to the directory containing the external Qt libraries before trying again.";
1184-
LogWarning() << "FIXME: https://github.com/probonopd/linuxdeployqt/issues/2";
1185-
return DeploymentInfo();
1178+
LogWarning() << "Could not find any external Qt libraries to deploy in" << appDirPath;
1179+
LogWarning() << "Perhaps linuxdeployqt was already used on" << appDirPath << "?";
1180+
LogWarning() << "If so, you will need to rebuild" << appDirPath << "before trying again.";
1181+
LogWarning() << "Or ldd does not find the external Qt libraries but sees the system ones.";
1182+
LogWarning() << "If so, you will need to set LD_LIBRARY_PATH to the directory containing the external Qt libraries before trying again.";
1183+
LogWarning() << "FIXME: https://github.com/probonopd/linuxdeployqt/issues/2";
11861184
} else {
1187-
return deployQtLibraries(libraries, applicationBundle.path, allBinaryPaths, !additionalExecutables.isEmpty());
1185+
depInfo = deployQtLibraries(libraries, applicationBundle.path, allBinaryPaths, !additionalExecutables.isEmpty());
11881186
}
1187+
1188+
foreach (const QString &executable, QStringList() << applicationBundle.binaryPath << additionalExecutables) {
1189+
changeIdentification("$ORIGIN/" + QFileInfo(executable).dir().relativeFilePath(libraryPath), QFileInfo(executable).canonicalFilePath());
1190+
}
1191+
1192+
return depInfo;
11891193
}
11901194

11911195
void deployPlugins(const AppDirInfo &appDirInfo, const QString &pluginSourcePath,

0 commit comments

Comments
 (0)