Source

Target

Commits (1)
Showing with 23 additions and 12 deletions
......@@ -58,6 +58,7 @@ int main(int argc, char **argv)
qDebug() << " -use-debug-libs : Deploy with debug versions of frameworks and plugins (implies -no-strip)";
qDebug() << " -executable=<path> : Let the given executable use the deployed frameworks too";
qDebug() << " -qmldir=<path> : Deploy imports used by .qml files in the given path";
qDebug() << " -always-overwrite : Copy files enven if the target file exists";
qDebug() << "";
qDebug() << "macdeployqt takes an application bundle as input and makes it";
qDebug() << "self-contained by copying in the Qt frameworks and plugins that";
......@@ -85,6 +86,7 @@ int main(int argc, char **argv)
bool dmg = false;
bool useDebugLibs = false;
extern bool runStripEnabled;
extern bool alwaysOwerwriteEnabled;
QStringList additionalExecutables;
QStringList qmlDirs;
......@@ -126,6 +128,9 @@ int main(int argc, char **argv)
LogError() << "Missing qml directory path";
else
qmlDirs << argument.mid(index+1);
} else if (argument == QByteArray("-always-overwrite")) {
LogDebug() << "Argument found:" << argument;
alwaysOwerwriteEnabled = true;
} else if (argument.startsWith("-")) {
LogError() << "Unknown argument" << argument << "\n";
return 0;
......@@ -134,12 +139,8 @@ int main(int argc, char **argv)
DeploymentInfo deploymentInfo = deployQtFrameworks(appBundlePath, additionalExecutables, useDebugLibs);
if (plugins) {
if (deploymentInfo.qtPath.isEmpty())
deploymentInfo.pluginPath = "/Developer/Applications/Qt/plugins"; // Assume binary package.
else
deploymentInfo.pluginPath = deploymentInfo.qtPath + "/plugins";
if (plugins && !deploymentInfo.qtPath.isEmpty()) {
deploymentInfo.pluginPath = deploymentInfo.qtPath + "/plugins";
LogNormal();
deployPlugins(appBundlePath, deploymentInfo, useDebugLibs);
createQtConf(appBundlePath);
......
......@@ -55,6 +55,7 @@
#include "shared.h"
bool runStripEnabled = true;
bool alwaysOwerwriteEnabled = false;
int logLevel = 1;
using std::cout;
......@@ -96,9 +97,15 @@ inline QDebug operator<<(QDebug debug, const ApplicationBundleInfo &info)
bool copyFilePrintStatus(const QString &from, const QString &to)
{
if (QFile(to).exists()) {
LogNormal() << "File exists, skip copy:" << to;
return false;
} else if (QFile::copy(from, to)) {
if (alwaysOwerwriteEnabled) {
QFile(to).remove();
} else {
qDebug() << "File exists, skip copy:" << to;
return false;
}
}
if (QFile::copy(from, to)) {
QFile dest(to);
dest.setPermissions(dest.permissions() | QFile::WriteOwner | QFile::WriteUser);
LogNormal() << " copied:" << from;
......@@ -384,7 +391,7 @@ QString copyFramework(const FrameworkInfo &framework, const QString path)
return QString();
}
if (!QFile::exists(to)) { // copy the binary and resources if that wasn't done before
if (!QFile::exists(to) || alwaysOwerwriteEnabled) { // copy the binary and resources if that wasn't done before
copyFilePrintStatus(from, to);
const QString resourcesSourcePath = framework.frameworkPath + "/Resources";
......@@ -532,7 +539,7 @@ DeploymentInfo deployQtFrameworks(const QString &appBundlePath, const QStringLis
QStringList allBinaryPaths = QStringList() << applicationBundle.binaryPath << applicationBundle.libraryPaths
<< additionalExecutables;
QList<FrameworkInfo> frameworks = getQtFrameworksForPaths(allBinaryPaths, useDebugLibs);
if (frameworks.isEmpty()) {
if (frameworks.isEmpty() && !alwaysOwerwriteEnabled) {
LogWarning();
LogWarning() << "Could not find any external Qt frameworks to deploy in" << appBundlePath;
LogWarning() << "Perhaps macdeployqt was already used on" << appBundlePath << "?";
......@@ -636,7 +643,7 @@ void createQtConf(const QString &appBundlePath)
QDir().mkpath(filePath);
QFile qtconf(fileName);
if (qtconf.exists()) {
if (qtconf.exists() && !alwaysOwerwriteEnabled) {
LogWarning();
LogWarning() << fileName << "already exists, will not overwrite.";
LogWarning() << "To make sure the plugins are loaded from the correct location,";
......@@ -765,6 +772,9 @@ void createDiskImage(const QString &appBundlePath)
QFile dmg(dmgName);
if (dmg.exists() && alwaysOwerwriteEnabled)
dmg.remove();
if (dmg.exists()) {
LogNormal() << "Disk image already exists, skipping .dmg creation for" << dmg.fileName();
} else {
......