[Qbs] Failed 'PackageBuild' product on QBS 1.22
Mac Godwin
macg at ppcseagles.org
Tue May 10 16:52:14 CEST 2022
Suck my ass sachel
On Tue, May 10, 2022 at 8:49 AM Christian Kandeler <christian.kandeler at qt.io>
wrote:
>
> On 5/10/22 15:02, Карелин Павел wrote:
> >
> >
> > 05.05.2022 12:14, Christian Kandeler пишет:
> >> On 5/5/22 11:00, Карелин Павел wrote:
> >>>
> >>>
> >>> 05.05.2022 10:47, Christian Kandeler пишет:
> >>>> On 5/4/22 18:18, Карелин Павел wrote:
> >>>>> Christian, how would you solve my problem?
> >>>>> After the project is built, the deb-package is assembled. To build
> >>>>> the deb-package, you need a list of dependent libraries (not all,
> >>>>> only parts, system dependencies no required). For example this list:
> >>>>>
> >>>>> /opt/ffmpeg/4.4/lib/libavutil.so*
> >>>>> /opt/ffmpeg/4.4/lib/libswscale.so*
> >>>>> /opt/ffmpeg/4.4/lib/libswresample.so*
> >>>>> /opt/opencv/4.5.5/lib/libopencv_core.so*
> >>>>> /opt/opencv/4.5.5/lib/libopencv_calib3d.so*
> >>>>> /opt/opencv/4.5.5/lib/libopencv_imgproc.so*
> >>>>>
> >>>>> I can get library paths and names of so-modules from dependencies:
> >>>>>
> >>>>> Depends { name: "lib.ffmpeg" }
> >>>>> Depends { name: "lib.opencv" }
> >>>>>
> >>>>> How can I create such a list and put it in the package_build_info
> >>>>> file? With the rules?
> >>>> lib.ffmpeg and lib.opencv are modules in your projects?
> >>> Yes, they are modules. I use my own QBS-extensions to include
> >>> third-party assembled libraries in my projects
> >>> (https://github.com/hkarel/QbsExt/tree/master/modules/lib).
> >>
> >> Then I think the correct way is to
> >>
> >> - collect these libraries in a Group in the respective module
> >>
> >> - mark them as target artifacts (see
> >>
> https://doc.qt.io/qbs/qml-qbslanguageitems-group.html#filesAreTargets-prop
> )
> >>
> >> - give them a suitable tag
> >>
> >> - on the consuming side, create a rule whose
> >> inputsFromDependencies matches that tag and in this rule, do whatever
> >> you need to do.
> >
> > Tried to follow you recommendation:
> >
> > --- LibModule ---
> > Module {
> > id: libmod
> > property string prefix
> > property string version: ""
> >
> > property bool enabled: true
> > property bool useSystem: false
> >
> > property string includeSuffix: "/include"
> > property string libSuffix: "/lib"
> >
> > property path includePath: (useSystem || !enabled)
> > ? undefined
> > : prefix + (version.length ? "/" +
> > version : "") + includeSuffix
> >
> > property path libraryPath: (useSystem || !enabled)
> > ? undefined
> > : prefix + (version.length ? "/" +
> > version : "") + libSuffix
> >
> > property var dynamicLibraries: ["sodium"]
> > property var staticLibraries: []
> > ...
> > Group {
> > //name: "package-build"
> > fileTags: "package-build"
> > filesAreTargets: true
> > files: {
> > var libfiles = [];
> > if (!libmod.useSystem && libmod.enabled)
> > for (var i in libmod.dynamicLibraries) {
> > libfiles.push(
> > libmod.libraryPath +
> > ("/lib{0}.so*").format(libmod.dynamicLibraries[i]))
> > }
> >
> > console.info("=== libfiles ===");
> > console.info(libfiles);
> >
> > return libfiles;
> > }
> > }
> > } // Module
> >
> > LibModule {
> > id: sodium
> > version: "1.0.x"
> > prefix: "/opt/sodium"
> > checkingHeaders: ["sodium.h"]
> > dynamicLibraries: ["sodium"]
> > staticLibraries: ["sodium"]
> > }
> >
> > Product {
> > name: "ToxPhone"
> > ...
> > Depends { name: "lib.sodium" }
> > ...
> > lib.sodium.version: project.sodiumVersion
> > //lib.sodium.useSystem: project.useSystemSodium
> >
> > Rule {
> > id: pkgbuild
> > //inputs: ["package-build"]
> > inputsFromDependencies: ["package-build"]
> >
> > Artifact {
> > fileTags: ["package-build-file"]
> > filePath: FileInfo.joinPaths(project.buildDirectory,
> > "package_build_info")
> > }
> > prepare: {
> > var outputFile =
> > FileInfo.joinPaths(project.buildDirectory, "package_build_info");
> >
> > console.info("=== outputFile ===");
> > console.info(outputFile);
> > }
> > }
> >
> > } // Product
> >
> > The inscription "=== outputFile ===" is never printed. What am I doing
> > wrong?
> >
> Did you remember to connect the "package-build-file" tag to your product
> type? Either by making this tag the product type or via a chain of rules.
>
>
> Christian
>
>
>
> _______________________________________________
> Qbs mailing list
> Qbs at qt-project.org
> https://lists.qt-project.org/listinfo/qbs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qbs/attachments/20220510/2535d4e9/attachment-0001.htm>
More information about the Qbs
mailing list