From e05527d7ea3a22abb4a73bf05f79f85f779cfc51 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Tue, 10 Jan 2023 10:15:15 +0200 Subject: [PATCH] Optimize preparing pdftops tool. --- qbs/imports/VApp.qbs | 19 +----- src/app/puzzle/puzzle.qbs | 106 ++++++++++++++++++++++++++++++++ src/app/valentina/valentina.qbs | 106 ++++++++++++++++++++++++++++++++ 3 files changed, 213 insertions(+), 18 deletions(-) diff --git a/qbs/imports/VApp.qbs b/qbs/imports/VApp.qbs index e0c95198d..f2bc886ba 100644 --- a/qbs/imports/VApp.qbs +++ b/qbs/imports/VApp.qbs @@ -40,16 +40,6 @@ CppApplication { cpp.cxxLanguageVersion: "c++17" } - Group { - condition: qbs.targetOS.contains("windows") && (qbs.architecture.contains("x86_64") || qbs.architecture.contains("x86")) - name: "pdftops" - prefix: FileInfo.joinPaths(project.sourceDirectory, "dist", "win", FileInfo.pathSeparator()) - files: ["pdftops.exe"] - fileTags: ["pdftops_dist"] - qbs.install: true - qbs.installDir: buildconfig.installBinaryPath - } - Group { // See question on StackOwerflow "QSslSocket error when SSL is NOT used" (http://stackoverflow.com/a/31277055/3045403) // Copy of answer: @@ -103,16 +93,13 @@ CppApplication { multiplex: true alwaysRun: true condition: qbs.targetOS.contains("windows") && (qbs.architecture.contains("x86_64") || qbs.architecture.contains("x86")) - inputs: ["openssl_dist", "pdftops_dist"] + inputs: ["openssl_dist"] outputFileTags: ["testSuit"] outputArtifacts: { var artifactNames = inputs["openssl_dist"].map(function(file){ return FileInfo.joinPaths(product.buildDirectory, file.fileName); }); - artifactNames = artifactNames.concat(inputs["pdftops_dist"].map(function(file){ - return FileInfo.joinPaths(product.buildDirectory, file.fileName); - })); var artifacts = artifactNames.map(function(art){ var a = { filePath: art, @@ -130,10 +117,6 @@ CppApplication { return artifact.filePath; }); - sources = sources.concat(inputs["pdftops_dist"].map(function(artifact) { - return artifact.filePath; - })); - cmd.sources = sources; cmd.destination = outputs["testSuit"].map(function(artifact) { return artifact.filePath; diff --git a/src/app/puzzle/puzzle.qbs b/src/app/puzzle/puzzle.qbs index f513b2b02..3e43599e5 100644 --- a/src/app/puzzle/puzzle.qbs +++ b/src/app/puzzle/puzzle.qbs @@ -171,4 +171,110 @@ VApp { return defines; } } + + Group { + condition: qbs.targetOS.contains("windows") && (qbs.architecture.contains("x86_64") || qbs.architecture.contains("x86")) + name: "pdftops Windows" + prefix: FileInfo.joinPaths(project.sourceDirectory, "dist", "win", FileInfo.pathSeparator()) + files: ["pdftops.exe"] + fileTags: ["pdftops_dist_win"] + qbs.install: true + qbs.installDir: buildconfig.installBinaryPath + } + + Rule { + multiplex: true + alwaysRun: true + condition: qbs.targetOS.contains("windows") && (qbs.architecture.contains("x86_64") || qbs.architecture.contains("x86")) + inputs: ["pdftops_dist_win"] + outputFileTags: ["testSuit"] + outputArtifacts: { + var artifactNames = inputs["pdftops_dist_win"].map(function(file){ + return FileInfo.joinPaths(product.buildDirectory, file.fileName); + }); + + var artifacts = artifactNames.map(function(art){ + var a = { + filePath: art, + fileTags: ["testSuit"] + } + return a; + }); + return artifacts; + } + prepare: { + var cmd = new JavaScriptCommand(); + cmd.description = "Preparing test suit"; + + var sources = inputs["pdftops_dist_win"].map(function(artifact) { + return artifact.filePath; + }); + + cmd.sources = sources; + + var destination = inputs["pdftops_dist_win"].map(function(artifact) { + return FileInfo.joinPaths(product.buildDirectory, file.fileName); + }); + cmd.destination = destination; + cmd.sourceCode = function() { + for (var i in sources) { + File.copy(sources[i], destination[i]); + } + }; + return [cmd]; + } + } + + Group { + condition: qbs.targetOS.contains("macos") && qbs.architecture.contains("x86_64") + name: "pdftops MacOS" + prefix: FileInfo.joinPaths(project.sourceDirectory, "dist", "macx", "bin64", FileInfo.pathSeparator()) + files: ["pdftops"] + fileTags: ["pdftops_dist_macx"] + qbs.install: true + qbs.installDir: buildconfig.installBinaryPath + } + + Rule { + multiplex: true + alwaysRun: true + condition: qbs.targetOS.contains("windows") && qbs.architecture.contains("x86_64") && qbs.buildVariant === "debug" + inputs: ["pdftops_dist_macx"] + outputFileTags: ["testSuit"] + outputArtifacts: { + var artifactNames = inputs["pdftops_dist_macx"].map(function(file){ + return FileInfo.joinPaths(product.buildDirectory, file.fileName); + }); + + var artifacts = artifactNames.map(function(art){ + var a = { + filePath: art, + fileTags: ["testSuit"] + } + return a; + }); + return artifacts; + } + prepare: { + var cmd = new JavaScriptCommand(); + cmd.description = "Preparing test suit"; + + var sources = inputs["pdftops_dist_macx"].map(function(artifact) { + return artifact.filePath; + }); + + cmd.sources = sources; + + var destination = inputs["pdftops_dist_macx"].map(function(artifact) { + return FileInfo.joinPaths(product.buildDirectory, file.fileName); + }); + cmd.destination = destination; + cmd.sourceCode = function() { + for (var i in sources) { + File.copy(sources[i], destination[i]); + } + }; + return [cmd]; + } + } } diff --git a/src/app/valentina/valentina.qbs b/src/app/valentina/valentina.qbs index fd6ca3e23..612a2a56f 100644 --- a/src/app/valentina/valentina.qbs +++ b/src/app/valentina/valentina.qbs @@ -294,4 +294,110 @@ VApp { qbs.install: true qbs.installDir: buildconfig.installDataPath + FileInfo.pathSeparator() + "tables" + FileInfo.pathSeparator() + "templates" } + + Group { + condition: qbs.targetOS.contains("windows") && (qbs.architecture.contains("x86_64") || qbs.architecture.contains("x86")) + name: "pdftops Windows" + prefix: FileInfo.joinPaths(project.sourceDirectory, "dist", "win", FileInfo.pathSeparator()) + files: ["pdftops.exe"] + fileTags: ["pdftops_dist_win"] + qbs.install: true + qbs.installDir: buildconfig.installBinaryPath + } + + Rule { + multiplex: true + alwaysRun: true + condition: qbs.targetOS.contains("windows") && (qbs.architecture.contains("x86_64") || qbs.architecture.contains("x86")) + inputs: ["pdftops_dist_win"] + outputFileTags: ["testSuit"] + outputArtifacts: { + var artifactNames = inputs["pdftops_dist_win"].map(function(file){ + return FileInfo.joinPaths(product.buildDirectory, file.fileName); + }); + + var artifacts = artifactNames.map(function(art){ + var a = { + filePath: art, + fileTags: ["testSuit"] + } + return a; + }); + return artifacts; + } + prepare: { + var cmd = new JavaScriptCommand(); + cmd.description = "Preparing test suit"; + + var sources = inputs["pdftops_dist_win"].map(function(artifact) { + return artifact.filePath; + }); + + cmd.sources = sources; + + var destination = inputs["pdftops_dist_win"].map(function(artifact) { + return FileInfo.joinPaths(product.buildDirectory, file.fileName); + }); + cmd.destination = destination; + cmd.sourceCode = function() { + for (var i in sources) { + File.copy(sources[i], destination[i]); + } + }; + return [cmd]; + } + } + + Group { + condition: qbs.targetOS.contains("macos") && qbs.architecture.contains("x86_64") + name: "pdftops MacOS" + prefix: FileInfo.joinPaths(project.sourceDirectory, "dist", "macx", "bin64", FileInfo.pathSeparator()) + files: ["pdftops"] + fileTags: ["pdftops_dist_macx"] + qbs.install: true + qbs.installDir: buildconfig.installBinaryPath + } + + Rule { + multiplex: true + alwaysRun: true + condition: qbs.targetOS.contains("windows") && qbs.architecture.contains("x86_64") && qbs.buildVariant === "debug" + inputs: ["pdftops_dist_macx"] + outputFileTags: ["testSuit"] + outputArtifacts: { + var artifactNames = inputs["pdftops_dist_macx"].map(function(file){ + return FileInfo.joinPaths(product.buildDirectory, file.fileName); + }); + + var artifacts = artifactNames.map(function(art){ + var a = { + filePath: art, + fileTags: ["testSuit"] + } + return a; + }); + return artifacts; + } + prepare: { + var cmd = new JavaScriptCommand(); + cmd.description = "Preparing test suit"; + + var sources = inputs["pdftops_dist_macx"].map(function(artifact) { + return artifact.filePath; + }); + + cmd.sources = sources; + + var destination = inputs["pdftops_dist_macx"].map(function(artifact) { + return FileInfo.joinPaths(product.buildDirectory, file.fileName); + }); + cmd.destination = destination; + cmd.sourceCode = function() { + for (var i in sources) { + File.copy(sources[i], destination[i]); + } + }; + return [cmd]; + } + } }