[Qbs] Failed 'PackageBuild' product on QBS 1.22

Карелин Павел hkarel at yandex.ru
Thu May 12 21:10:58 CEST 2022


John, thanks for the tip. Unfortunately, this was not enough, the rule 
is still not called. Looks like something else is needed...
Christian, can I ask you for help on this issue?

--
Pavel

12.05.2022 12:07, Jochen Ulrich пишет:
>
> >> 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.
>
> > I didn't do it, because I don't understand how to do it.
>
> So for example you could do this:
>
> ```
>
> Product {
>     name: "ToxPhone"
>
>     type: [ /* maybe some other types here… */ "package-build-file" ]
>
>     // …
>
> ```
>
> This will cause your rule to be executed because the product 
> “ToxPhone” requires it because it is of the type produced by your rule.
>
> See also 
> https://qbs.io/docs/qml-qbslanguageitems-rule/#rules-and-product-types
>
> Best
>
> Jochen
>
> *Von: *Qbs <qbs-bounces at qt-project.org> im Auftrag von Карелин Павел 
> <hkarel at yandex.ru>
> *Datum: *Dienstag, 10. Mai 2022 um 18:27
> *An: *qbs at qt-project.org <qbs at qt-project.org>
> *Betreff: *Re: [Qbs] Failed 'PackageBuild' product on QBS 1.22
>
>
>
> 10.05.2022 17:49, Christian Kandeler пишет:
> >
> > 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.
> I didn't do it, because I don't understand how to do it.
>
> >
> >
> > Christian
> >
> >
> >
> > _______________________________________________
> > Qbs mailing list
> > Qbs at qt-project.org
> > https://lists.qt-project.org/listinfo/qbs
>
> _______________________________________________
> Qbs mailing list
> Qbs at qt-project.org
> https://lists.qt-project.org/listinfo/qbs
>
>
> _______________________________________________
> 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/20220512/5a2366f6/attachment.htm>


More information about the Qbs mailing list