Initial commit

This commit is contained in:
2026-02-20 13:37:22 +02:00
commit 05534e8875
11 changed files with 469 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
# Ignore BPM archives and signatures
*.bpm
*.bpm.sig
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash
URL="https://chromiumdash.appspot.com/fetch_releases?channel=Stable&platform=Linux&num=1&offset=0"
# Get version number from tag name
VERSION=$(curl "$URL" | jq -r '.[0].version')
echo "$VERSION"
+64
View File
@@ -0,0 +1,64 @@
name: chromium
description: A safe, fast and stable open-source browser project
version: 145.0.7632.109
revision: 1
url: https://www.chromium.org/Home/
license: BSD-3-License
maintainers:
- [email protected]
architecture: any
type: source
depends:
- alsa-lib
- brotli
- dbus
- desktop-file-utils
- flac
- fontconfig
- freetype2
- gtk3
- harfbuzz
- hicolor-icon-theme
- libcups
- libffi
- libgcrypt
- libjpeg-turbo
- libpulse
- libva
- libwebp
- libxml2
- libxslt
- libxscrnsaver
- minizip
- nss
- opus
- pciutils
- xdg-utils
optional_depends:
- gtk4
- kdialog
- kwallet
- pipewire
- upower
make_depends:
- clang
- compiler-rt
- gperf
- gn
- gperf
- jre
- lld
- ninja
- nodejs
- npm
- pipewire
- python3
- qt6-base
- rsync
- rustc
- rust-bindgen
downloads:
- url: https://github.com/chromium-linux-tarballs/chromium-tarballs/releases/download/${BPM_PKG_VERSION}/chromium-${BPM_PKG_VERSION}-linux.tar.xz
extract_to: ${BPM_SOURCE}
extract_strip_components: 1
checksum: b9ea83023404cb1e33f9ef03f3d5076885611d7c262a43d70d1c05b4779b345e
@@ -0,0 +1,49 @@
https://issues.chromium.org/issues/418397211
From: Matt Jolly <[email protected]>
Date: Tue, 25 Mar 2025 13:33:48 +1000
Subject: [PATCH] Remove nodejs version check
Added in https://github.com/chromium/chromium/commit/0ff8528999941d7182be6fc77aeb12a110a3cd86,
this change is only really useful for gclient checkouts and breaks the
ability for downstreams to provide their own, compatible, nodejs
version via the system package manager (or for use on arches other than
those that Google provides binaries for):
[ERR_ASSERTION]: Failed NodeJS version check: Expected version 'v22.11.0', but found 'v22.13.1'. Did you run 'gclient sync'
This is google development footgun protection, working around
poor development practices and gclient's inability to ensure
that the source tree is in a consistent state. We don't need it
here.
Signed-off-by: Matt Jolly <[email protected]>
--- a/third_party/node/node.gni
+++ b/third_party/node/node.gni
@@ -36,15 +36,5 @@ template("node") {
}
}
- # Automatically add a dependency to ":check_version" to ensure NodeJS is
- # always running the expected version, except when the ':check_version'
- # target itself is running in which case it shouldn't depend on itself.
- if (get_label_info(":" + target_name, "label_no_toolchain") !=
- "//third_party/node:check_version") {
- if (!defined(deps)) {
- deps = []
- }
- deps += [ "//third_party/node:check_version" ]
- }
}
}
--- a/third_party/protobuf/proto_library.gni
+++ b/third_party/protobuf/proto_library.gni
@@ -562,7 +562,6 @@ template("proto_library") {
_protoc_gen_ts_path,
"//tools/protoc_wrapper/protoc-gen-ts_proto.py",
] + _protoc_gen_ts_runtime_deps
- deps += [ "//third_party/node:check_version" ]
}
if (_generate_with_plugin) {
--
2.49.0
@@ -0,0 +1,11 @@
https://bugs.gentoo.org/969846
https://bugs.gentoo.org/969495
https://crbug.com/456218403
--- a/sandbox/linux/system_headers/linux_seccomp.h
+++ b/sandbox/linux/system_headers/linux_seccomp.h
@@ -7,4 +7,5 @@
#include <stdint.h>
+#include <signal.h>
#include <sys/ioctl.h>
+6
View File
@@ -0,0 +1,6 @@
#!/bin/sh
export CHROME_WRAPPER=/usr/lib/chromium/chromium
export CHROME_DESKTOP=chromium.desktop
CHROME_FLAGS="--enable-gpu-rasterization $CHROME_FLAGS"
exec /usr/lib/chromium/chromium $CHROME_FLAGS "$@"
@@ -0,0 +1,27 @@
From 7f9a0877029aa3492fd381313886d9c80efbb752 Mon Sep 17 00:00:00 2001
From: Max Ihlenfeldt <[email protected]>
Date: Wed, 7 Feb 2024 11:58:30 +0000
Subject: [PATCH] Don't require profiler_builtins.rlib
This library is only needed for profiling builds, which we don't do.
Including it leads to compile errors on with OE's current master branch
because they disabled building the library, so just skip it.
Upstream-Status: Inappropriate [specific to our build setup]
Signed-off-by: Max Ihlenfeldt <[email protected]>
---
build/rust/std/BUILD.gn | 1 -
1 file changed, 1 deletion(-)
diff --git a/build/rust/std/BUILD.gn b/build/rust/std/BUILD.gn
index 77f4b8c..3078de8 100644
--- a/build/rust/std/BUILD.gn
+++ b/build/rust/std/BUILD.gn
@@ -100,7 +100,6 @@ if (toolchain_has_rust) {
# don't need to pass to the C++ linker because they're used for specialized
# purposes.
skip_stdlib_files = [
- "profiler_builtins",
"rustc_std_workspace_alloc",
"rustc_std_workspace_core",
"rustc_std_workspace_std",
+13
View File
@@ -0,0 +1,13 @@
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index eb329bc88fec..7c98dfddcf8a 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -2054,7 +2054,7 @@ config("chromium_code") {
# Non-chromium code is not guaranteed to compile cleanly with
# _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are
# disabled, so only do that for Release build.
- fortify_level = "2"
+ fortify_level = "3"
# ChromeOS's toolchain supports a high-quality _FORTIFY_SOURCE=3
# implementation with a few custom glibc patches. Use that if it's
@@ -0,0 +1,117 @@
--- a/third_party/devtools-frontend/src/front_end/Images/BUILD.gn
+++ b/third_party/devtools-frontend/src/front_end/Images/BUILD.gn
@@ -28,7 +28,7 @@ node_action("generate_css_vars") {
}
node_action("optimize_images") {
- script = "node_modules/rollup/dist/bin/rollup"
+ script = "../../node/node_modules/@rollup/wasm-node/dist/bin/rollup"
_bundled_entrypoint = target_gen_dir + "/Images.prebundle.js"
_output_file_location = target_gen_dir + "/Images.js"
--- a/third_party/devtools-frontend/src/front_end/models/live-metrics/web-vitals-injected/BUILD.gn
+++ b/third_party/devtools-frontend/src/front_end/models/live-metrics/web-vitals-injected/BUILD.gn
@@ -26,7 +26,7 @@ devtools_module("web-vitals-injected") {
}
node_action("bundled_library") {
- script = "node_modules/rollup/dist/bin/rollup"
+ script = "../../node/node_modules/@rollup/wasm-node/dist/bin/rollup"
_bundled_entrypoint = target_gen_dir + "/web-vitals-injected.js"
_output_file_location = target_gen_dir + "/web-vitals-injected.generated.js"
--- a/third_party/devtools-frontend/src/front_end/panels/recorder/injected/BUILD.gn
+++ b/third_party/devtools-frontend/src/front_end/panels/recorder/injected/BUILD.gn
@@ -55,7 +55,7 @@ devtools_entrypoint("bundle") {
}
node_action("bundled_library") {
- script = "node_modules/rollup/dist/bin/rollup"
+ script = "../../node/node_modules/@rollup/wasm-node/dist/bin/rollup"
_bundled_entrypoint = target_gen_dir + "/injected.js"
_output_file_location = target_gen_dir + "/injected.generated.js"
--- a/third_party/devtools-frontend/src/inspector_overlay/BUILD.gn
+++ b/third_party/devtools-frontend/src/inspector_overlay/BUILD.gn
@@ -36,7 +36,7 @@ action("build_inspector_overlay") {
"$target_gen_dir/tool_window_controls.css",
"$target_gen_dir/main.js",
devtools_location_prepend + "inspector_overlay/loadCSS.rollup.js",
- devtools_location_prepend + "node_modules/rollup/dist/bin/rollup",
+ devtools_location_prepend + "../../node/node_modules/@rollup/wasm-node/dist/bin/rollup",
]
outputs = [ "$resources_out_dir/main.js" ]
--- a/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py
+++ b/third_party/devtools-frontend/src/scripts/build/build_inspector_overlay.py
@@ -56,7 +56,7 @@ def rollup(input_path, output_path, file
[devtools_paths.node_path(),
devtools_paths.rollup_path()] +
['--format', 'iife', '-n', 'InspectorOverlay'] + ['--input', target] +
- ['--plugin', rollup_plugin, '--plugin', 'terser'],
+ ['--plugin', rollup_plugin, '--plugin', path.join(devtools_paths.node_modules_path(), '@rollup', 'plugin-terser', 'dist', 'cjs', 'index.js')],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True,
--- a/third_party/devtools-frontend/src/scripts/build/ninja/bundle.gni
+++ b/third_party/devtools-frontend/src/scripts/build/ninja/bundle.gni
@@ -11,7 +11,7 @@ template("bundle") {
"You must define the 'entrypoint' for a bundle target")
node_action(target_name) {
- script = "scripts/build/esbuild.js"
+ script = "../../node/node_modules/@rollup/wasm-node/dist/bin/rollup"
forward_variables_from(invoker,
[
"visibility",
@@ -21,27 +21,23 @@ template("bundle") {
inputs = [
invoker.entrypoint,
+ devtools_location_prepend + "scripts/build/rollup.config.mjs",
devtools_location_prepend + "scripts/build/devtools_plugin.js",
devtools_location_prepend + "scripts/devtools_paths.js",
]
- _esbuild = devtools_location_prepend + "third_party/esbuild/esbuild"
- if (host_os == "win") {
- inputs += [ _esbuild + ".exe" ]
- } else {
- inputs += [ _esbuild ]
- }
-
args = [
+ "--config",
+ rebase_path(
+ devtools_location_prepend + "scripts/build/rollup.config.mjs",
+ root_build_dir),
+ "--input",
rebase_path(invoker.entrypoint, root_build_dir),
+ "--file",
rebase_path(invoker.output_file_location, root_build_dir),
"--configSourcemaps",
]
- if (!is_debug) {
- args += [ "--minify" ]
- }
-
outputs = [ invoker.output_file_location ]
}
}
--- a/third_party/devtools-frontend/src/scripts/devtools_paths.py
+++ b/third_party/devtools-frontend/src/scripts/devtools_paths.py
@@ -64,8 +64,11 @@ def license_checker_path():
def rollup_path():
return path.join(
- node_modules_path(),
- 'rollup',
+ third_party_path(),
+ 'node',
+ 'node_modules',
+ '@rollup',
+ 'wasm-node',
'dist',
'bin',
'rollup',
@@ -0,0 +1,21 @@
diff --git a/google_apis/api_key_cache.cc b/google_apis/api_key_cache.cc
index bbb9420f40..690445534b 100644
--- a/google_apis/api_key_cache.cc
+++ b/google_apis/api_key_cache.cc
@@ -235,14 +235,14 @@ ApiKeyCache::ApiKeyCache(const DefaultApiKeys& default_api_keys) {
std::string default_client_id = CalculateKeyValue(
default_api_keys.google_default_client_id,
- STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_ID), std::string(), nullptr,
+ STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_ID), std::string(), ::switches::kOAuth2ClientID,
std::string(), environment.get(), command_line, gaia_config,
default_api_keys.allow_override_via_environment,
default_api_keys.allow_unset_values);
std::string default_client_secret = CalculateKeyValue(
default_api_keys.google_default_client_secret,
STRINGIZE_NO_EXPANSION(GOOGLE_DEFAULT_CLIENT_SECRET), std::string(),
- nullptr, std::string(), environment.get(), command_line, gaia_config,
+ ::switches::kOAuth2ClientSecret, std::string(), environment.get(), command_line, gaia_config,
default_api_keys.allow_override_via_environment,
default_api_keys.allow_unset_values);
+150
View File
@@ -0,0 +1,150 @@
# This is the source.sh script. It is executed by BPM in a temporary directory when compiling a source package
# BPM Expects the source code to be extracted into the automatically created 'source' directory which can be accessed using $BPM_SOURCE
# BPM Expects the output files to be present in the automatically created 'output' directory which can be accessed using $BPM_OUTPUT
# The prepare function is executed in the root of the temp directory
# This function is used for putting downloaded files to the correct location or applying patches
prepare() {
cd "$BPM_SOURCE"
for _patch in "$BPM_WORKDIR"/*.patch; do
patch -Np1 -i "$_patch"
done
# Allow building against system libraries in official builds
sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' tools/generate_shim_headers/generate_shim_headers.py
# Link to system tools required by the build
mkdir -p third_party/node/linux/node-linux-x64/bin third_party/jdk/current/bin
ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
ln -s /usr/bin/java third_party/jdk/current/bin/
local _system_libs=(
brotli
flac
fontconfig
freetype
harfbuzz-ng
libjpeg
libwebp
libxml
libxslt
opus
zlib
)
# Remove bundled libraries for which we will use the system copies; this
# *should* do what the remove_bundled_libraries.py script does, with the
# added benefit of not having to list all the remaining libraries
local _lib
for _lib in "${_system_libs[@]//libjpeg/libjpeg_turbo}"; do
find "third_party/$_lib" -type f \
\! -path "third_party/$_lib/chromium/*" \
\! -path "third_party/$_lib/google/*" \
\! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \
\! -regex '.*\.\(gn\|gni\|isolate\)' \
-delete
done
./build/linux/unbundle/replace_gn_files.py --system-libraries "${_system_libs[@]}"
# Use correct libadler lib
sed -i 's/rustc_nightly_capability = use_chromium_rust_toolchain/rustc_nightly_capability = true/' build/config/rust.gni
}
# The build function is executed in the source directory
# This function is used to compile the source code
build() {
export CC=clang CXX=clang++ AR=ar NM=nm
local _flags=(
'custom_toolchain="//build/toolchain/linux/unbundle:default"'
'host_toolchain="//build/toolchain/linux/unbundle:default"'
'is_official_build=true' # implies is_cfi=true on x86_64
'symbol_level=0' # sufficient for backtraces on x86(_64)
'treat_warnings_as_errors=false'
'fatal_linker_warnings=false'
'disable_fieldtrial_testing_config=true'
'blink_enable_generated_code_formatting=false'
'ffmpeg_branding="Chrome"'
'proprietary_codecs=true'
'rtc_use_pipewire=true'
'link_pulseaudio=true'
'use_custom_libcxx=true' # https://github.com/llvm/llvm-project/issues/61705
'use_sysroot=false'
'use_system_libffi=true'
'enable_hangout_services_extension=true'
'enable_widevine=true'
'use_qt5=false'
'use_qt6=true'
'moc_qt6_path="/usr/lib/qt6"'
'use_clang_modules=false'
'clang_base_path="/usr"'
'clang_use_chrome_plugins=false'
"clang_version=$(clang --version | grep -m1 version | sed 's/.* \([0-9]\+\).*/\1/')"
'chrome_pgo_phase=0'
'rust_sysroot_absolute="/usr"'
'rust_bindgen_root="/usr"'
"rustc_version=\"$(rustc --version)\""
)
export RUSTC_BOOTSTRAP=1
# Make builds deterministic and ignore unknown option warnings
export CFLAGS="${CFLAGS} -Wno-builtin-macro-redefined -Wno-unknown-warning-option"
export CXXFLAGS="${CXXFLAGS} -Wno-builtin-macro-redefined -Wno-unknown-warning-option"
export CPPFLAGS="${CPPFLAGS} -D__DATE__= -D__TIME__= -D__TIMESTAMP__="
gn gen out/Release --args="${_flags[*]}"
ninja -C out/Release chrome chrome_sandbox chromedriver.unstripped
}
# The package function is executed in the source directory
# This function is used to move the compiled files into the output directory
package() {
install -Dm755 out/Release/chrome "$BPM_OUTPUT"/usr/lib/chromium/chromium
install -Dm755 out/Release/chrome_crashpad_handler "$BPM_OUTPUT"/usr/lib/chromium/chrome_crashpad_handler
install -Dm755 out/Release/chromedriver.unstripped "$BPM_OUTPUT"/usr/lib/chromium/chromedriver
install -Dm755 out/Release/libEGL.so "$BPM_OUTPUT"/usr/lib/chromium/libEGL.so
install -Dm755 out/Release/libGLESv2.so "$BPM_OUTPUT"/usr/lib/chromium/libGLESv2.so
install -Dm755 out/Release/libvk_swiftshader.so "$BPM_OUTPUT"/usr/lib/chromium/libvk_swiftshader.so
install -Dm755 out/Release/libvulkan.so.1 "$BPM_OUTPUT"/usr/lib/chromium/libvulkan.so.1
install -Dm755 out/Release/vk_swiftshader_icd.json "$BPM_OUTPUT"/usr/lib/chromium/vk_swiftshader_icd.json
install -Dm755 out/Release/libqt6_shim.so "$BPM_OUTPUT"/usr/lib/chromium/libqt6_shim.so
install -Dm644 out/Release/icudtl.dat "$BPM_OUTPUT"/usr/lib/chromium/icudtl.dat
install -Dm644 out/Release/locales/*.pak -t "$BPM_OUTPUT"/usr/lib/chromium/locales/
install -Dm644 out/Release/*.bin -t "$BPM_OUTPUT"/usr/lib/chromium
install -Dm644 out/Release/*.pak -t "$BPM_OUTPUT"/usr/lib/chromium
# Install chromium launcher script
install -Dm755 "$BPM_WORKDIR"/chromium.sh "$BPM_OUTPUT"/usr/bin/chromium
# Create symbolic link to usr/bin
ln -sf /usr/lib/chromium/chromedriver "$BPM_OUTPUT"/usr/bin/chromedriver
# Install desktop icons
for size in 24 48 64 128 256; do
install -Dm644 chrome/app/theme/chromium/product_logo_${size}.png "$BPM_OUTPUT"/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png
done
for size in 16 32; do
install -Dm644 chrome/app/theme/default_100_percent/chromium/product_logo_${size}.png "$BPM_OUTPUT"/usr/share/icons/hicolor/${size}x${size}/apps/chromium.png
done
# Install desktop file
install -Dm644 chrome/installer/linux/common/desktop.template "$BPM_OUTPUT"/usr/share/applications/chromium.desktop
# Install man page
install -Dm644 chrome/app/resources/manpage.1.in "$BPM_OUTPUT"/usr/share/man/man1/chromium.1
# Replace placeholders in desktop file and man page
sed -i \
-e 's/@@MENUNAME/Chromium/g' \
-e 's/@@PACKAGE/chromium/g' \
-e 's/@@usr_bin_symlink_name/chromium/g' \
-e 's|@@uri_scheme|x-scheme-handler/chromium;|g' \
-e 's/@@extra_desktop_entries//g' \
"$BPM_OUTPUT"/usr/share/applications/chromium.desktop \
"$BPM_OUTPUT"/usr/share/man/man1/chromium.1
# Install package license
install -Dm644 "$BPM_SOURCE"/LICENSE "$BPM_OUTPUT"/usr/share/licenses/chromium/LICENSE
}