Le ven. 9 janv. 2026 à 23:03, Pierre Gruet <[email protected]> a écrit :
> Hi Juan, > > Le 01/01/2026 à 20:58, Juan Mendez a écrit : > > > > > [...] > > > > Hi Pierre, > > > > Thank you for your quick and insightful response and for sharing your > > packaging attempt. > > It's great to know there's interest from the Scilab side - having a > > concrete use case like JCEF makes this work even more meaningful. > > You're welcome, thanks for all the explanations! > > > > > I decided to continue pursing CEF packaging attempt, not only because it > > is a dependency for my other package, stremio-gtk, but because it was a > > learning opportunity as there are more and more packages that are using > CEF. > > > > Let me address your points: > > > > 1. On chromium-headers vs full source > > > > This is the critical question. In my investigation of CEF's source code, > > here is part of what I found: CEF uses internal Chromium APIs, not only > > public ones. > > > > Some examples: > > > > CEF includes 43+ headers from content/browser/ (internal implementation > > headers), as opposed to content/public/browser/ (stable public API). For > > example, libcef/browser/browser_host_base.cc includes content/browser/ > > renderer_host/render_frame_host_impl.h. > > See https://bitbucket.org/chromiumembedded/cef/src/master/libcef/ > > browser/browser_host_base.cc <https://bitbucket.org/chromiumembedded/ > > cef/src/master/libcef/browser/browser_host_base.cc> > > > > Also CEF's off-screen rendering (osr/render_widget_host_view_osr.h) > > extends content::RenderWidgetHostViewBase from content/browser/ > > renderer_host/render_widget_host_view_base.h. > > > > These internal classes don't have stable ABIs presumably and their > > implementation I infer could change between Chromium versions. CEF hooks > > into Chromium's internal browser infrastructure. This could explain why > > the attempt with chromium-headers didn't produce libcef.so: the ninja > > build targets I gather that depends on compiled Chromium object files > > (not just headers). > > > > This means CEF requires source-level integration with a matching > > Chromium version, I have been updating the last 3 Debian Chromium > > sources with CEF, and the approach seems to work. > > Understood. This seems to answer my concerns. > > > > > 2. On package format (native vs MUT) > > > > I am learning, so this feedback I appreciate it a lot too. The native > > format was my first attempt, so I will start working just now on moving > > it to the MUT format and see if I find any caveat. > > ``` > > chromium-embedded-framework_X.orig.tar.xz (CEF sources) > > chromium-embedded-framework_X.orig-chromium.tar.xz (Chromium sources) > > debian.tar.xz (with quilt patches) > > ``` > > > > I'll also add a proper `debian/watch` file for MUT. > > No worry, yes you're learning, and this is fine :) > > I think we should try to get the components downloaded by debian/watch. > Honestly that's maybe not the priority, but we could try adding > something like > > > opts=component=chromium,compression=xz,searchmode=plain,downloadurlmangle=s/"version":\s*"@ANY_VERSION@ > "/https:\/\/gsdview.appspot.com > \/chromium-browser-official\/chromium-$1-lite.tar.xz/,filenamemangle=s/"version":\s*"@ANY_VERSION@"/chromium-$1-lite.tar.xz/ > > \ > > https://chromiumdash.appspot.com/fetch_releases?channel=Stable&platform=Linux > \ > "version":\s*"@ANY_VERSION@" \ > ignore > > opts="component=depot-tools, mode=git, pgpmode=none" \ > https://chromium.googlesource.com/chromium/tools/depot_tools.git HEAD \ > ignore > > at the end of debian/watch. > > Alternatively I will use your debian/scripts/get-orig-tarballs.sh file. > Nowadays we have watch 5 file format, which makes it more readable, and also I'm used to MUT uses. Do ask me on this. > > > > 3. On the rust-toolchain tarball > > > > For the Rust compiler, this package uses system rustc from Debian with > > RUSTC_BOOTSTRAP=1 (following Debian Chromium's approach): > > Build-Depends: rustc, bindgen, rust-src, librust-libc-dev > > > > However, we require rust-toolchain.tar.xz tarball as a bundled > > dependency (for now). This is because Debian's rust-src package > > (currently 1.90.0) is missing newer std library source files that > > Chromium requires, such as sync/nonpoison/condvar.rs <http://condvar.rs> > > > and rwlock.rs <http://rwlock.rs>. The tarball provides the complete > Rust > > std library sources at the version Chromium expects. > > These are part of the unstable sync_nonpoison feature (Related: https:// > > github.com/rust-lang/rust/issues/134645 <https://github.com/rust-lang/ > > rust/issues/134645>) and were added to Rust's std library after the > > version Debian packages. > > > > This is NOT currently packaged in Debian. When Debian's rust-src catches > > up to Chromium's requirements in the future, this tarball can probably > > be eliminated, these files will appear in a future rust-src (1.91+?) > > > > The real issue: Chromium's rust-toolchain.tar.xz (commit > > 15283f6fe95e5b604273d13a428bab5fc0788f5a) is built from a newer Rust > > version than 1.90.0 - likely a recent nightly or development build. > > Their build/rust/std/rules/BUILD.gn was generated against this newer > > toolchain. > > > > Options: > > a. Keep using rust-toolchain.tar.xz (current approach) - bundled > dependency > > b. Wait for Debian - these files will appear in a future rust-src > (1.91+?) > > c. Regenerate Chromium's rules/BUILD.gn - run gnrt against Rust 1.90.0 > > to generate a compatible file (complex, may break other things) > > > > Ok, I read your other email where you say the package in Debian is now > enough, great! > > > > > 4. On depot_tools and Internet access > > > > To clarify: this package debian/rules does not access the internet > > during build. The git clone commands you saw are only in error messages > > telling users to pre-download depot_tools if missing - they don't > > execute during the build itself. > > > > Network isolation is enforced by patch 0003-network-isolation-disable- > > google-storage-downloads.chromium.patch which makes > > download_from_google_storage.py a no-op, plus the --no-depot-tools- > > update flag which prevents depot_tools from pulling upstream changes. > > > > Then , Why I had to do this: I create local git repositories to satisfy > > CEF's build system expectations. CEF's automate-git.py expects git > > repositories for its source directories. I satisfy this requirement with > > local git init && git commit: > > cd chromium_src/cef && git init && git add . && git commit -m "..." > > > > This is completely network-free but admittedly unusual for Debian > > packaging. A cleaner approach would be to patch automate-git.py to > > remove git repository requirements entirely, though I found the > > necessary patching would be quite complex for limited benefit. > > OK! > > > > > 5. On binary files > > > > I'll add Files-Excluded to debian/copyright for repacking: > > Files-Excluded: > > depot_tools/*.exe > > depot_tools/win_tools* > > depot_tools/*.bat > > depot_tools/.cipd_bin/*.exe > > Great! > I have not made a review yet, but I see other binary files such as > third_party/node/linux/node-linux-x64/bin/node > and I wonder if it is useful / if this could be excluded and instead > /usr/bin/node provided by the Debian package nodejs could be used? > This is a concern. First, somewhat easy to fix: Files-Excluded: third_party/node/linux/node-linux-x64/bin/node (Build-)Depend: nodejs. You might need to patch the required path here. Second, are there more binaries in third_party directory ? Precompîled binaries in a debian package need to be fixed. > > > > > 6. On debian/copyright > > > > Thanks for this, I need to update this to account for the number of > > copyright holders across Chromium/CEF. > > > > 7. On debian/rules > > > > Your assessment is correct. The file: > > > > Follows CEF's automate-git.py approach for the build structure > > Adds Debian-specific patches (system libc++, unbundling attempts) > > Applies Debian Chromium patches manually (since chromium_src/ doesn't > > exist until build time) > > Works around the fact that Debian tarballs aren't git repositories. > > > > Again, many many builds led me to have this, it has been a trial/error > > approach until getting to this point, although trying to match Debian > > Chromium as closely as possible. I will appreciate any feedback if there > > are things to improve. > > I suggest yoou see if it is possible to address the remaining binaries > (node for instance) and if you wish to work on debian/watch as I said > above, then I will try to build locally and to analyze things further. > Tell me! > > > > > Finally, > > > > Why the current strategy: Get something that builds first, then iterate > > toward policy compliance. When reading the original RFP, my targets > where: > > - Having a working (if imperfect) package that can lives in experimental > > for all the other packages that wants to try it. > > - Prove it can be done, and have something concrete to discuss with the > > Chromium Team. > > - And the base to get feedback as you invaluably have done! > > I am fine with this way. Maybe you should get in touch with the Chromium > team explicitly before we upload anything, so that they know there will > be a copy of chromium in the archive. > > > > > I will start working on the MUT packaging, updating watch, copyright > > while receiving more feedback. > > > > Thanks a lot for this, happy new year! > > > > Juan > > All the best, > > -- > Pierre >

