f2596591e5
With Qt 6 copy and sign pdftops from brew.
107 lines
3.8 KiB
QML
107 lines
3.8 KiB
QML
import qbs.Process
|
|
import qbs.File
|
|
import qbs.FileInfo
|
|
import qbs.Utilities
|
|
|
|
Module {
|
|
|
|
additionalProductTypes: ["pdftops.bundled"]
|
|
|
|
readonly property string pdftopsPath: pdftopsProbe.path
|
|
readonly property bool pdftopsPresent: pdftopsProbe.found
|
|
|
|
Probe {
|
|
id: pdftopsProbe
|
|
|
|
property string path
|
|
property string sourceDirectory: project.sourceDirectory
|
|
property string qtVersion: product.Qt.core.version
|
|
|
|
configure: {
|
|
if (Utilities.versionCompare(qtVersion, "6") >= 0) {
|
|
var detector = new Process();
|
|
try {
|
|
if (detector.exec("which", ["pdftops"]) === 0) {
|
|
var binPath = detector.readStdOut().trim(); // we can read only one time
|
|
if (detector.exec("realpath", [binPath]) === 0) {
|
|
path = detector.readStdOut().trim();
|
|
console.info("Found pdftops at '" + path + "'.");
|
|
found = true;
|
|
}
|
|
}
|
|
} finally {
|
|
detector.close();
|
|
}
|
|
} else {
|
|
var binPath = sourceDirectory + "/dist/macx/bin64/pdftops";
|
|
if (product.qbs.architecture.contains("x86_64") && File.exists(binPath)) {
|
|
path = binPath;
|
|
found = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Rule {
|
|
multiplex: true
|
|
inputs: ["pdftops.in"]
|
|
|
|
prepare: {
|
|
var cmds = [];
|
|
|
|
var src = input.filePath;
|
|
var dst = output.filePath;
|
|
var copyCmd = new Command("cp", [src, dst]);
|
|
copyCmd.highlight = 'filegen';
|
|
copyCmd.description = "copying " + input.fileName;
|
|
cmds.push(copyCmd);
|
|
|
|
if (!product.codesign.enableCodeSigning)
|
|
return cmds;
|
|
|
|
var actualSigningIdentity = product.codesign._actualSigningIdentity;
|
|
if (!actualSigningIdentity) {
|
|
throw "No codesigning identities (i.e. certificate and private key pairs) matching “"
|
|
+ product.codesign.signingIdentity + "” were found.";
|
|
}
|
|
|
|
var args = ["--force", "--sign", actualSigningIdentity.SHA1];
|
|
|
|
// If signingTimestamp is undefined or empty, do not specify the flag at all -
|
|
// this uses the system-specific default behavior
|
|
var signingTimestamp = product.codesign.signingTimestamp;
|
|
if (signingTimestamp) {
|
|
// If signingTimestamp is an empty string, specify the flag but do
|
|
// not specify a value - this uses a default Apple-provided server
|
|
var flag = "--timestamp";
|
|
if (signingTimestamp)
|
|
flag += "=" + signingTimestamp;
|
|
args.push(flag);
|
|
}
|
|
|
|
args = args.concat(product.codesign.codesignFlags || []);
|
|
|
|
args.push(output.filePath);
|
|
console.warn(args);
|
|
var cmdSign = new Command(product.codesign.codesignPath, args);
|
|
cmdSign.description = "codesign " + output.fileName
|
|
+ " (" + actualSigningIdentity.subjectInfo.CN + ")";
|
|
cmdSign.outputFilePath = output.filePath;
|
|
cmdSign.stderrFilterFunction = function(stderr) {
|
|
return stderr.replace(outputFilePath + ": replacing existing signature\n", "");
|
|
};
|
|
cmds.push(cmdSign);
|
|
|
|
return cmds;
|
|
}
|
|
|
|
Artifact {
|
|
filePath: FileInfo.joinPaths(product.qbs.installRoot, product.qbs.installPrefix,
|
|
product.buildconfig.installAppPath,
|
|
product.targetName + ".app", "Contents", "MacOS", "pdftops")
|
|
fileTags: ["pdftops.bundled"]
|
|
}
|
|
}
|
|
}
|
|
|