Igalia / webkit-container-sdk

The all-in-one SDK for WebKit GTK/WPE port development.
MIT License
12 stars 7 forks source link

Upgrade jhbuild dependencies #51

Closed nikolaszimmermann closed 2 months ago

nikolaszimmermann commented 2 months ago

Switch to new libwpe/wpebackend-fdo releases, upgrade libdex/libpanel/etc. Make sure to always attach tags to checkouts, to guarantee a certain version is used, independant of the image build time (where possible).

This includes the PR #50, and needs to rebased, once it's merged to main.

dpino commented 2 months ago

Looks good to me. A nitpick would be to put the tag attribute in a new line, since it's in a newline in some modules and it's the same line as attribute module in others.

A follow-up would be to add the version number to all modules and the corresponding pkg-config filename. Whe the pkg-config and version numbers are present, JHBuild determines whether the module is already provided by system libraries, and if that's the case the module is not built. If either the version or pkg-config are not present, JHBuild always builds the module. So, for instance in the case of the module openh264:

   <meson id="openh264" mesonargs="-Dtests=disabled">
    <branch repo="github.com"
            checkoutdir="openh264"
            module="cisco/openh264.git"
            tag="v2.4.1" >
    </branch>
  </meson>

Ubuntu 24.04 features this version of openh264:

$ apt-cache madison libopenh264-dev
libopenh264-dev | 2.4.1+dfsg-1 | http://mirrors.kernel.org/ubuntu noble/universe amd64 Packages

If version and pkg-config were present in the module configuration, JHBuild would compare the version stated in pkg-config with the required version of the JHBuild module. And if both versions match (or pkg-config's version is superior), the module is skipped. The configuration would be:

   <meson id="openh264" mesonargs="-Dtests=disabled">
    <pkg-config>openh264.pc</pkg-config>
    <branch repo="github.com"
            checkoutdir="openh264"
            module="cisco/openh264.git"
            tag="v2.4.1" 
            version="2.4.1">
    </branch>
  </meson>

The pkg-config file is usually under /usr/:

$ find /usr -name "*.pc" | grep -m1 264
/usr/lib/x86_64-linux-gnu/pkgconfig/openh264.pc
$ grep -i version /usr/lib/x86_64-linux-gnu/pkgconfig/openh264.pc
Version: 2.4.1

So, since openh264's pkg-config version matches the required module version, the module is skipped.

Anyway, I think it's better to do this in a separated pull-request.