Hello community, here is the log from the commit of package qbs for openSUSE:Factory checked in at 2019-12-07 15:10:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/qbs (Old) and /work/SRC/openSUSE:Factory/.qbs.new.4691 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qbs" Sat Dec 7 15:10:10 2019 rev:6 rq:754869 version:1.14.1 Changes: -------- --- /work/SRC/openSUSE:Factory/qbs/qbs.changes 2019-10-12 22:37:59.698508989 +0200 +++ /work/SRC/openSUSE:Factory/.qbs.new.4691/qbs.changes 2019-12-07 15:10:52.171834237 +0100 @@ -1,0 +2,6 @@ +Sat Dec 7 08:56:25 UTC 2019 - Christophe Giboudeaux <[email protected]> + +- Update to 1.14.1 + * Qt support: Fix static builds with Qt >= 5.13.1. + +------------------------------------------------------------------- Old: ---- qbs-src-1.14.0.tar.gz New: ---- qbs-src-1.14.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ qbs.spec ++++++ --- /var/tmp/diff_new_pack.uZNE2R/_old 2019-12-07 15:10:54.879833854 +0100 +++ /var/tmp/diff_new_pack.uZNE2R/_new 2019-12-07 15:10:54.883833853 +0100 @@ -1,7 +1,7 @@ # # spec file for package qbs # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LLC # Copyright (c) 2018 The Qt Company. # # All modifications and additions to the file contributed by third parties @@ -19,7 +19,7 @@ %define qt5_version 5.11.0 Name: qbs -Version: 1.14.0 +Version: 1.14.1 Release: 0 Summary: Modern build tool for software projects License: (LGPL-2.1-with-Qt-Company-Qt-exception-1.1 OR LGPL-3.0-only) AND GPL-3.0-with-Qt-Company-Qt-exception-1.1 ++++++ qbs-src-1.14.0.tar.gz -> qbs-src-1.14.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qbs-src-1.14.0/VERSION new/qbs-src-1.14.1/VERSION --- old/qbs-src-1.14.0/VERSION 2019-09-27 16:41:37.000000000 +0200 +++ new/qbs-src-1.14.1/VERSION 2019-10-16 15:22:00.000000000 +0200 @@ -1 +1 @@ -1.14.0 +1.14.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qbs-src-1.14.0/changelogs/changes-1.14.1.md new/qbs-src-1.14.1/changelogs/changes-1.14.1.md --- old/qbs-src-1.14.0/changelogs/changes-1.14.1.md 1970-01-01 01:00:00.000000000 +0100 +++ new/qbs-src-1.14.1/changelogs/changes-1.14.1.md 2019-10-16 15:22:00.000000000 +0200 @@ -0,0 +1,4 @@ +# Important bugfixes +* Qt support: Fix static builds on Windows (QBS-1465). +* Qt support: Fix static builds with Qt >= 5.13.1. +* Darwin: Adapt to Xcode 11. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qbs-src-1.14.0/share/qbs/imports/qbs/DarwinTools/darwin-tools.js new/qbs-src-1.14.1/share/qbs/imports/qbs/DarwinTools/darwin-tools.js --- old/qbs-src-1.14.0/share/qbs/imports/qbs/DarwinTools/darwin-tools.js 2019-09-27 16:41:37.000000000 +0200 +++ new/qbs-src-1.14.1/share/qbs/imports/qbs/DarwinTools/darwin-tools.js 2019-10-16 15:22:00.000000000 +0200 @@ -162,17 +162,17 @@ * Finds the first index of a replacement starting with one of the supported syntaxes * This is needed so we don't do recursive substitutions */ - function indexOfReplacementStart(syntaxes, str, offset) { + function indexOfReplacementStart(syntaxes, str) { var syntax; - var idx = str.length; + var idx = -1; for (var i in syntaxes) { - var j = str.indexOf(syntaxes[i].open, offset); - if (j !== -1 && j < idx) { + var j = str.lastIndexOf(syntaxes[i].open); + if (j > idx) { syntax = syntaxes[i]; idx = j; } } - return { "syntax": syntax, "index": idx === str.length ? -1 : idx }; + return { "syntax": syntax, "index": idx }; } function expandRecursive(obj, env, checked) { @@ -202,19 +202,16 @@ // skip replacement if ($this.undefinedVariableFunction) $this.undefinedVariableFunction(key, varName); - i = j + repl.syntax.close.length; - } else { - changes = true; - varValue = String(varValue); - if (varFormatter !== undefined) - varFormatter = varFormatter.toLowerCase(); - if (varFormatter === "rfc1034identifier") - varValue = Utilities.rfc1034Identifier(varValue); - value = value.slice(0, i) + varValue + value.slice(j + repl.syntax.close.length); - // avoid recursive substitutions to avoid potentially infinite loops - i += varValue.length; + varValue = ""; } - repl = indexOfReplacementStart(syntaxes, value, i); + varValue = String(varValue); + if (varFormatter !== undefined) + varFormatter = varFormatter.toLowerCase(); + if (varFormatter === "rfc1034identifier") + varValue = Utilities.rfc1034Identifier(varValue); + value = value.slice(0, i) + varValue + value.slice(j + repl.syntax.close.length); + changes = true; + repl = indexOfReplacementStart(syntaxes, value); i = repl.index; } if (changes) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qbs-src-1.14.0/share/qbs/module-providers/Qt/templates/qml.js new/qbs-src-1.14.1/share/qbs/module-providers/Qt/templates/qml.js --- old/qbs-src-1.14.0/share/qbs/module-providers/Qt/templates/qml.js 2019-09-27 16:41:37.000000000 +0200 +++ new/qbs-src-1.14.1/share/qbs/module-providers/Qt/templates/qml.js 2019-10-16 15:22:00.000000000 +0200 @@ -50,14 +50,14 @@ continue; if (line.startsWith("QMAKE_PRL_TARGET")) pluginLib = FileInfo.joinPaths(pluginData.path, getPrlRhs(line)); - if (line.startsWith("QMAKE_PRL_LIBS")) { + if (line.startsWith("QMAKE_PRL_LIBS = ")) { var otherLibsLine = ' ' + getPrlRhs(line); if (toolchain.contains("msvc")) { otherLibsLine = otherLibsLine.replace(/ -L/g, " /LIBPATH:"); otherLibsLine = otherLibsLine.replace(/-l([^ ]+)/g, "$1" + ".lib"); } otherLibsLine = otherLibsLine.replace(/\$\$\[QT_INSTALL_LIBS\]/g, qtLibDir); - otherLibs += otherLibsLine; + otherLibs += otherLibsLine + '\n'; } } if (!pluginLib) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qbs-src-1.14.0/share/qbs/modules/bundle/BundleModule.qbs new/qbs-src-1.14.1/share/qbs/modules/bundle/BundleModule.qbs --- old/qbs-src-1.14.0/share/qbs/modules/bundle/BundleModule.qbs 2019-09-27 16:41:37.000000000 +0200 +++ new/qbs-src-1.14.1/share/qbs/modules/bundle/BundleModule.qbs 2019-10-16 15:22:00.000000000 +0200 @@ -63,9 +63,13 @@ "GENERATE_PKGINFO_FILE": generatePackageInfo !== undefined ? (generatePackageInfo ? "YES" : "NO") : undefined, + "IS_MACCATALYST": "NO", + "LD_RUNPATH_SEARCH_PATHS_NO": [], "PRODUCT_NAME": product.targetName, "LOCAL_APPS_DIR": Environment.getEnv("HOME") + "/Applications", "LOCAL_LIBRARY_DIR": Environment.getEnv("HOME") + "/Library", + "SWIFT_PLATFORM_TARGET_PREFIX": isMacOs ? "macos" + : qbs.targetOS.contains("ios") ? "ios" : "", "TARGET_BUILD_DIR": product.buildDirectory, "WRAPPER_NAME": bundleName, "WRAPPER_EXTENSION": extension @@ -427,7 +431,7 @@ || {}; for (key in partialInfoPlist) { if (partialInfoPlist.hasOwnProperty(key) - && !aggregatePlist.hasOwnProperty(key)) + && aggregatePlist[key] === undefined) aggregatePlist[key] = partialInfoPlist[key]; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qbs-src-1.14.0/share/qbs/modules/cpp/keil.js new/qbs-src-1.14.1/share/qbs/modules/cpp/keil.js --- old/qbs-src-1.14.0/share/qbs/modules/cpp/keil.js 2019-09-27 16:41:37.000000000 +0200 +++ new/qbs-src-1.14.1/share/qbs/modules/cpp/keil.js 2019-10-16 15:22:00.000000000 +0200 @@ -33,6 +33,7 @@ var File = require("qbs.File"); var FileInfo = require("qbs.FileInfo"); var ModUtils = require("qbs.ModUtils"); +var PathTools = require("qbs.PathTools"); var Process = require("qbs.Process"); var TemporaryDir = require("qbs.TemporaryDir"); var TextFile = require("qbs.TextFile"); @@ -246,6 +247,42 @@ }; } +function compilerOutputArtifacts(input) { + var obj = { + fileTags: ["obj"], + filePath: Utilities.getHash(input.baseDir) + "/" + + input.fileName + input.cpp.objectSuffix + }; + return [obj]; +} + +function applicationLinkerOutputArtifacts(product) { + var app = { + fileTags: ["application"], + filePath: FileInfo.joinPaths( + product.destinationDirectory, + PathTools.applicationFilePath(product)) + }; + var mem_map = { + fileTags: ["mem_map"], + filePath: FileInfo.joinPaths( + product.destinationDirectory, + product.targetName + + (product.cpp.architecture === "mcs51" ? ".m51" : ".map")) + }; + return [app, mem_map] +} + +function staticLibraryLinkerOutputArtifacts(product) { + var staticLib = { + fileTags: ["staticlibrary"], + filePath: FileInfo.joinPaths( + product.destinationDirectory, + PathTools.staticLibraryFilePath(product)) + }; + return [staticLib] +} + function compilerFlags(project, product, input, output, explicitlyDependsOn) { // Determine which C-language we"re compiling. var tag = ModUtils.fileTagForTargetLanguage(input.fileTags.concat(output.fileTags)); @@ -474,7 +511,7 @@ args.push("--output", outputs.application[0].filePath); if (product.cpp.generateMapFile) - args.push("--list", outputs.map_file[0].filePath); + args.push("--list", outputs.mem_map[0].filePath); var libraryPaths = product.cpp.libraryPaths; if (libraryPaths) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qbs-src-1.14.0/share/qbs/modules/cpp/keil.qbs new/qbs-src-1.14.1/share/qbs/modules/cpp/keil.qbs --- old/qbs-src-1.14.0/share/qbs/modules/cpp/keil.qbs 2019-09-27 16:41:37.000000000 +0200 +++ new/qbs-src-1.14.1/share/qbs/modules/cpp/keil.qbs 2019-10-16 15:22:00.000000000 +0200 @@ -32,9 +32,7 @@ import qbs.File import qbs.FileInfo import qbs.ModUtils -import qbs.PathTools import qbs.Probes -import qbs.Utilities import "keil.js" as KEIL CppModule { @@ -164,14 +162,9 @@ Rule { id: assembler inputs: ["asm"] - - Artifact { - fileTags: ["obj"] - filePath: Utilities.getHash(input.baseDir) + "/" - + input.fileName + input.cpp.objectSuffix - } - - prepare: KEIL.prepareAssembler.apply(KEIL, arguments); + outputFileTags: ["obj"] + outputArtifacts: KEIL.compilerOutputArtifacts(input) + prepare: KEIL.prepareAssembler.apply(KEIL, arguments) } FileTagger { @@ -190,47 +183,18 @@ id: compiler inputs: ["cpp", "c"] auxiliaryInputs: ["hpp"] - - Artifact { - fileTags: ["obj"] - filePath: Utilities.getHash(input.baseDir) + "/" - + input.fileName + input.cpp.objectSuffix - } - - prepare: KEIL.prepareCompiler.apply(KEIL, arguments); + outputFileTags: ["obj"] + outputArtifacts: KEIL.compilerOutputArtifacts(input) + prepare: KEIL.prepareCompiler.apply(KEIL, arguments) } Rule { id: applicationLinker multiplex: true inputs: ["obj", "linkerscript"] - - outputFileTags: { - var tags = ["application"]; - if (product.moduleProperty("cpp", "generateMapFile")) - tags.push("map_file"); - return tags; - } - outputArtifacts: { - var app = { - fileTags: ["application"], - filePath: FileInfo.joinPaths( - product.destinationDirectory, - PathTools.applicationFilePath(product)) - }; - var artifacts = [app]; - if (product.cpp.generateMapFile) { - artifacts.push({ - fileTags: ["map_file"], - filePath: FileInfo.joinPaths( - product.destinationDirectory, - product.targetName + ".map") - }); - } - return artifacts; - } - - prepare:KEIL.prepareLinker.apply(KEIL, arguments); + outputFileTags: ["application", "mem_map"] + outputArtifacts: KEIL.applicationLinkerOutputArtifacts(product) + prepare: KEIL.prepareLinker.apply(KEIL, arguments) } Rule { @@ -238,14 +202,8 @@ multiplex: true inputs: ["obj"] inputsFromDependencies: ["staticlibrary"] - - Artifact { - fileTags: ["staticlibrary"] - filePath: FileInfo.joinPaths( - product.destinationDirectory, - PathTools.staticLibraryFilePath(product)) - } - - prepare: KEIL.prepareArchiver.apply(KEIL, arguments); + outputFileTags: ["staticlibrary"] + outputArtifacts: KEIL.staticLibraryLinkerOutputArtifacts(product) + prepare: KEIL.prepareArchiver.apply(KEIL, arguments) } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qbs-src-1.14.0/share/qbs/modules/cpp/sdcc.js new/qbs-src-1.14.1/share/qbs/modules/cpp/sdcc.js --- old/qbs-src-1.14.0/share/qbs/modules/cpp/sdcc.js 2019-09-27 16:41:37.000000000 +0200 +++ new/qbs-src-1.14.1/share/qbs/modules/cpp/sdcc.js 2019-10-16 15:22:00.000000000 +0200 @@ -33,6 +33,7 @@ var File = require("qbs.File"); var FileInfo = require("qbs.FileInfo"); var ModUtils = require("qbs.ModUtils"); +var PathTools = require("qbs.PathTools"); var Process = require("qbs.Process"); var TemporaryDir = require("qbs.TemporaryDir"); var TextFile = require("qbs.TextFile"); @@ -178,15 +179,87 @@ return result; } -function compilerFlags(project, product, input, output, explicitlyDependsOn) { +function compilerOutputArtifacts(input) { + var obj = { + fileTags: ["obj"], + filePath: Utilities.getHash(input.baseDir) + "/" + + input.fileName + input.cpp.objectSuffix + }; + var asm_adb = { + fileTags: ["asm_adb"], + filePath: Utilities.getHash(input.baseDir) + "/" + + input.fileName + ".adb" + }; + var asm_lst = { + fileTags: ["asm_lst"], + filePath: Utilities.getHash(input.baseDir) + "/" + + input.fileName + ".lst" + }; + var asm_src = { + fileTags: ["asm_src"], + filePath: Utilities.getHash(input.baseDir) + "/" + + input.fileName + ".asm" + }; + var asm_sym = { + fileTags: ["asm_sym"], + filePath: Utilities.getHash(input.baseDir) + "/" + + input.fileName + ".sym" + }; + var rst_data = { + fileTags: ["rst_data"], + filePath: Utilities.getHash(input.baseDir) + "/" + + input.fileName + ".rst" + }; + return [obj, asm_adb, asm_lst, asm_src, asm_sym, rst_data]; +} + +function applicationLinkerOutputArtifacts(product) { + var app = { + fileTags: ["application"], + filePath: FileInfo.joinPaths( + product.destinationDirectory, + PathTools.applicationFilePath(product)) + }; + var lk_cmd = { + fileTags: ["lk_cmd"], + filePath: FileInfo.joinPaths( + product.destinationDirectory, + product.targetName + ".lk") + }; + var mem_summary = { + fileTags: ["mem_summary"], + filePath: FileInfo.joinPaths( + product.destinationDirectory, + product.targetName + ".mem") + }; + var mem_map = { + fileTags: ["mem_map"], + filePath: FileInfo.joinPaths( + product.destinationDirectory, + product.targetName + ".map") + }; + return [app, lk_cmd, mem_summary, mem_map] +} + +function staticLibraryLinkerOutputArtifacts(product) { + var staticLib = { + fileTags: ["staticlibrary"], + filePath: FileInfo.joinPaths( + product.destinationDirectory, + PathTools.staticLibraryFilePath(product)) + }; + return [staticLib] +} + +function compilerFlags(project, product, input, outputs, explicitlyDependsOn) { // Determine which C-language we"re compiling. - var tag = ModUtils.fileTagForTargetLanguage(input.fileTags.concat(output.fileTags)); + var tag = ModUtils.fileTagForTargetLanguage(input.fileTags.concat(outputs.obj[0].fileTags)); var args = []; args.push(input.filePath); args.push("-c"); - args.push("-o", output.filePath); + args.push("-o", outputs.obj[0].filePath); switch (input.cpp.optimization) { case "small": @@ -247,9 +320,9 @@ return args; } -function assemblerFlags(project, product, input, output, explicitlyDependsOn) { +function assemblerFlags(project, product, input, outputs, explicitlyDependsOn) { // Determine which C-language we"re compiling - var tag = ModUtils.fileTagForTargetLanguage(input.fileTags.concat(output.fileTags)); + var tag = ModUtils.fileTagForTargetLanguage(input.fileTags.concat(outputs.obj[0].fileTags)); var args = []; @@ -267,7 +340,7 @@ ModUtils.moduleProperty(input, "driverFlags", tag)); args.push("-ol"); - args.push(output.filePath); + args.push(outputs.obj[0].filePath); args.push(input.filePath); return args; } @@ -332,7 +405,9 @@ var escapedLinkerFlags = escapeLinkerFlags(product, escapableLinkerFlags); if (escapedLinkerFlags) Array.prototype.push.apply(args, escapedLinkerFlags); - + var driverLinkerFlags = useCompilerDriver ? product.cpp.driverLinkerFlags : undefined; + if (driverLinkerFlags) + Array.prototype.push.apply(args, driverLinkerFlags); return args; } @@ -345,7 +420,7 @@ } function prepareCompiler(project, product, inputs, outputs, input, output, explicitlyDependsOn) { - var args = compilerFlags(project, product, input, output, explicitlyDependsOn); + var args = compilerFlags(project, product, input, outputs, explicitlyDependsOn); var compilerPath = input.cpp.compilerPath; var cmd = new Command(compilerPath, args) cmd.description = "compiling " + input.fileName; @@ -354,7 +429,7 @@ } function prepareAssembler(project, product, inputs, outputs, input, output, explicitlyDependsOn) { - var args = assemblerFlags(project, product, input, output, explicitlyDependsOn); + var args = assemblerFlags(project, product, input, outputs, explicitlyDependsOn); var assemblerPath = input.cpp.assemblerPath; var cmd = new Command(assemblerPath, args) cmd.description = "assembling " + input.fileName; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qbs-src-1.14.0/share/qbs/modules/cpp/sdcc.qbs new/qbs-src-1.14.1/share/qbs/modules/cpp/sdcc.qbs --- old/qbs-src-1.14.0/share/qbs/modules/cpp/sdcc.qbs 2019-09-27 16:41:37.000000000 +0200 +++ new/qbs-src-1.14.1/share/qbs/modules/cpp/sdcc.qbs 2019-10-16 15:22:00.000000000 +0200 @@ -32,9 +32,7 @@ import qbs.File import qbs.FileInfo import qbs.ModUtils -import qbs.PathTools import qbs.Probes -import qbs.Utilities import "sdcc.js" as SDCC CppModule { @@ -117,13 +115,8 @@ Rule { id: assembler inputs: ["asm"] - - Artifact { - fileTags: ["obj"] - filePath: Utilities.getHash(input.baseDir) + "/" - + input.fileName + input.cpp.objectSuffix - } - + outputFileTags: ["obj", "asm_adb", "asm_lst", "asm_src", "asm_sym", "rst_data"] + outputArtifacts: SDCC.compilerOutputArtifacts(input) prepare: SDCC.prepareAssembler.apply(SDCC, arguments); } @@ -143,14 +136,9 @@ id: compiler inputs: ["cpp", "c"] auxiliaryInputs: ["hpp"] - - Artifact { - fileTags: ["obj"] - filePath: Utilities.getHash(input.baseDir) + "/" - + input.fileName + input.cpp.objectSuffix - } - - prepare: SDCC.prepareCompiler.apply(SDCC, arguments); + outputFileTags: ["obj", "asm_adb", "asm_lst", "asm_src", "asm_sym", "rst_data"] + outputArtifacts: SDCC.compilerOutputArtifacts(input) + prepare: SDCC.prepareCompiler.apply(SDCC, arguments) } Rule { @@ -158,33 +146,9 @@ multiplex: true inputs: ["obj", "linkerscript"] inputsFromDependencies: ["staticlibrary"] - - outputFileTags: { - var tags = ["application"]; - if (product.moduleProperty("cpp", "generateMapFile")) - tags.push("map_file"); - return tags; - } - outputArtifacts: { - var app = { - fileTags: ["application"], - filePath: FileInfo.joinPaths( - product.destinationDirectory, - PathTools.applicationFilePath(product)) - }; - var artifacts = [app]; - if (product.cpp.generateMapFile) { - artifacts.push({ - fileTags: ["map_file"], - filePath: FileInfo.joinPaths( - product.destinationDirectory, - product.targetName + ".map") - }); - } - return artifacts; - } - - prepare:SDCC.prepareLinker.apply(SDCC, arguments); + outputFileTags: ["application", "lk_cmd", "mem_summary", "mem_map"] + outputArtifacts: SDCC.applicationLinkerOutputArtifacts(product) + prepare:SDCC.prepareLinker.apply(SDCC, arguments) } Rule { @@ -192,14 +156,8 @@ multiplex: true inputs: ["obj"] inputsFromDependencies: ["staticlibrary"] - - Artifact { - fileTags: ["staticlibrary"] - filePath: FileInfo.joinPaths( - product.destinationDirectory, - PathTools.staticLibraryFilePath(product)) - } - - prepare: SDCC.prepareArchiver.apply(SDCC, arguments); + outputFileTags: ["staticlibrary"] + outputArtifacts: SDCC.staticLibraryLinkerOutputArtifacts(product) + prepare: SDCC.prepareArchiver.apply(SDCC, arguments) } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qbs-src-1.14.0/tests/auto/blackbox/tst_blackbox.cpp new/qbs-src-1.14.1/tests/auto/blackbox/tst_blackbox.cpp --- old/qbs-src-1.14.0/tests/auto/blackbox/tst_blackbox.cpp 2019-09-27 16:41:37.000000000 +0200 +++ new/qbs-src-1.14.1/tests/auto/blackbox/tst_blackbox.cpp 2019-10-16 15:22:00.000000000 +0200 @@ -4262,7 +4262,8 @@ rmDirR(relativeBuildDir()); params.arguments = QStringList() << commonArgs << "project.lazy:true"; QCOMPARE(runQbs(params), 0); - QVERIFY2(m_qbsStdout.contains("meow\nLib was loaded!\n"), m_qbsStdout.constData()); + QVERIFY2(m_qbsStdout.contains("meow\n") && m_qbsStdout.contains("Lib was loaded!\n"), + m_qbsStdout.constData()); } }
