[Bug 2368737] New: Review Request: cef - Chromium Embedded Framework

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



https://bugzilla.redhat.com/show_bug.cgi?id=2368737

            Bug ID: 2368737
           Summary: Review Request: cef - Chromium Embedded Framework
           Product: Fedora
           Version: rawhide
          Hardware: All
                OS: Linux
            Status: NEW
         Component: Package Review
          Severity: medium
          Priority: medium
          Assignee: nobody@xxxxxxxxxxxxxxxxx
          Reporter: lina@xxxxxxxxxxxxx
        QA Contact: extras-qa@xxxxxxxxxxxxxxxxx
                CC: package-review@xxxxxxxxxxxxxxxxxxxxxxx
  Target Milestone: ---
    Classification: Fedora



Spec URL: https://asahilina.fedorapeople.org/cef.spec
SRPM URL:
https://asahilina.net/files/cef-136.1.6^chromium136.0.7103.113-1.fc42.src.rpm
Description: CEF is an embeddable build of Chromium, powered by WebKit (Blink).
Fedora Account System Username: asahilina

For ease of review: https://asahilina.fedorapeople.org/mkspec.sh (SPECPARTS
generator, also because the SRPM one is slightly outdated as I just added the
cef-api RPM macros)

This package supersedes `obs-cef` (exists in F40, dropped in F41 due to FTBFS),
which was an OBS-specific CEF fork. OBS now uses upstream CEF, and upstream CEF
is starting to have API/ABI compatibility guarantees, which means it's now
sensible to package CEF as a shared package. The latest stable CEF version
closely follows stable Chromium releases, so it becomes viable to have this
package track the release of the chromium package in Fedora, which makes things
much nicer.

I'm still running test builds, but I think the spec file as above should build
fine (a piece-wise RPM build on aarch64 worked). I will probably have to fix
minor things (build config tweaks and possibly some bugfix patches after
testing with OBS) before this is ready for release, but it should be ready for
package review.

The general approach is to take chromium.spec and make a series of contained
changes, keeping as much as possible untouched, so that chromium.spec bumps can
be tracked more easily. The Chromium release used for CEF is not necessarily
the same as upstream CEF (here, we use 136.0.7103.113 while upstream CEF uses
136.0.7103.114), as prefer to track the chromium.spec version so that the same
chromium source tarball can be used. In general, the CEF build should be
relatively insensitive to chromium patch version differences.

ABI versioning works like this:
- There is an EXPERIMENTAL API version which is only compatible with a precise
CEF version (major/minor/patch, not including the Chromium components)
- There is a set of ABI versions which any given CEF version is compatible
with.
- Solib versioning is not used since it cannot encode the above semantics.

We encode those as:
Provides: cef(abi) = 136.1.6
Provides: cef(api) = 13300
Provides: cef(api) = 13301
[...]
Provides: cef(api) = 13601 (note: this matches the 136.1 version number
portion)

Each API version comes with a libcef_dll_wrapper.a static library to be linked
into consumers. These are provided prebuilt alongside headers in multiple
mutually exclusive cef-[api-NNNN-]devel subpackages, one per API version. The
consumer is expected to BuildRequires the appropriate one, and also set
-DCEF_API_VERSION=NNNN during its build (to request a non-EXPERIMENTAL
release). The header files for each subpackage have a check injected to fail
the build if the define is not set correctly. The consumer should also use
%{?_cef_api_requires} in its spec, which will pull in the correct runtime
dependency. At runtime, any consumer built with an explicit API version should
be upwards compatible with newer libcef.so versions as long as they do not drop
that API from the support list, while the unversioned EXPERIMENTAL API forces a
specific CEF version (excluding the Chromium subcomponent, so Chromium patch
level updates are still possible e.g. to fix security bugs).

Depending on how maintenance goes and whether OBS ends up working with the
versioned API, I might later introduce an override for the cef(abi) provide, to
allow CEF patch version updates that are known (by inspection) not to break the
EXPERIMENTAL ABI (even though upstream doesn't promise that) without rebuilding
consumers.

Note: This has ppc64le builds enabled, though I have no idea if they'll work.
If they don't I'll disable it and leave it as aarch64/x86_64.


-- 
You are receiving this mail because:
You are on the CC list for the bug.
You are always notified about changes to this product and component
https://bugzilla.redhat.com/show_bug.cgi?id=2368737

Report this comment as SPAM: https://bugzilla.redhat.com/enter_bug.cgi?product=Bugzilla&format=report-spam&short_desc=Report%20of%20Bug%202368737%23c0

-- 
_______________________________________________
package-review mailing list -- package-review@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to package-review-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/package-review@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Index of Archives]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite Conditions]     [KDE Users]

  Powered by Linux