Commit d9cafeb0 authored by Morten Johan Sørvig's avatar Morten Johan Sørvig
Browse files

Work around legacy framework structures.


Existing versions of qmake produce application bundles
which are incompatible with OS X code signing.

Deploy framework Info.plist files to the correct
location. Patch them to remove any "_debug" suffix
on the value for CFBundleExecutable.

Task-number: QTBUG-32896
Change-Id: Id657e394f3bf919713a43e395e716bf46488c644
Reviewed-by: default avatarMorten Johan Sørvig <morten.sorvig@digia.com>
Showing with 21 additions and 0 deletions
......@@ -154,6 +154,19 @@ bool linkFilePrintStatus(const QString &file, const QString &link)
}
}
void patch_debugInInfoPlist(const QString &infoPlistPath)
{
// Older versions of qmake may have the "_debug" binary as
// the value for CFBundleExecutable. Remove it.
QFile infoPlist(infoPlistPath);
infoPlist.open(QIODevice::ReadOnly);
QByteArray contents = infoPlist.readAll();
infoPlist.close();
infoPlist.open(QIODevice::WriteOnly | QIODevice::Truncate);
contents.replace("_debug", ""); // surely there are no legit uses of "_debug" in an Info.plist
infoPlist.write(contents);
}
FrameworkInfo parseOtoolLibraryLine(const QString &line, bool useDebugLibs)
{
FrameworkInfo info;
......@@ -525,6 +538,14 @@ QString copyFramework(const FrameworkInfo &framework, const QString path)
linkFilePrintStatus("Versions/Current/Resources", frameworkDestinationDirectory + "/Resources");
linkFilePrintStatus(framework.version, frameworkDestinationDirectory + "/Versions/Current");
// Correct Info.plist location for frameworks produced by older versions of qmake
// Contents/Info.plist should be Versions/5/Resources/Info.plist
const QString legacyInfoPlistPath = framework.frameworkPath + "/Contents/Info.plist";
const QString correctInfoPlistPath = frameworkDestinationDirectory + "/Resources/Info.plist";
if (QFile(legacyInfoPlistPath).exists()) {
copyFilePrintStatus(legacyInfoPlistPath, correctInfoPlistPath);
patch_debugInInfoPlist(correctInfoPlistPath);
}
return frameworkDestinationBinaryPath;
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment