commit 6c64dee99bd1148c6519679eea0395e02fce44839b2723522f61c12e85777e03
Author: Raymond Wooninck
Date: Wed Aug 17 07:21:58 2011 +0000
Accepting request 79098 from home:rwooninck:chromium
Move chromium to it's own place
OBS-URL: https://build.opensuse.org/request/show/79098
OBS-URL: https://build.opensuse.org/package/show/network:chromium/chromium?expand=0&rev=1
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..06089e5
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,25 @@
+## Default LFS
+*.7z filter=lfs diff=lfs merge=lfs -text
+*.bsp filter=lfs diff=lfs merge=lfs -text
+*.bz2 filter=lfs diff=lfs merge=lfs -text
+*.gem filter=lfs diff=lfs merge=lfs -text
+*.gz filter=lfs diff=lfs merge=lfs -text
+*.jar filter=lfs diff=lfs merge=lfs -text
+*.lz filter=lfs diff=lfs merge=lfs -text
+*.lzma filter=lfs diff=lfs merge=lfs -text
+*.obscpio filter=lfs diff=lfs merge=lfs -text
+*.oxt filter=lfs diff=lfs merge=lfs -text
+*.pdf filter=lfs diff=lfs merge=lfs -text
+*.png filter=lfs diff=lfs merge=lfs -text
+*.rpm filter=lfs diff=lfs merge=lfs -text
+*.tbz filter=lfs diff=lfs merge=lfs -text
+*.tbz2 filter=lfs diff=lfs merge=lfs -text
+*.tgz filter=lfs diff=lfs merge=lfs -text
+*.ttf filter=lfs diff=lfs merge=lfs -text
+*.txz filter=lfs diff=lfs merge=lfs -text
+*.whl filter=lfs diff=lfs merge=lfs -text
+*.xz filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+*.zst filter=lfs diff=lfs merge=lfs -text
+## Specific LFS patterns
+chromium-symbolic.svg filter=lfs diff=lfs merge=lfs -text
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..57affb6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.osc
diff --git a/Cr122-ffmpeg-new-channel-layout.patch b/Cr122-ffmpeg-new-channel-layout.patch
new file mode 100644
index 0000000..b7dc4d8
--- /dev/null
+++ b/Cr122-ffmpeg-new-channel-layout.patch
@@ -0,0 +1,350 @@
+From 84d1d7adcd1697348e3f821811179c525d3b5717 Mon Sep 17 00:00:00 2001
+From: Dale Curtis
+Date: Tue, 28 Nov 2023 00:41:42 +0000
+Subject: [PATCH] Roll src/third_party/ffmpeg/ c1d0dc413..866768f35 (492
+ commits)
+
+https://chromium.googlesource.com/chromium/third_party/ffmpeg.git/+log/c1d0dc4135ec..866768f35c22
+
+$ git log c1d0dc413..866768f35 --date=short --no-merges --format='%ad %ae %s'
+2023-11-22 dalecurtis README.chromium file
+2023-11-22 dalecurtis Chromium patches file
+2023-11-22 dalecurtis GN Configuration
+2023-11-21 dalecurtis Switch to remoteexec for robosushi
+2023-11-12 mypopydev vulkan_decode: fix the print format of VkDeviceSize
+2023-08-28 mypopydev avdevice/decklink_dec: add explicit specifier
+2023-11-20 jamrial avcodec: bump version after EVC additions
+2023-09-19 d.kozinski avcodec/evc_decoder: Provided support for EVC decoder
+2023-09-19 d.kozinski avcodec/evc_encoder: Provided support for EVC encoder
+2023-10-17 michael avcodec/h264dec: Support skipping frames that used gray gap frames
+2023-10-17 michael avcodec/h264: Avoid using gray gap frames as references
+2023-10-17 michael avcodec/h264: keep track of which frames used gray references
+2023-10-02 michael avcodec/h264dec: More elaborate documentation for frame_recovered
+2023-10-02 michael avcodec/h264: Use FRAME_RECOVERED_HEURISTIC instead of IDR/SEI
+2023-10-02 michael avcodec/h264: Seperate SEI and IDR recovery handling
+2023-11-19 onemda avfilter/af_afir: remove flag that is not needed
+2023-11-19 onemda avfilter/af_afir: no need to dynamically add outpad
+2023-11-19 onemda avfilter/af_afir: refactor crossfade code
+2023-11-19 onemda avfilter/af_afir: add timeline support
+2023-11-16 remi riscv: set fast half-precision conversion
+2023-11-19 onemda avfilter/af_afir: remove IR response video rendering support
+2023-11-19 onemda doc/filters: add one more example for afir filter usage
+2023-11-14 anton tools/general_assembly: update to conform to new rules
+2023-11-14 anton tools/general_assembly: make the script executable
+2023-11-18 onemda avfilter/avf_showvolume: improve step for vertical orientation
+2023-11-18 onemda avfilter/avf_showvolume: draw channel names directly into output frame
+2023-11-15 remi lavc/llviddsp: R-V V add_bytes
+2023-11-15 remi lavc/flacdsp: R-V V LPC16 function
+2023-11-15 remi lavc/flacdsp: R-V V LPC32
+2023-11-15 remi checkasm/flacdsp: add LPC test
+2023-11-15 remi riscv: fix builds without Zbb support
+2023-11-18 mypopydev lavfi/Makefile: fix vf_cropdetect missed edge_common
+2023-11-10 ffmpeg-devel apply spelling fixes
+2023-11-18 onemda avfilter/af_afir: add irnorm and irlink options
+2023-11-14 remi lavc/flacdsp: R-V V decorrelate_indep 16-bit packed
+2023-11-14 remi lavc/flacdsp: R-V V decorrelate_indep 32-bit packed
+2023-11-13 remi lavc/flacdsp: R-V V decorrelate_ms packed
+2023-08-16 remi lavc/flacdsp: R-V V packed decorrelate_{l,r}s
+2023-11-13 remi checkasm/flacdsp: fix ls/rs/ms tests
+2023-11-08 onemda avfilter/af_adynamicequalizer: add adaptive detection mode
+2023-11-06 onemda avfilter/af_adynamicequalizer: do gain calculations in log domain
+2023-11-03 sunyuechi af_afir: RISC-V V fcmul_add
+2023-11-12 remi lavc/llauddsp: R-V V scalarproduct_and_madd_int32
+2023-11-12 remi lavc/llauddsp: R-V V scalarproduct_and_madd_int16
+2023-11-12 remi checkasm: add lossless audio DSP
+2023-11-15 jamrial x86/flacds: clear the high bits from pred_order in lpc_32 functions
+2023-11-13 jianhui.j.dai-at-intel.com avcodec/cbs_vp8: Add support for VP8 codec bitstream
+2023-11-13 jianhui.j.dai-at-intel.com avcodec/vp8: Export `vp8_token_update_probs` variable
+2023-11-12 remi lavc/huffyuvdsp: basic R-V V add_hfyu_left_pred_bgr32
+2023-11-12 remi checkasm/huffyuvdsp: test for add_hfyu_left_pred_bgr32
+(...)
+2022-08-04 andreas.rheinhardt avcodec/cbs: Use RefStruct-API for unit content
+2022-08-04 andreas.rheinhardt avcodec/refstruct: Allow checking for exclusive ownership
+2022-08-04 andreas.rheinhardt avcodec/dovi_rpu: Use RefStruct API for Vdr data
+2022-08-04 andreas.rheinhardt avcodec/wavpack: Use RefStruct API for DSD context
+2023-07-17 andreas.rheinhardt avcodec/vp8: Use RefStruct API for seg_map
+2022-08-04 andreas.rheinhardt avcodec/hevc_ps: Use RefStruct API for parameter sets
+2022-08-04 andreas.rheinhardt avcodec/h264_ps: Use RefStruct API for SPS/PPS
+2022-08-04 andreas.rheinhardt avcodec/get_buffer: Use RefStruct API for FramePool
+2022-08-04 andreas.rheinhardt avcodec/refstruct: Add simple API for refcounted objects
+2023-10-03 remi lavu/fixed_dsp: R-V V scalarproduct
+2023-10-07 onemda avformat/wavdec: w64: do not error out for broken files if data start is found
+2023-10-06 onemda avcodec/mlpenc: rename some variables related to thd
+2023-10-03 andreas.rheinhardt avcodec/mpegvideo: Move allocating new_picture to the encoder
+2023-07-17 jamrial fftools/ffplay: stop injecting stream side data in packets
+2023-07-17 jamrial fftools/ffmpeg: stop injecting stream side data in packets
+2023-07-17 jamrial avcodec/decode: propagate global side data to frames
+2023-07-17 jamrial avcodec/hevcdec: check for DOVI configuration record in AVCodecContext side data
+2023-07-16 jamrial fftools/ffprobe: stop using AVStream.side_data
+2023-07-16 jamrial fftools/ffplay: stop using AVStream.side_data
+2023-07-16 jamrial fftools/ffmpeg: stop using AVStream.side_data
+2023-09-26 jamrial avcodec/packet: add some documentation for AVPacketSideData
+2023-07-16 jamrial avformat/avformat: use the side data from AVStream.codecpar
+2023-07-16 jamrial avcodec/codec_par: add side data to AVCodecParameters
+2023-07-16 jamrial avcodec/packet: add generic side data helpers
+2023-10-06 andreas.rheinhardt avfilter/vulkan_filter: Remove unused label
+2023-10-06 onemda avcodec/mlpdec: set extended_substream_info from header
+2023-08-26 stefasab doc/encoders/libopus: clarify lowdelay and cutoff options
+2023-08-26 stefasab doc/encoders/libxvid: fix references for me_quality option
+2023-08-26 stefasab doc/encoders/libx264: clarify meaning of level option
+2023-08-26 stefasab lavc: clarify meaning of avctx.level option
+2023-10-03 leo.izen avcodec/jpegxl_parser: fix various memory issues
+2023-10-03 leo.izen avcodec/jpegxl_parser: add some icc profile checks
+2023-09-01 stefasab ffprobe: introduce section type, use for the compact output
+2023-09-01 stefasab ffprobe: correct section name for side data piece
+2023-08-31 stefasab ffprobe: factorize side data printing to dedicated function
+2023-10-03 onemda avcodec/mlpenc: restructure code and resolve several bugs
+2023-10-05 dev hwcontext_vulkan: properly support STORAGE usage for mutliplane images
+2023-09-30 ben vulkan_hevc: handle non-contiguous SPS/PPS/VPS ids
+2023-10-03 ffmpeg-devel avcodec/svt-av1: Set force_key_frames only when gop_size == 1
+2023-10-03 andreas.rheinhardt avcodec/h261dec, mpeg12dec, vc1dec: Remove setting write-only flags
+2023-10-03 andreas.rheinhardt avcodec/rv10: Replace switch by LUT
+2023-10-03 andreas.rheinhardt avcodec/rv10: Remove dead code
+2023-10-02 andreas.rheinhardt avcodec/h263dec, mpeg4videodec: Parse extradata during init
+2023-10-01 andreas.rheinhardt avcodec/mpegvideo_dec: Always initialize IDCTDSPContext during init
+2023-10-01 andreas.rheinhardt avcodec/mpegvideo_dec: Don't zero context on init failure
+2023-10-01 andreas.rheinhardt avcodec/mpeg12dec: Don't initialize IDCT more than once
+2023-10-02 remi lavc/ac3: add R-V Zbb extract_exponents
+2023-10-04 jamrial avcodec/hcadec: add a flush callback
+2023-10-01 remi swscale/rgb2rgb: R-V V deinterleaveBytes
+2023-10-01 remi swscale/rgb2rgb: fix extra iteration in R-V V interleave
+
+Created with:
+ roll-dep src/third_party/ffmpeg
+
+R=jrummell
+
+Bug: 1504603
+Change-Id: Ia40313bc2abcb0594543019bc8d1c22fbf7bde82
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5055586
+Reviewed-by: John Rummell
+Auto-Submit: Dale Curtis
+Commit-Queue: Dale Curtis
+Cr-Commit-Position: refs/heads/main@{#1229653}
+---
+ DEPS | 2 +-
+ media/ffmpeg/ffmpeg_common.cc | 169 +++++++++---------
+ .../filters/audio_video_metadata_extractor.cc | 17 +-
+ media/filters/ffmpeg_demuxer_unittest.cc | 4 +-
+ third_party/ffmpeg | 2 +-
+ 5 files changed, 97 insertions(+), 97 deletions(-)
+
+diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc
+index 3c97e4a6cf4c7..a55e4ab51d5b3 100644
+--- a/media/ffmpeg/ffmpeg_common.cc
++++ b/media/ffmpeg/ffmpeg_common.cc
+@@ -653,15 +653,6 @@ bool AVStreamToVideoDecoderConfig(const AVStream* stream,
+ profile = ProfileIDToVideoCodecProfile(codec_context->profile);
+ }
+
+- void* display_matrix =
+- av_stream_get_side_data(stream, AV_PKT_DATA_DISPLAYMATRIX, nullptr);
+-
+- VideoTransformation video_transformation = VideoTransformation();
+- if (display_matrix) {
+- video_transformation = VideoTransformation::FromFFmpegDisplayMatrix(
+- static_cast(display_matrix));
+- }
+-
+ if (!color_space.IsSpecified()) {
+ // VP9 frames may have color information, but that information cannot
+ // express new color spaces, like HDR. For that reason, color space
+@@ -718,91 +709,92 @@
+ codec_context->extradata + codec_context->extradata_size);
+ }
+
+- if (stream->nb_side_data) {
+- for (int i = 0; i < stream->nb_side_data; ++i) {
+- AVPacketSideData side_data = stream->side_data[i];
+- switch (side_data.type) {
+- case AV_PKT_DATA_MASTERING_DISPLAY_METADATA: {
+- AVMasteringDisplayMetadata* mdcv =
+- reinterpret_cast(side_data.data);
+- gfx::HdrMetadataSmpteSt2086 smpte_st_2086;
+- if (mdcv->has_primaries) {
+- smpte_st_2086.primaries = {
+- static_cast(av_q2d(mdcv->display_primaries[0][0])),
+- static_cast(av_q2d(mdcv->display_primaries[0][1])),
+- static_cast(av_q2d(mdcv->display_primaries[1][0])),
+- static_cast(av_q2d(mdcv->display_primaries[1][1])),
+- static_cast(av_q2d(mdcv->display_primaries[2][0])),
+- static_cast(av_q2d(mdcv->display_primaries[2][1])),
+- static_cast(av_q2d(mdcv->white_point[0])),
+- static_cast(av_q2d(mdcv->white_point[1])),
+- };
+- }
+- if (mdcv->has_luminance) {
+- smpte_st_2086.luminance_max = av_q2d(mdcv->max_luminance);
+- smpte_st_2086.luminance_min = av_q2d(mdcv->min_luminance);
+- }
+-
+- // TODO(crbug.com/40268540): Consider rejecting metadata that
+- // does not specify all values.
+- if (mdcv->has_primaries || mdcv->has_luminance) {
+- hdr_metadata.smpte_st_2086 = smpte_st_2086;
+- }
+- break;
++ VideoTransformation video_transformation = VideoTransformation();
++ for (int i = 0; i < stream->codecpar->nb_coded_side_data; ++i) {
++ const auto& side_data = stream->codecpar->coded_side_data[i];
++ switch (side_data.type) {
++ case AV_PKT_DATA_DISPLAYMATRIX: {
++ CHECK_EQ(side_data.size, sizeof(int32_t) * 3 * 3);
++ video_transformation = VideoTransformation::FromFFmpegDisplayMatrix(
++ reinterpret_cast(side_data.data));
++ break;
++ }
++ case AV_PKT_DATA_MASTERING_DISPLAY_METADATA: {
++ AVMasteringDisplayMetadata* mdcv =
++ reinterpret_cast(side_data.data);
++ gfx::HdrMetadataSmpteSt2086 smpte_st_2086;
++ if (mdcv->has_primaries) {
++ smpte_st_2086.primaries = {
++ static_cast(av_q2d(mdcv->display_primaries[0][0])),
++ static_cast(av_q2d(mdcv->display_primaries[0][1])),
++ static_cast(av_q2d(mdcv->display_primaries[1][0])),
++ static_cast(av_q2d(mdcv->display_primaries[1][1])),
++ static_cast(av_q2d(mdcv->display_primaries[2][0])),
++ static_cast(av_q2d(mdcv->display_primaries[2][1])),
++ static_cast(av_q2d(mdcv->white_point[0])),
++ static_cast(av_q2d(mdcv->white_point[1])),
++ };
+ }
+- case AV_PKT_DATA_CONTENT_LIGHT_LEVEL: {
+- AVContentLightMetadata* clli =
+- reinterpret_cast(side_data.data);
+- hdr_metadata.cta_861_3 =
+- gfx::HdrMetadataCta861_3(clli->MaxCLL, clli->MaxFALL);
+- break;
++ if (mdcv->has_luminance) {
++ smpte_st_2086.luminance_max = av_q2d(mdcv->max_luminance);
++ smpte_st_2086.luminance_min = av_q2d(mdcv->min_luminance);
++ }
++
++ // TODO(crbug.com/40268540): Consider rejecting metadata that
++ // does not specify all values.
++ if (mdcv->has_primaries || mdcv->has_luminance) {
++ hdr_metadata.smpte_st_2086 = smpte_st_2086;
+ }
++ break;
++ }
++ case AV_PKT_DATA_CONTENT_LIGHT_LEVEL: {
++ AVContentLightMetadata* clli =
++ reinterpret_cast(side_data.data);
++ hdr_metadata.cta_861_3 =
++ gfx::HdrMetadataCta861_3(clli->MaxCLL, clli->MaxFALL);
++ break;
++ }
+ #if BUILDFLAG(ENABLE_PLATFORM_DOLBY_VISION)
+- case AV_PKT_DATA_DOVI_CONF: {
+- AVDOVIDecoderConfigurationRecord* dovi =
+- reinterpret_cast(
+- side_data.data);
+- VideoType type;
+- type.codec = VideoCodec::kDolbyVision;
+- type.level = dovi->dv_level;
+- type.color_space = color_space;
+- type.hdr_metadata_type = gfx::HdrMetadataType::kNone;
+- switch (dovi->dv_profile) {
+- case 0:
+- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE0;
+- break;
+- case 4:
+- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE4;
+- break;
+- case 5:
+- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE5;
+- break;
+- case 7:
+- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE7;
+- break;
+- case 8:
+- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE8;
+- break;
+- case 9:
+- type.profile = VideoCodecProfile::DOLBYVISION_PROFILE9;
+- break;
+- default:
+- type.profile = VideoCodecProfile::VIDEO_CODEC_PROFILE_UNKNOWN;
+- break;
+- }
+- // Treat dolby vision contents as dolby vision codec only if the
+- // device support clear DV decoding, otherwise use the original
+- // HEVC or AVC codec and profile.
+- if (media::IsDecoderSupportedVideoType(type)) {
+- codec = type.codec;
+- profile = type.profile;
+- }
+- break;
++ case AV_PKT_DATA_DOVI_CONF: {
++ AVDOVIDecoderConfigurationRecord* dovi =
++ reinterpret_cast(side_data.data);
++ VideoType type;
++ type.codec = VideoCodec::kDolbyVision;
++ type.level = dovi->dv_level;
++ type.color_space = color_space;
++ type.hdr_metadata_type = gfx::HdrMetadataType::kNone;
++ switch (dovi->dv_profile) {
++ case 0:
++ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE0;
++ break;
++ case 5:
++ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE5;
++ break;
++ case 7:
++ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE7;
++ break;
++ case 8:
++ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE8;
++ break;
++ case 9:
++ type.profile = VideoCodecProfile::DOLBYVISION_PROFILE9;
++ break;
++ default:
++ type.profile = VideoCodecProfile::VIDEO_CODEC_PROFILE_UNKNOWN;
++ break;
+ }
++ // Treat dolby vision contents as dolby vision codec only if the
++ // device support clear DV decoding, otherwise use the original
++ // HEVC or AVC codec and profile.
++ if (media::IsDecoderSupportedVideoType(type)) {
++ codec = type.codec;
++ profile = type.profile;
++ }
++ break;
++ }
+ #endif // BUILDFLAG(ENABLE_PLATFORM_DOLBY_VISION)
+ default:
+ break;
+- }
+ }
+ }
+
+diff --git a/media/filters/audio_video_metadata_extractor.cc b/media/filters/audio_video_metadata_extractor.cc
+index cb002490a6322..e841b4ad13383 100644
+--- a/media/filters/audio_video_metadata_extractor.cc
++++ b/media/filters/audio_video_metadata_extractor.cc
+@@ -113,13 +113,16 @@ bool AudioVideoMetadataExtractor::Extract(DataSource* source,
+ if (!stream)
+ continue;
+
+- void* display_matrix =
+- av_stream_get_side_data(stream, AV_PKT_DATA_DISPLAYMATRIX, nullptr);
+- if (display_matrix) {
+- rotation_ = VideoTransformation::FromFFmpegDisplayMatrix(
+- static_cast(display_matrix))
+- .rotation;
+- info.tags["rotate"] = base::NumberToString(rotation_);
++ for (int j = 0; j < stream->codecpar->nb_coded_side_data; j++) {
++ const AVPacketSideData& sd = stream->codecpar->coded_side_data[j];
++ if (sd.type == AV_PKT_DATA_DISPLAYMATRIX) {
++ CHECK_EQ(sd.size, sizeof(int32_t) * 3 * 3);
++ rotation_ = VideoTransformation::FromFFmpegDisplayMatrix(
++ reinterpret_cast(sd.data))
++ .rotation;
++ info.tags["rotate"] = base::NumberToString(rotation_);
++ break;
++ }
+ }
+
+ // Extract dictionary from streams also. Needed for containers that attach
diff --git a/INSTALL.sh b/INSTALL.sh
new file mode 100644
index 0000000..31c861b
--- /dev/null
+++ b/INSTALL.sh
@@ -0,0 +1,181 @@
+#!/bin/bash
+set -x
+while getopts s:o:l:i: option
+do
+case "${option}" in
+s) STAGEDIR=${OPTARG};;
+o) OUTPUTDIR=${OPTARG};;
+l) LIBDIR=${OPTARG};;
+i) ICUDATAFILE=${OPTARG};;
+esac
+done
+SHLIB_PERMS="755"
+PROGNAME="chrome"
+PACKAGE="chromium-browser"
+MAINTMAIL="chromium-dev@chromium.org"
+PROJECT_LICENSE="BSD-3-Clause and LGPL-2.1+ and Apache-2.0 and IJG and MIT and GPL-2.0+ and ISC and OpenSSL and (MPL-1.1 or GPL-2.0 or LGPL-2.0)"
+SHORTDESC="The web browser from Chromium project"
+FULLDESC=" Chromium is an open-source browser project that aims to build a safer, faster,\
+ and more stable way to experience the web.\
+
\
+ \
+ We invite you to join our effort to build a powerful platform for developing a\
+ new generation of web applications.\
+
\
+ \
+ Chromium supports Vorbis, Theora, WebM and HTML5 audio and video standards, but\
+ does not include the non-free AAC, H.264, MP3 or Adobe Flash code that is found\
+ in Chrome."
+PRODUCTURL="https://www.chromium.org/Home"
+DEVELOPER_NAME="The Chromium Authors"
+BUGTRACKERURL="https://www.chromium.org/for-testers/bug-reporting-guidelines"
+HELPURL="https://chromium.googlesource.com/chromium/src/+/main/docs/linux/debugging.md"
+MENUNAME="Chromium Web Browser"
+CHANNEL="stable"
+INSTALLDIR="${LIBDIR}/chromium"
+
+install -m 755 -d \
+ "${STAGEDIR}/${INSTALLDIR}" \
+ "${STAGEDIR}/usr/bin" \
+ "${STAGEDIR}/usr/share/applications" \
+ "${STAGEDIR}/usr/share/metainfo" \
+ "${STAGEDIR}/usr/share/man/man1"
+
+# app
+buildfile="${OUTPUTDIR}/${PROGNAME}"
+install -m 755 "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${PROGNAME}"
+
+# crashpad
+buildfile="${OUTPUTDIR}/chrome_crashpad_handler"
+install -m 755 "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/chrome_crashpad_handler"
+
+# resources
+install -m 644 "${OUTPUTDIR}/resources.pak" "${STAGEDIR}/${INSTALLDIR}/"
+install -m 644 "${OUTPUTDIR}/chrome_100_percent.pak" "${STAGEDIR}/${INSTALLDIR}/"
+install -m 644 "${OUTPUTDIR}/chrome_200_percent.pak" "${STAGEDIR}/${INSTALLDIR}/"
+
+# ICU data file; Necessary when the GN icu_use_data_file flag is true.
+if [ "x$ICUDATAFILE" == "xtrue" ]; then
+ install -m 644 "${OUTPUTDIR}/icudtl.dat" "${STAGEDIR}/${INSTALLDIR}/"
+fi
+
+# V8 snapshot files; Necessary when the GN v8_use_external_startup_data flag
+ # is true.
+ # Use v8_context_snapshot.bin instead of snapshot_blob.bin if it is available.
+ # TODO(crbug.com/764576): Unship snapshot_blob.bin on ChromeOS and drop this branch
+install -m 644 "${OUTPUTDIR}/v8_context_snapshot.bin" "${STAGEDIR}/${INSTALLDIR}/"
+
+# l10n paks
+install -m 755 -d "${STAGEDIR}/${INSTALLDIR}/locales/"
+find "${OUTPUTDIR}/locales" -type f -name '*.pak' -print -exec \
+ cp -a {} "${STAGEDIR}/${INSTALLDIR}/locales/" \;
+find "${STAGEDIR}/${INSTALLDIR}/locales" -type f -print -exec chmod 644 {} \;
+
+# ANGLE
+if [ -f "${OUTPUTDIR}/libEGL.so" ]; then
+ for file in libEGL.so libGLESv2.so;
+ do
+ buildfile="${OUTPUTDIR}/${file}"
+ install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}"
+ done
+fi
+
+# ANGLE's libvulkan library
+if [ -f "${OUTPUTDIR}/libvulkan.so.1" ]; then
+ file="libvulkan.so.1"
+ buildfile="${OUTPUTDIR}/${file}"
+ install -m 755 "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}"
+fi
+
+# SwiftShader ES
+if [ -f "${OUTPUTDIR}/swiftshader/libEGL.so" ]; then
+ install -m 755 -d "${STAGEDIR}/${INSTALLDIR}/swiftshader/"
+ for file in libEGL.so libGLESv2.so;
+ do
+ buildfile="${OUTPUTDIR}/swiftshader/${file}"
+ install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/swiftshader/${file}"
+ done
+fi
+
+# SwiftShader VK
+if [ -f "${OUTPUTDIR}/libvk_swiftshader.so" ]; then
+ install -m 755 -d "${STAGEDIR}/${INSTALLDIR}/"
+ file="libvk_swiftshader.so"
+ buildfile="${OUTPUTDIR}/${file}"
+ install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}"
+fi
+sed -e 's|${ICD_LIBRARY_PATH}|./libvk_swiftshader.so|g' third_party/swiftshader/src/Vulkan/vk_swiftshader_icd.json.tmpl > ${OUTPUTDIR}/vk_swiftshader_icd.json
+# Install the ICD json file to point ANGLE to libvk_swiftshader.so
+install -m 644 "${OUTPUTDIR}/vk_swiftshader_icd.json" "${STAGEDIR}/${INSTALLDIR}/"
+
+# QT shim
+if [ -f "${OUTPUTDIR}/libqt5_shim.so" ]; then
+ file="libqt5_shim.so"
+ buildfile="${OUTPUTDIR}/${file}"
+ install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}"
+fi
+if [ -f "${OUTPUTDIR}/libqt6_shim.so" ]; then
+ file="libqt6_shim.so"
+ buildfile="${OUTPUTDIR}/${file}"
+ install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}"
+fi
+
+# default apps
+if [ -d "${OUTPUTDIR}/default_apps" ]; then
+ cp -a "${OUTPUTDIR}/default_apps" "${STAGEDIR}/${INSTALLDIR}/"
+ find "${STAGEDIR}/${INSTALLDIR}/default_apps" -type d -exec chmod 755 '{}' \;
+ find "${STAGEDIR}/${INSTALLDIR}/default_apps" -type f -exec chmod 644 '{}' \;
+fi
+
+# launcher script and symlink
+sed \
+ -e "s#@@PROGNAME@@#${PROGNAME}#g" \
+ -e "s#@@CHANNEL@@#${CHANNEL}#g" \
+ "chrome/installer/linux/common/wrapper" > "${STAGEDIR}/${INSTALLDIR}/chrome-wrapper"
+chmod 755 "${STAGEDIR}/${INSTALLDIR}/chrome-wrapper"
+ln -s "${INSTALLDIR}/chrome-wrapper" "${STAGEDIR}/usr/bin/${PACKAGE}"
+
+# app icons
+for size in 16 32;
+do
+ icon="chrome/app/theme/default_100_percent/chromium/product_logo_${size}.png"
+ installpath="${STAGEDIR}/usr/share/icons/hicolor/${size}x${size}/apps/chromium-browser.png"
+ install -D -m 644 ${icon} ${installpath}
+done
+for size in 24 48 64 128 256;
+do
+ icon="chrome/app/theme/chromium/product_logo_${size}.png"
+ installpath="${STAGEDIR}/usr/share/icons/hicolor/${size}x${size}/apps/chromium-browser.png"
+ install -D -m 644 ${icon} ${installpath}
+done
+
+# desktop integration
+## AppData
+sed \
+ -e "s#@@PACKAGE@@#${PACKAGE}#g" \
+ -e "s#@@MAINTMAIL@@#${MAINTMAIL}#g" \
+ -e "s#@@PROJECT_LICENSE@@#${PROJECT_LICENSE}#g" \
+ -e "s#@@MENUNAME@@#${MENUNAME}#g" \
+ -e "s#@@SHORTDESC@@#${SHORTDESC}#g" \
+ -e "s#@@FULLDESC@@#${FULLDESC}#g" \
+ -e "s#@@PRODUCTURL@@#${PRODUCTURL}#g" \
+ -e "s#@@DEVELOPER_NAME@@#${DEVELOPER_NAME}#g" \
+ -e "s#@@BUGTRACKERURL@@#${BUGTRACKERURL}#g" \
+ -e "s#@@HELPURL@@#${HELPURL}#g" \
+ "chrome/installer/linux/common/appdata.xml.template" > "${STAGEDIR}/usr/share/metainfo/${PACKAGE}.appdata.xml"
+
+## Desktop file
+sed \
+ -e "s#@@MENUNAME@@#${MENUNAME}#g" \
+ -e "s#@@USR_BIN_SYMLINK_NAME@@#${PACKAGE}#g" \
+ -e "s#@@PACKAGE@@#${PACKAGE}#g" \
+ "chrome/installer/linux/common/desktop.template" > "${STAGEDIR}/usr/share/applications/${PACKAGE}.desktop"
+chmod 644 "${STAGEDIR}/usr/share/applications/${PACKAGE}.desktop"
+
+# documentation
+sed \
+ -e "s#@@MENUNAME@@#${MENUNAME}#g" \
+ -e "s#@@PACKAGE@@#${PACKAGE}#g" \
+ "chrome/app/resources/manpage.1.in" > "${STAGEDIR}/usr/share/man/man1/${PACKAGE}.1"
+gzip -9n "${STAGEDIR}/usr/share/man/man1/${PACKAGE}.1"
+chmod 644 "${STAGEDIR}/usr/share/man/man1/${PACKAGE}.1.gz"
diff --git a/README.SUSE b/README.SUSE
new file mode 100644
index 0000000..7fd2b87
--- /dev/null
+++ b/README.SUSE
@@ -0,0 +1,9 @@
+README for SUSE packagers
+=========================
+Patches for chromium can typically be found in the following places:
+
+Stephan Hartmann - https://github.com/stha09/chromium-patches/releases
+Gentoo - https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files
+Fedora - https://src.fedoraproject.org/rpms/chromium/tree/rawhide
+Arch - https://github.com/archlinux/svntogit-packages/tree/packages/chromium/trunk
+Arch: https://gitlab.com/Matt.Jolly/chromium-patches/
diff --git a/_constraints b/_constraints
new file mode 100644
index 0000000..1c5642b
--- /dev/null
+++ b/_constraints
@@ -0,0 +1,24 @@
+
+
+
+
+ 30
+
+
+ 14
+
+
+
+
+ aarch64
+
+
+
+ asimdrdm
+
+
+ 11
+
+
+
+
diff --git a/buildfix.patch b/buildfix.patch
new file mode 100644
index 0000000..5a2b245
--- /dev/null
+++ b/buildfix.patch
@@ -0,0 +1,18 @@
+--- chromium/src/third_party/WebKit/Source/WebCore/platform/ScrollAnimatorNone.cpp
++++ chromium/src/third_party/WebKit/Source/WebCore/platform/ScrollAnimatorNone.cpp
+@@ -96,6 +96,7 @@
+ t -= 2.625 / 2.75;
+ return 7.5625 * t * t + .984375;
+ }
++ return t;
+ }
+
+ double ScrollAnimatorNone::PerAxisData::attackCurve(Curve curve, double deltaTime, double curveT, double startPosition, double attackPosition)
+@@ -124,6 +125,7 @@
+ case Bounce:
+ return t;
+ }
++ return t;
+ }
+
+ ScrollAnimatorNone::PerAxisData::PerAxisData(ScrollAnimatorNone* parent, float* currentPosition)
diff --git a/chrome-wrapper b/chrome-wrapper
new file mode 100644
index 0000000..fe7a2e2
--- /dev/null
+++ b/chrome-wrapper
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+# Copyright (c) 2010 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Running Chromium via this script makes it possible to set Chromium as the
+# default browser directly out of a compile, without needing to package it.
+
+DESKTOP="chromium-devel"
+TITLE="Chromium"
+
+# Checks a file to see if it's a 32 or 64-bit.
+check_executable() {
+ out=$(file $(readlink -f $1) 2> /dev/null)
+ echo $out | grep -qs "ELF 32-bit LSB"
+ if [ $? = 0 ]; then
+ echo 32
+ return
+ fi
+ echo $out | grep -qs "ELF 64-bit LSB"
+ if [ $? = 0 ]; then
+ echo 64
+ return
+ fi
+ echo neither
+}
+
+# Let the wrapped binary know that it has been run through the wrapper.
+export CHROME_WRAPPER="`readlink -f "$0"`"
+
+HERE="`dirname "$CHROME_WRAPPER"`"
+
+# We include some xdg utilities next to the binary, and we want to prefer them
+# over the system versions because we know they work correctly for us. But if
+# our path already exists, we leave it where it is, to allow overriding this.
+# (Once distributions have picked up the updated xdg-mime, we can go back to
+# appending $HERE rather than prepending.)
+case ":$PATH:" in
+ *:$HERE:*)
+ # $PATH already contains $HERE, leave it where it is.
+ ;;
+ *)
+ # Prepend $HERE to $PATH.
+ export PATH="$HERE:$PATH"
+ ;;
+esac
+
+export LD_LIBRARY_PATH="$HERE:$HERE/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
+
+exec "$HERE/chrome" "$@"
diff --git a/chromium-102-regex_pattern-array.patch b/chromium-102-regex_pattern-array.patch
new file mode 100644
index 0000000..e2b5e83
--- /dev/null
+++ b/chromium-102-regex_pattern-array.patch
@@ -0,0 +1,16 @@
+Index: chromium-123.0.6312.46/components/autofill/core/browser/BUILD.gn
+===================================================================
+--- chromium-123.0.6312.46.orig/components/autofill/core/browser/BUILD.gn
++++ chromium-123.0.6312.46/components/autofill/core/browser/BUILD.gn
+@@ -64,6 +64,11 @@
+ }
+
+ static_library("browser") {
++ if (is_clang) {
++ cflags = [
++ "-fbracket-depth=1000",
++ ]
++ }
+ sources = [
+ "autofill_browser_util.cc",
+ "autofill_browser_util.h",
diff --git a/chromium-106-ffmpeg-duration.patch b/chromium-106-ffmpeg-duration.patch
new file mode 100644
index 0000000..8bdb934
--- /dev/null
+++ b/chromium-106-ffmpeg-duration.patch
@@ -0,0 +1,17 @@
+Index: chromium-106.0.5249.91/media/filters/audio_file_reader.cc
+===================================================================
+--- chromium-106.0.5249.91.orig/media/filters/audio_file_reader.cc
++++ chromium-106.0.5249.91/media/filters/audio_file_reader.cc
+@@ -243,10 +243,10 @@ bool AudioFileReader::OnNewFrame(
+ // silence from being output. In the case where we are also discarding some
+ // portion of the packet (as indicated by a negative pts), we further want to
+ // adjust the duration downward by however much exists before zero.
+- if (audio_codec_ == AudioCodec::kAAC && frame->duration) {
++ if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) {
+ const base::TimeDelta pkt_duration = ConvertFromTimeBase(
+ glue_->format_context()->streams[stream_index_]->time_base,
+- frame->duration + std::min(static_cast(0), frame->pts));
++ frame->pkt_duration + std::min(static_cast(0), frame->pts));
+ const base::TimeDelta frame_duration =
+ base::Seconds(frames_read / static_cast(sample_rate_));
+
diff --git a/chromium-117-string-convert.patch b/chromium-117-string-convert.patch
new file mode 100644
index 0000000..ccf82b9
--- /dev/null
+++ b/chromium-117-string-convert.patch
@@ -0,0 +1,21 @@
+diff -up chromium-117.0.5938.62/net/dns/host_resolver_cache.cc.me chromium-117.0.5938.62/net/dns/host_resolver_cache.cc
+diff -up chromium-117.0.5938.62/net/dns/host_resolver_cache.h.me chromium-117.0.5938.62/net/dns/host_resolver_cache.h
+--- chromium-117.0.5938.62/net/dns/host_resolver_cache.h.me 2023-09-14 15:21:24.632965004 +0200
++++ chromium-117.0.5938.62/net/dns/host_resolver_cache.h 2023-09-15 09:15:48.511300845 +0200
+@@ -143,12 +143,14 @@ class NET_EXPORT HostResolverCache final
+ }
+
+ bool operator()(const Key& lhs, const KeyRef& rhs) const {
++ const std::string rhs_domain_name{rhs.domain_name};
+ return std::tie(lhs.domain_name, lhs.network_anonymization_key) <
+- std::tie(rhs.domain_name, *rhs.network_anonymization_key);
++ std::tie(rhs_domain_name, *rhs.network_anonymization_key);
+ }
+
+ bool operator()(const KeyRef& lhs, const Key& rhs) const {
+- return std::tie(lhs.domain_name, *lhs.network_anonymization_key) <
++ const std::string lhs_domain_name{lhs.domain_name};
++ return std::tie(lhs_domain_name, *lhs.network_anonymization_key) <
+ std::tie(rhs.domain_name, rhs.network_anonymization_key);
+ }
+ };
diff --git a/chromium-121-rust-clang_lib.patch b/chromium-121-rust-clang_lib.patch
new file mode 100644
index 0000000..e919275
--- /dev/null
+++ b/chromium-121-rust-clang_lib.patch
@@ -0,0 +1,41 @@
+diff -up chromium-121.0.6167.57/build/config/clang/BUILD.gn.rust-clang_lib chromium-121.0.6167.57/build/config/clang/BUILD.gn
+--- chromium-121.0.6167.57/build/config/clang/BUILD.gn.rust-clang_lib 2024-01-10 16:43:01.000000000 +0100
++++ chromium-121.0.6167.57/build/config/clang/BUILD.gn 2024-01-20 19:51:38.481992799 +0100
+@@ -112,6 +112,7 @@ template("clang_lib") {
+ _prefix = "lib"
+ _suffix = ""
+ _ext = "a"
++ _libprefix = ""
+ if (is_win) {
+ _dir = "windows"
+ _prefix = ""
+@@ -127,7 +128,19 @@ template("clang_lib") {
+ }
+ } else if (is_apple) {
+ _dir = "darwin"
+- } else if (is_linux || is_chromeos) {
++ } else if (is_linux) {
++ _libprefix = "64"
++ _dir = "linux"
++ if (current_cpu == "x64") {
++ _suffix ="-x86_64"
++ } else if (current_cpu == "arm64") {
++ _suffix = "-aarch64"
++ } else if (current_cpu == "riscv64") {
++ _suffix = "-riscv64"
++ } else {
++ assert(false) # Unhandled cpu type
++ }
++ } else if (is_chromeos) {
+ if (current_cpu == "x64") {
+ _dir = "x86_64-unknown-linux-gnu"
+ } else if (current_cpu == "x86") {
+@@ -166,7 +193,7 @@ template("clang_lib") {
+ assert(false) # Unhandled target platform
+ }
+
+- _clang_lib_dir = "$clang_base_path/lib/clang/$clang_version/lib"
++ _clang_lib_dir = "$clang_base_path/lib${_libprefix}/clang/$clang_version/lib"
+ _lib_file = "${_prefix}clang_rt.${_libname}${_suffix}.${_ext}"
+ libs = [ "$_clang_lib_dir/$_dir/$_lib_file" ]
+ }
diff --git a/chromium-123-missing-QtGui.patch b/chromium-123-missing-QtGui.patch
new file mode 100644
index 0000000..46917c5
--- /dev/null
+++ b/chromium-123-missing-QtGui.patch
@@ -0,0 +1,12 @@
+diff --git a/ui/qt/BUILD.gn b/ui/qt/BUILD.gn.new
+index 2da7845..02ae3c8 100644
+--- a/ui/qt/BUILD.gn
++++ b/ui/qt/BUILD.gn
+@@ -61,6 +61,7 @@ template("qt_shim") {
+ packages = [
+ "Qt" + invoker.qt_version + "Core",
+ "Qt" + invoker.qt_version + "Widgets",
++ "Qt" + invoker.qt_version + "Gui",
+ ]
+ }
+
diff --git a/chromium-124-system-libxml.patch b/chromium-124-system-libxml.patch
new file mode 100644
index 0000000..eff9de1
--- /dev/null
+++ b/chromium-124-system-libxml.patch
@@ -0,0 +1,24 @@
+diff -up chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h.me chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h
+--- chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h.me 2024-02-06 08:22:36.013021582 +0100
++++ chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h 2024-02-06 08:23:08.281607499 +0100
+@@ -77,7 +77,7 @@ class XSLTProcessor final : public Scrip
+
+ void reset();
+
+- static void ParseErrorFunc(void* user_data, const xmlError*);
++ static void ParseErrorFunc(void* user_data, xmlError*);
+ static void GenericErrorFunc(void* user_data, const char* msg, ...);
+
+ // Only for libXSLT callbacks
+diff -up chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc.me chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc
+--- chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc.me 2024-02-06 08:14:32.368066214 +0100
++++ chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc 2024-02-06 08:23:08.282607518 +0100
+@@ -66,7 +66,7 @@ void XSLTProcessor::GenericErrorFunc(voi
+ // It would be nice to do something with this error message.
+ }
+
+-void XSLTProcessor::ParseErrorFunc(void* user_data, const xmlError* error) {
++void XSLTProcessor::ParseErrorFunc(void* user_data, xmlError* error) {
+ FrameConsole* console = static_cast(user_data);
+ if (!console)
+ return;
diff --git a/chromium-125-compiler.patch b/chromium-125-compiler.patch
new file mode 100644
index 0000000..36a36a1
--- /dev/null
+++ b/chromium-125-compiler.patch
@@ -0,0 +1,285 @@
+From 307a0f63dd9b118f4b8470ed3d7567e81fdb7a6d Mon Sep 17 00:00:00 2001
+From: Mike Gilbert
+Date: Tue, 15 Nov 2022 10:27:58 +0000
+Subject: [PATCH] Disable various compiler configs
+
+---
+ build/config/compiler/BUILD.gn | 134 +++++----------------------------
+ 1 file changed, 17 insertions(+), 117 deletions(-)
+
+Index: chromium-126.0.6478.8/build/config/compiler/BUILD.gn
+===================================================================
+--- chromium-126.0.6478.8.orig/build/config/compiler/BUILD.gn
++++ chromium-126.0.6478.8/build/config/compiler/BUILD.gn
+@@ -305,9 +305,7 @@ config("compiler") {
+
+ configs += [
+ # See the definitions below.
+- ":clang_revision",
+ ":rustc_revision",
+- ":compiler_cpu_abi",
+ ":compiler_codegen",
+ ":compiler_deterministic",
+ ]
+@@ -566,63 +566,6 @@
+ ldflags += [ "-Wl,-z,keep-text-section-prefix" ]
+ }
+
+- if (is_clang && !is_nacl) {
+- cflags += [ "-fcrash-diagnostics-dir=" + clang_diagnostic_dir ]
+- if (save_reproducers_on_lld_crash && use_lld) {
+- ldflags += [
+- "-fcrash-diagnostics=all",
+- "-fcrash-diagnostics-dir=" + clang_diagnostic_dir,
+- ]
+- }
+-
+- # TODO(hans): Remove this once Clang generates better optimized debug info
+- # by default. https://crbug.com/765793
+- cflags += [
+- "-mllvm",
+- "-instcombine-lower-dbg-declare=0",
+- ]
+- if (!is_debug && use_thin_lto && is_a_target_toolchain) {
+- if (is_win) {
+- ldflags += [ "-mllvm:-instcombine-lower-dbg-declare=0" ]
+- } else {
+- ldflags += [ "-Wl,-mllvm,-instcombine-lower-dbg-declare=0" ]
+- }
+- }
+-
+- # TODO(crbug.com/40283598): This causes binary size growth and potentially
+- # other problems.
+- # TODO(crbug.com/40284925): This isn't supported by Cronet's mainline llvm version.
+- if (default_toolchain != "//build/toolchain/cros:target" &&
+- !llvm_android_mainline) {
+- cflags += [
+- "-mllvm",
+- "-split-threshold-for-reg-with-hint=0",
+- ]
+- if (use_thin_lto && is_a_target_toolchain) {
+- if (is_win) {
+- ldflags += [ "-mllvm:-split-threshold-for-reg-with-hint=0" ]
+- } else {
+- ldflags += [ "-Wl,-mllvm,-split-threshold-for-reg-with-hint=0" ]
+- }
+- }
+- }
+-
+- # TODO(crbug.com/40192287): Investigate why/if this should be needed.
+- if (is_win) {
+- cflags += [ "/clang:-ffp-contract=off" ]
+- } else {
+- cflags += [ "-ffp-contract=off" ]
+- }
+-
+- # Enable ELF CREL (see crbug.com/357878242) for all platforms that use ELF
+- # (excluding toolchains that use an older version of LLVM).
+- # TODO(crbug.com/376278218): This causes segfault on Linux ARM builds.
+- if (is_linux && !llvm_android_mainline && current_cpu != "arm" &&
+- default_toolchain != "//build/toolchain/cros:target") {
+- cflags += [ "-Wa,--crel,--allow-experimental-crel" ]
+- }
+- }
+-
+ # C11/C++11 compiler flags setup.
+ # ---------------------------
+ if (is_linux || is_chromeos || is_android || (is_nacl && is_clang) ||
+@@ -1538,52 +1489,6 @@ config("compiler_deterministic") {
+ }
+ }
+
+- # Makes builds independent of absolute file path.
+- if (is_clang && strip_absolute_paths_from_debug_symbols) {
+- # If debug option is given, clang includes $cwd in debug info by default.
+- # For such build, this flag generates reproducible obj files even we use
+- # different build directory like "out/feature_a" and "out/feature_b" if
+- # we build same files with same compile flag.
+- # Other paths are already given in relative, no need to normalize them.
+- if (is_nacl) {
+- # TODO(https://crbug.com/1231236): Use -ffile-compilation-dir= here.
+- cflags += [
+- "-Xclang",
+- "-fdebug-compilation-dir",
+- "-Xclang",
+- ".",
+- ]
+- } else {
+- # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
+- # and -fcoverage-compilation-dir=.
+- cflags += [ "-ffile-compilation-dir=." ]
+-
+- # Convert absolute paths to relative paths. Expands to, for example:
+- # -file-prefix-map /path/to/chromium/src=../..
+- swiftflags += [
+- "-file-prefix-map",
+- rebase_path("//.", "") + "=" + rebase_path("//.", root_build_dir),
+- ]
+- }
+- if (!is_win) {
+- # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
+- asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
+- }
+-
+- if (is_win && use_lld) {
+- if (symbol_level == 2 || (is_clang && using_sanitizer)) {
+- # Absolutize source file paths for PDB. Pass the real build directory
+- # if the pdb contains source-level debug information and if linker
+- # reproducibility is not critical.
+- ldflags += [ "/PDBSourcePath:" + rebase_path(root_build_dir) ]
+- } else {
+- # Use a fake fixed base directory for paths in the pdb to make the pdb
+- # output fully deterministic and independent of the build directory.
+- ldflags += [ "/PDBSourcePath:o:\fake\prefix" ]
+- }
+- }
+- }
+-
+ # Tells the compiler not to use absolute paths when passing the default
+ # paths to the tools it invokes. We don't want this because we don't
+ # really need it and it can mess up the RBE cache entries.
+@@ -1602,28 +1507,6 @@ config("compiler_deterministic") {
+ }
+ }
+
+-config("clang_revision") {
+- if (is_clang && clang_base_path == default_clang_base_path &&
+- current_os != "zos") {
+- update_args = [
+- "--print-revision",
+- "--verify-version=$clang_version",
+- ]
+- if (llvm_force_head_revision) {
+- update_args += [ "--llvm-force-head-revision" ]
+- }
+- clang_revision = exec_script("//tools/clang/scripts/update.py",
+- update_args,
+- "trim string")
+-
+- # This is here so that all files get recompiled after a clang roll and
+- # when turning clang on or off. (defines are passed via the command line,
+- # and build system rebuild things when their commandline changes). Nothing
+- # should ever read this define.
+- defines = [ "CR_CLANG_REVISION=\"$clang_revision\"" ]
+- }
+-}
+-
+ config("rustc_revision") {
+ if (rustc_revision != "") {
+ # Similar to the above config, this is here so that all files get recompiled
+@@ -1983,10 +1871,6 @@ config("chromium_code") {
+ }
+ } else {
+ cflags = [ "-Wall" ]
+- if (is_clang) {
+- # Enable extra warnings for chromium_code when we control the compiler.
+- cflags += [ "-Wextra" ]
+- }
+
+ # In Chromium code, we define __STDC_foo_MACROS in order to get the
+ # C99 macros on Mac and Linux.
+@@ -1995,24 +1879,6 @@ config("chromium_code") {
+ "__STDC_FORMAT_MACROS",
+ ]
+
+- if (!is_debug && !using_sanitizer && current_cpu != "s390x" &&
+- current_cpu != "s390" && current_cpu != "ppc64" &&
+- current_cpu != "mips" && current_cpu != "mips64" &&
+- current_cpu != "riscv64" && current_cpu != "loong64") {
+- # 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"
+-
+- # ChromeOS's toolchain supports a high-quality _FORTIFY_SOURCE=3
+- # implementation with a few custom glibc patches. Use that if it's
+- # available.
+- if (is_chromeos_device && !lacros_use_chromium_toolchain) {
+- fortify_level = "3"
+- }
+- defines += [ "_FORTIFY_SOURCE=" + fortify_level ]
+- }
+-
+ if (is_apple) {
+ cflags_objc = [ "-Wimplicit-retain-self" ]
+ cflags_objcc = [ "-Wimplicit-retain-self" ]
+@@ -2442,7 +2325,8 @@ config("default_stack_frames") {
+ # [0]: https://pinpoint-dot-chromeperf.appspot.com/job/147634a8be0000
+ # [1]: https://pinpoint-dot-chromeperf.appspot.com/job/132bc772be0000
+ # [2]: https://crrev.com/c/5447532
+-config("optimize") {
++config("optimize") { }
++config("xoptimize") {
+ if (is_win) {
+ # clang-cl's /O2 corresponds to clang's -O3, and really want -O2 for
+ # consistency with the other platforms.
+@@ -2450,7 +2317,8 @@ config("optimize") {
+ }
+
+ # Turn off optimizations.
+-config("no_optimize") {
++config("no_optimize") { }
++config("xno_optimize") {
+ if (is_win) {
+ cflags = [
+ "/Od", # Disable optimization.
+@@ -2490,7 +2358,8 @@ config("no_optimize") {
+ # Turns up the optimization level. Used to explicitly enable -O2 instead of
+ # -Os for select targets on platforms that use optimize_for_size. No-op
+ # elsewhere.
+-config("optimize_max") {
++config("optimize_max") { }
++config("xoptimize_max") {
+ if (is_nacl && is_nacl_irt) {
+ # The NaCl IRT is a special case and always wants its own config.
+ # Various components do:
+@@ -2523,7 +2392,8 @@ config("optimize_max") {
+ #
+ # TODO(crbug.com/41259697) - rework how all of these configs are related
+ # so that we don't need this disclaimer.
+-config("optimize_speed") {
++config("optimize_speed") { }
++config("xoptimize_speed") {
+ if (is_nacl && is_nacl_irt) {
+ # The NaCl IRT is a special case and always wants its own config.
+ # Various components do:
+@@ -2552,7 +2422,8 @@ config("optimize_speed") {
+ }
+ }
+
+-config("optimize_fuzzing") {
++config("optimize_fuzzing") { }
++config("xoptimize_fuzzing") {
+ cflags = [ "-O1" ] + common_optimize_on_cflags
+ rustflags = [ "-Copt-level=1" ]
+ ldflags = common_optimize_on_ldflags
+@@ -2685,7 +2556,8 @@ config("win_pdbaltpath") {
+ }
+
+ # Full symbols.
+-config("symbols") {
++config("symbols") { }
++config("xsymbols") {
+ rustflags = []
+ configs = []
+ if (is_win) {
+@@ -2835,7 +2707,8 @@ config("symbols") {
+ # Minimal symbols.
+ # This config guarantees to hold symbol for stack trace which are shown to user
+ # when crash happens in unittests running on buildbot.
+-config("minimal_symbols") {
++config("minimal_symbols") { }
++config("xminimal_symbols") {
+ rustflags = []
+ if (is_win) {
+ # Functions, files, and line tables only.
+@@ -2920,7 +2793,8 @@ config("minimal_symbols") {
+ # This configuration contains function names only. That is, the compiler is
+ # told to not generate debug information and the linker then just puts function
+ # names in the final debug information.
+-config("no_symbols") {
++config("no_symbols") { }
++config("xno_symbols") {
+ if (is_win) {
+ ldflags = [ "/DEBUG" ]
+
diff --git a/chromium-125-ffmpeg-5.x-reordered_opaque.patch b/chromium-125-ffmpeg-5.x-reordered_opaque.patch
new file mode 100644
index 0000000..43f12c2
--- /dev/null
+++ b/chromium-125-ffmpeg-5.x-reordered_opaque.patch
@@ -0,0 +1,105 @@
+commit 62274859104bd828373ae406aa9309e610449ac5
+Author: Ted Meyer
+Date: Fri Mar 22 19:56:55 2024 +0000
+
+ Replace deprecated use of AVCodecContext::reordered_opaque
+
+ We can use the AV_CODEC_FLAG_COPY_OPAQUE flag on the codec context
+ now to trigger timestamp propagation.
+
+ Bug: 330573128
+ Change-Id: I6bc57241a35ab5283742aad8d42acb4dc5e85858
+ Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5384308
+ Commit-Queue: Ted (Chromium) Meyer
+ Reviewed-by: Dan Sanders
+ Cr-Commit-Position: refs/heads/main@{#1277051}
+
+diff --git a/media/filters/ffmpeg_video_decoder.cc b/media/filters/ffmpeg_video_decoder.cc
+index bd75477feeabb..8a658a58caac5 100644
+--- a/media/filters/ffmpeg_video_decoder.cc
++++ b/media/filters/ffmpeg_video_decoder.cc
+@@ -134,7 +134,7 @@ bool FFmpegVideoDecoder::IsCodecSupported(VideoCodec codec) {
+ }
+
+ FFmpegVideoDecoder::FFmpegVideoDecoder(MediaLog* media_log)
+- : media_log_(media_log) {
++ : media_log_(media_log), timestamp_map_(128) {
+ DVLOG(1) << __func__;
+ DETACH_FROM_SEQUENCE(sequence_checker_);
+ }
+@@ -363,8 +363,10 @@ bool FFmpegVideoDecoder::FFmpegDecode(const DecoderBuffer& buffer) {
+ DCHECK(packet->data);
+ DCHECK_GT(packet->size, 0);
+
+- // Let FFmpeg handle presentation timestamp reordering.
+- codec_context_->reordered_opaque = buffer.timestamp().InMicroseconds();
++ const int64_t timestamp = buffer.timestamp().InMicroseconds();
++ const TimestampId timestamp_id = timestamp_id_generator_.GenerateNextId();
++ timestamp_map_.Put(std::make_pair(timestamp_id, timestamp));
++ packet->opaque = reinterpret_cast(timestamp_id.GetUnsafeValue());
+ }
+ FFmpegDecodingLoop::DecodeStatus decode_status = decoding_loop_->DecodePacket(
+ packet, base::BindRepeating(&FFmpegVideoDecoder::OnNewFrame,
+@@ -423,7 +425,12 @@ bool FFmpegVideoDecoder::OnNewFrame(AVFrame* frame) {
+ }
+ gfx::Size natural_size = aspect_ratio.GetNaturalSize(visible_rect);
+
+- const auto pts = base::Microseconds(frame->reordered_opaque);
++ const auto ts_id = TimestampId(reinterpret_cast(frame->opaque));
++ const auto ts_lookup = timestamp_map_.Get(ts_id);
++ if (ts_lookup == timestamp_map_.end()) {
++ return false;
++ }
++ const auto pts = base::Microseconds(std::get<1>(*ts_lookup));
+ auto video_frame = VideoFrame::WrapExternalDataWithLayout(
+ opaque->layout, visible_rect, natural_size, opaque->data, opaque->size,
+ pts);
+@@ -482,8 +482,10 @@ bool FFmpegVideoDecoder::ConfigureDecoder(const VideoDecoderConfig& config,
+ codec_context_->thread_count = GetFFmpegVideoDecoderThreadCount(config);
+ codec_context_->thread_type =
+ FF_THREAD_SLICE | (low_delay ? 0 : FF_THREAD_FRAME);
++
+ codec_context_->opaque = this;
+ codec_context_->get_buffer2 = GetVideoBufferImpl;
++ codec_context_->flags |= AV_CODEC_FLAG_COPY_OPAQUE;
+
+ if (decode_nalus_) {
+ codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS;
+diff --git a/media/filters/ffmpeg_video_decoder.h b/media/filters/ffmpeg_video_decoder.h
+index d02cb89c3ddf7..0a2de1c623fff 100644
+--- a/media/filters/ffmpeg_video_decoder.h
++++ b/media/filters/ffmpeg_video_decoder.h
+@@ -7,10 +7,12 @@
+
+ #include
+
++#include "base/containers/lru_cache.h"
+ #include "base/functional/callback.h"
+ #include "base/memory/raw_ptr.h"
+ #include "base/memory/scoped_refptr.h"
+ #include "base/sequence_checker.h"
++#include "base/types/id_type.h"
+ #include "media/base/frame_buffer_pool.h"
+ #include "media/base/supported_video_decoder_config.h"
+ #include "media/base/video_decoder.h"
+@@ -87,6 +89,20 @@ class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder {
+ // FFmpeg structures owned by this object.
+ std::unique_ptr codec_context_;
+
++ // The gist here is that timestamps need to be 64 bits to store microsecond
++ // precision. A 32 bit integer would overflow at ~35 minutes at this level of
++ // precision. We can't cast the timestamp to the void ptr object used by the
++ // opaque field in ffmpeg then, because it would lose data on a 32 bit build.
++ // However, we don't actually have 2^31 timestamped frames in a single
++ // playback, so it's fine to use the 32 bit value as a key in a map which
++ // contains the actual timestamps. Additionally, we've in the past set 128
++ // outstanding frames for re-ordering as a limit for cross-thread decoding
++ // tasks, so we'll do that here too with the LRU cache.
++ using TimestampId = base::IdType;
++
++ TimestampId::Generator timestamp_id_generator_;
++ base::LRUCache timestamp_map_;
++
+ VideoDecoderConfig config_;
+
+ scoped_refptr frame_pool_;
diff --git a/chromium-126-quiche-interator.patch b/chromium-126-quiche-interator.patch
new file mode 100644
index 0000000..60a9e98
--- /dev/null
+++ b/chromium-126-quiche-interator.patch
@@ -0,0 +1,12 @@
+diff -up chromium-126.0.6478.26/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h.me chromium-126.0.6478.26/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h
+--- chromium-126.0.6478.26/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h.me 2024-06-03 15:01:54.724207324 +0200
++++ chromium-126.0.6478.26/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h 2024-06-03 14:58:16.244189794 +0200
+@@ -144,7 +144,7 @@ class QUICHE_NO_EXPORT QuicIntervalDeque
+ // for efficient std::lower_bound() calls.
+ class QUICHE_NO_EXPORT Iterator {
+ public:
+- using iterator_category = std::random_access_iterator_tag;
++ using iterator_category = std::forward_iterator_tag;
+ using value_type = T;
+ using difference_type = std::ptrdiff_t;
+ using pointer = T*;
diff --git a/chromium-127-bindgen.patch b/chromium-127-bindgen.patch
new file mode 100644
index 0000000..884e367
--- /dev/null
+++ b/chromium-127-bindgen.patch
@@ -0,0 +1,21 @@
+author: Andres Salomon
+description: fix bindgen-related stuff
+
+Also, the call to bindgen sets the path for libclang to
+rust_bindgen_root, which is wrong. We're already passing
+clang_base_path with the path to libclang, there's no reason that
+we'd expect libclang to be in the same directory as bindgen. That
+fix should probably go upstream.
+
+
+--- a/build/rust/rust_bindgen.gni
++++ b/build/rust/rust_bindgen.gni
+@@ -18,7 +18,7 @@ if (host_os == "win") {
+
+ # On Windows, the libclang.dll is beside the bindgen.exe, otherwise it is in
+ # ../lib.
+-_libclang_path = rust_bindgen_root
++_libclang_path = clang_base_path
+ if (host_os == "win") {
+ _libclang_path += "/bin"
+ } else {
diff --git a/chromium-127-constexpr.patch b/chromium-127-constexpr.patch
new file mode 100644
index 0000000..8f2eae9
--- /dev/null
+++ b/chromium-127-constexpr.patch
@@ -0,0 +1,108 @@
+author: Andres Salomon
+
+../../services/network/shared_dictionary/simple_url_pattern_matcher.cc:31:34: error: constexpr variable 'kDefaultOptions' must be initialized by a constant expression
+ 31 | constexpr liburlpattern::Options kDefaultOptions = {.delimiter_list = "",
+ | ^ ~~~~~~~~~~~~~~~~~~~~~~
+ 32 | .prefix_list = "",
+ | ~~~~~~~~~~~~~~~~~~
+ 33 | .sensitive = true,
+ | ~~~~~~~~~~~~~~~~~~
+ 34 | .strict = true};
+ | ~~~~~~~~~~~~~~~
+
+--- a/services/network/shared_dictionary/simple_url_pattern_matcher.cc
++++ b/services/network/shared_dictionary/simple_url_pattern_matcher.cc
+@@ -28,17 +28,17 @@ namespace network {
+ namespace {
+
+ // https://urlpattern.spec.whatwg.org/#default-options
+-constexpr liburlpattern::Options kDefaultOptions = {.delimiter_list = "",
++const liburlpattern::Options kDefaultOptions = {.delimiter_list = "",
+ .prefix_list = "",
+ .sensitive = true,
+ .strict = true};
+ // https://urlpattern.spec.whatwg.org/#hostname-options
+-constexpr liburlpattern::Options kHostnameOptions = {.delimiter_list = ".",
++const liburlpattern::Options kHostnameOptions = {.delimiter_list = ".",
+ .prefix_list = "",
+ .sensitive = true,
+ .strict = true};
+ // https://urlpattern.spec.whatwg.org/#pathname-options
+-constexpr liburlpattern::Options kPathnameOptions = {.delimiter_list = "/",
++const liburlpattern::Options kPathnameOptions = {.delimiter_list = "/",
+ .prefix_list = "/",
+ .sensitive = true,
+ .strict = true};
+--- a/components/autofill/core/browser/data_model/addresses/autofill_i18n_api.h
++++ b/components/autofill/core/browser/data_model/addresses/autofill_i18n_api.h
+@@ -16,8 +16,8 @@ namespace autofill::i18n_model_definitio
+ // Country code that represents autofill's legacy address hierarchy model as
+ // stored `kAutofillModelRules`. As a workaround for GCC we declare the
+ // std::string constexpr first.
+-constexpr inline std::string kLegacyHierarchyCountryCodeString{"XX"};
+-constexpr AddressCountryCode kLegacyHierarchyCountryCode =
++[[clang::no_destroy]] const inline std::string kLegacyHierarchyCountryCodeString{"XX"};
++[[clang::no_destroy]] const AddressCountryCode kLegacyHierarchyCountryCode =
+ AddressCountryCode(kLegacyHierarchyCountryCodeString);
+
+ // Creates an instance of the address hierarchy model corresponding to the
+--- a/components/omnibox/browser/on_device_tail_model_service.cc
++++ b/components/omnibox/browser/on_device_tail_model_service.cc
+@@ -26,7 +26,7 @@
+
+ namespace {
+ // Constants for TFlite model validation.
+-constexpr std::string kTestPrefix = "google m";
++const std::string kTestPrefix = "google m";
+ constexpr std::string_view kModelValidationSwitchName =
+ "omnibox-on-device-tail-model-validation";
+
+--- a/chrome/browser/ui/lens/lens_overlay_url_builder.cc
++++ b/chrome/browser/ui/lens/lens_overlay_url_builder.cc
+@@ -80,7 +80,7 @@
+ inline constexpr char kSecActQueryParamKey[] = "sec_act";
+
+ // The list of query parameters to ignore when comparing search URLs.
+-inline constexpr std::string kIgnoredSearchUrlQueryParameters[] = {
++inline const std::string kIgnoredSearchUrlQueryParameters[] = {
+ kViewportWidthQueryParamKey, kViewportHeightQueryParamKey,
+ kXSRFTokenQueryParamKey, kSecActQueryParamKey,
+ kModeParameterKey, kToolbeltModeParameterKey};
+--- a/content/public/test/prefetch_test_util.h
++++ b/content/public/test/prefetch_test_util.h
+@@ -15,7 +15,7 @@ namespace content::test {
+
+ using PrefetchContainerIdForTesting =
+ base::StrongAlias;
+-inline constexpr PrefetchContainerIdForTesting
++inline const PrefetchContainerIdForTesting
+ InvalidPrefetchContainerIdForTesting = PrefetchContainerIdForTesting("");
+
+ class TestPrefetchWatcherImpl;
+--- a/components/history_embeddings/ml_answerer.cc
++++ b/components/history_embeddings/ml_answerer.cc
+@@ -24,7 +24,7 @@ using optimization_guide::proto::Passage
+
+ namespace {
+
+-static constexpr std::string kPassageIdToken = "ID";
++static const std::string kPassageIdToken = "ID";
+ // Estimated token count of the preamble text in prompt.
+ static constexpr size_t kPreambleTokenBufferSize = 100u;
+ // Estimated token count of overhead text per passage.
+--- a/components/compose/core/browser/config.cc
++++ b/components/compose/core/browser/config.cc
+@@ -46,11 +46,11 @@
+ }
+
+ constexpr auto DEFAULT_COMPOSE_ENABLED_COUNTRIES =
+- base::MakeFixedFlatSet({"bd", "ca", "gh", "in", "ke", "my",
++ base::MakeFixedFlatSet({"bd", "ca", "gh", "in", "ke", "my",
+ "ng", "ph", "pk", "sg", "tz", "ug",
+ "us", "zm", "zw"});
+ constexpr auto DEFAULT_PROACTIVE_NUDGE_ENABLED_COUNTRIES =
+- base::MakeFixedFlatSet({"us"});
++ base::MakeFixedFlatSet({"us"});
+
+ } // namespace
+
diff --git a/chromium-127-rust-clanglib.patch b/chromium-127-rust-clanglib.patch
new file mode 100644
index 0000000..6e9143f
--- /dev/null
+++ b/chromium-127-rust-clanglib.patch
@@ -0,0 +1,57 @@
+diff -up chromium-127.0.6533.72/build/rust/rust_bindgen.gni.me chromium-127.0.6533.72/build/rust/rust_bindgen.gni
+--- chromium-127.0.6533.72/build/rust/rust_bindgen.gni.me 2024-07-25 16:11:18.754551595 +0200
++++ chromium-127.0.6533.72/build/rust/rust_bindgen.gni 2024-07-25 16:11:33.997837660 +0200
+@@ -22,7 +22,7 @@ _libclang_path = rust_bindgen_root
+ if (host_os == "win") {
+ _libclang_path += "/bin"
+ } else {
+- _libclang_path += "/lib"
++ _libclang_path += "/lib64"
+ }
+
+ # Template to build Rust/C bindings with bindgen.
+@@ -105,6 +105,14 @@
+ # it's declared.
+ deps = [ ":${_rust_bindgen_generator_name}_static_fns" ]
+ }
++
++ # Default configs include "-fvisibility=hidden", and for some reason this
++ # causes bindgen not to emit function bindings. Override it.
++ args = []
++ if (!is_win) {
++ args += [ "-fvisibility=default" ]
++ }
++
+ if (defined(cpp) && cpp) {
+ # This cfg is used to control the bindings public export.
+ rustflags = [
+--- chromium-132.0.6811.2/build/rust/rust_bindgen_generator.gni 2024/11/07 11:34:54 1.1
++++ chromium-132.0.6811.2/build/rust/rust_bindgen_generator.gni 2024/11/07 11:35:41
+@@ -22,7 +22,7 @@
+ if (host_os == "win") {
+ _libclang_path += "/bin"
+ } else {
+- _libclang_path += "/lib"
++ _libclang_path += "/lib64"
+ }
+
+ # Template to build Rust/C bindings with bindgen.
+@@ -266,6 +266,8 @@
+ # causes bindgen not to emit function bindings. Override it.
+ if (!is_win) {
+ args += [ "-fvisibility=default" ]
++ args += [ "-I/usr/include/c++/v1" ]
++ args += [ "-I/usr/lib64/clang/" + clang_version + "/include" ]
+ }
+
+ if (is_win) {
+--- chromium-132.0.6811.2/build/config/gcc/BUILD.gn 2024/11/07 14:13:22 1.1
++++ chromium-132.0.6811.2/build/config/gcc/BUILD.gn 2024/11/07 14:13:45
+@@ -32,7 +32,6 @@
+ # See http://gcc.gnu.org/wiki/Visibility
+ config("symbol_visibility_hidden") {
+ cflags = [ "-fvisibility=hidden" ]
+- rustflags = [ "-Zdefault-visibility=hidden" ]
+
+ # Visibility attribute is not supported on AIX.
+ if (current_os != "aix") {
diff --git a/chromium-129-revert-AVFMT_FLAG_NOH264PARSE.patch b/chromium-129-revert-AVFMT_FLAG_NOH264PARSE.patch
new file mode 100644
index 0000000..0e418c9
--- /dev/null
+++ b/chromium-129-revert-AVFMT_FLAG_NOH264PARSE.patch
@@ -0,0 +1,12 @@
+--- chromium-133.0.6943.16/media/filters/ffmpeg_glue.cc 2025/01/20 15:06:56 1.1
++++ chromium-133.0.6943.16/media/filters/ffmpeg_glue.cc 2025/01/20 15:07:32
+@@ -111,7 +111,8 @@
+
+ // We don't allow H.264 parsing during demuxing since we have our own parser
+ // and the ffmpeg one increases memory usage unnecessarily.
+- format_context_->flags |= AVFMT_FLAG_NOH264PARSE;
++ // TODO(crbug.com/355485812): Re-enable this flag.
++ // format_context_->flags |= AVFMT_FLAG_NOH264PARSE;
+
+ // Ensures format parsing errors will bail out. From an audit on 11/2017, all
+ // instances were real failures. Solves bugs like http://crbug.com/710791.
diff --git a/chromium-131-clang-stack-protector.patch b/chromium-131-clang-stack-protector.patch
new file mode 100644
index 0000000..31fc199
--- /dev/null
+++ b/chromium-131-clang-stack-protector.patch
@@ -0,0 +1,19 @@
+--- chromium-131.0.6778.69/base/compiler_specific.h 2024/11/18 15:29:10 1.1
++++ chromium-131.0.6778.69/base/compiler_specific.h 2024/11/18 16:16:01
+@@ -424,10 +424,12 @@
+ // // Stack canary checks will not be performed in this body.
+ // }
+ // ```
+-#if __has_cpp_attribute(gnu::no_stack_protector)
+-#define NO_STACK_PROTECTOR [[gnu::no_stack_protector]]
+-#elif __has_cpp_attribute(gnu::optimize)
+-#define NO_STACK_PROTECTOR [[gnu::optimize("-fno-stack-protector")]]
++#if defined(COMPILER_GCC) || defined(__clang__)
++#if HAS_ATTRIBUTE(__no_stack_protector__)
++#define NO_STACK_PROTECTOR __attribute__((__no_stack_protector__))
++#else
++#define NO_STACK_PROTECTOR __attribute__((__optimize__("-fno-stack-protector")))
++#endif
+ #else
+ #define NO_STACK_PROTECTOR
+ #endif
diff --git a/chromium-131-fix-qt-ui.pach b/chromium-131-fix-qt-ui.pach
new file mode 100644
index 0000000..6be3739
--- /dev/null
+++ b/chromium-131-fix-qt-ui.pach
@@ -0,0 +1,18 @@
+From b9075d0e1f687f9a5cf80a7778bde99cece9fdf7 Mon Sep 17 00:00:00 2001
+From: Than Ngo
+Date: Sat, 23 Nov 2024 12:33:22 +0100
+Subject: [PATCH] Enable qt-ui
+
+
+diff -up chromium-131.0.6778.85/ui/qt/qt_shim.cc.me chromium-131.0.6778.85/ui/qt/qt_shim.cc
+--- chromium-131.0.6778.85/ui/qt/qt_shim.cc.me 2024-11-23 10:04:16.789121846 +0100
++++ chromium-131.0.6778.85/ui/qt/qt_shim.cc 2024-11-23 11:40:02.905064702 +0100
+@@ -265,7 +265,7 @@ FontRenderParams QtShim::GetFontRenderPa
+ FontDescription QtShim::GetFontDescription() const {
+ QFont font = app_.font();
+ return {
+- .family = String(font.family().toStdString().c_str()),
++ .family = String(font.family().toUtf8().constData()),
+ .size_pixels = font.pixelSize(),
+ .size_points = font.pointSize(),
+ .is_italic = IsStyleItalic(font.style()),
diff --git a/chromium-132-pdfium-explicit-template.patch b/chromium-132-pdfium-explicit-template.patch
new file mode 100644
index 0000000..81dd0ed
--- /dev/null
+++ b/chromium-132-pdfium-explicit-template.patch
@@ -0,0 +1,11 @@
+--- chromium-132.0.6834.15/pdf/pdfium/pdfium_api_wrappers.cc 2024/12/03 16:47:07 1.1
++++ chromium-132.0.6834.15/pdf/pdfium/pdfium_api_wrappers.cc 2024/12/03 16:48:54
+@@ -147,7 +147,7 @@
+
+ // Number of characters, including the NUL.
+ const size_t expected_size = base::checked_cast(buflen_bytes / 2);
+- PDFiumAPIStringBufferAdapter adapter(&name, expected_size,
++ PDFiumAPIStringBufferAdapter adapter(&name, expected_size,
+ /*check_expected_size=*/true);
+ unsigned long actual_buflen_bytes = 0; // NOLINT(runtime/int)
+ bool result =
diff --git a/chromium-133-bring_back_and_disable_allowlist.patch b/chromium-133-bring_back_and_disable_allowlist.patch
new file mode 100644
index 0000000..0933a07
--- /dev/null
+++ b/chromium-133-bring_back_and_disable_allowlist.patch
@@ -0,0 +1,60 @@
+--- chromium-133.0.6943.98/media/base/media_switches.h 2025/02/18 15:56:48 1.1
++++ chromium-133.0.6943.98/media/base/media_switches.h 2025/02/18 15:57:20
+@@ -516,6 +516,8 @@
+
+ MEDIA_EXPORT BASE_DECLARE_FEATURE(kUseWindowBoundsForPip);
+
++MEDIA_EXPORT BASE_DECLARE_FEATURE(kFFmpegAllowLists);
++
+ MEDIA_EXPORT BASE_DECLARE_FEATURE(kMediaLogToConsole);
+
+ MEDIA_EXPORT BASE_DECLARE_FEATURE(kLibvpxUseChromeThreads);
+--- chromium-133.0.6943.98/media/base/media_switches.cc 2025/02/18 15:56:07 1.1
++++ chromium-133.0.6943.98/media/base/media_switches.cc 2025/02/18 15:56:48
+@@ -1657,6 +1657,11 @@
+ "UseWindowBoundsForPip",
+ base::FEATURE_ENABLED_BY_DEFAULT);
+
++// Enables FFmpeg allow lists for supported codecs / containers.
++BASE_FEATURE(kFFmpegAllowLists,
++ "FFmpegAllowLists",
++ base::FEATURE_DISABLED_BY_DEFAULT);
++
+ #if BUILDFLAG(IS_WIN)
+ // Enables audio offload when supported by endpoints.
+ BASE_FEATURE(kAudioOffload, "AudioOffload", base::FEATURE_DISABLED_BY_DEFAULT);
+--- chromium-133.0.6943.98/media/ffmpeg/ffmpeg_common.cc 2025/02/18 16:03:18 1.1
++++ chromium-133.0.6943.98/media/ffmpeg/ffmpeg_common.cc 2025/02/18 16:04:02
+@@ -19,6 +19,7 @@
+ #include "media/base/audio_decoder_config.h"
+ #include "media/base/decoder_buffer.h"
+ #include "media/base/encryption_scheme.h"
++#include "media/base/media_switches.h"
+ #include "media/base/media_util.h"
+ #include "media/base/supported_types.h"
+ #include "media/base/video_aspect_ratio.h"
+@@ -76,7 +76,8 @@
+ void ApplyCodecContextSecuritySettings(AVCodecContext* codec_context) {
+ // Future versions of ffmpeg may copy the allow list from the format
+ // context.
+- if (!codec_context->codec_whitelist) {
++ if (base::FeatureList::IsEnabled(kFFmpegAllowLists) &&
++ !codec_context->codec_whitelist) {
+ // Note: FFmpeg will try to free this string, so we must duplicate it.
+ codec_context->codec_whitelist =
+ av_strdup(codec_context->codec_type == AVMEDIA_TYPE_AUDIO
+--- chromium-133.0.6943.98/media/filters/ffmpeg_glue.cc 2025/02/18 16:06:06 1.1
++++ chromium-133.0.6943.98/media/filters/ffmpeg_glue.cc 2025/02/18 16:07:06
+@@ -131,8 +131,10 @@
+ // memory usage.
+ //
+ // Note: FFmpeg will try to free these strings, so we must duplicate them.
+- format_context_->codec_whitelist = av_strdup(GetAllowedAudioDecoders());
+- format_context_->format_whitelist = av_strdup(GetAllowedDemuxers());
++ if (base::FeatureList::IsEnabled(kFFmpegAllowLists)) {
++ format_context_->codec_whitelist = av_strdup(GetAllowedAudioDecoders());
++ format_context_->format_whitelist = av_strdup(GetAllowedDemuxers());
++ }
+ }
+
+ bool FFmpegGlue::OpenContext(bool is_local_file) {
diff --git a/chromium-134-revert-rust-adler2.patch b/chromium-134-revert-rust-adler2.patch
new file mode 100644
index 0000000..7650bb5
--- /dev/null
+++ b/chromium-134-revert-rust-adler2.patch
@@ -0,0 +1,57 @@
+diff --git a/build/rust/std/BUILD.gn b/build/rust/std/BUILD.gn
+index 68b085be200fa..6b996aa1fe386 100644
+--- a/build/rust/std/BUILD.gn
++++ b/build/rust/std/BUILD.gn
+@@ -89,7 +89,7 @@ if (toolchain_has_rust) {
+ # These are no longer present in the Windows toolchain.
+ stdlib_files += [
+ "addr2line",
+- "adler",
++ "adler2",
+ "gimli",
+ "libc",
+ "memchr",
+diff --git a/build/rust/std/rules/BUILD.gn b/build/rust/std/rules/BUILD.gn
+index 6b59b0894d365..e44d638832b6f 100644
+--- a/build/rust/std/rules/BUILD.gn
++++ b/build/rust/std/rules/BUILD.gn
+@@ -65,22 +70,22 @@ cargo_crate("addr2line") {
+ output_dir =
+ "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/"
+ }
+-cargo_crate("adler") {
++cargo_crate("adler2") {
+ crate_type = "rlib"
+- crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler-1.0.2/src/lib.rs"
++ crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler2-2.0.0/src/lib.rs"
+ sources = [
+- "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler-1.0.2/src/algo.rs",
+- "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler-1.0.2/src/lib.rs",
++ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler2-2.0.0/src/algo.rs",
++ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler2-2.0.0/src/lib.rs",
+ ]
+ inputs = []
+ no_std = true
+
+ # Unit tests skipped. Generate with --with-tests to include them.
+ build_native_rust_unit_tests = false
+- edition = "2015"
+- cargo_pkg_version = "1.0.2"
+- cargo_pkg_authors = "Jonas Schievink "
+- cargo_pkg_name = "adler"
++ edition = "2021"
++ cargo_pkg_version = "2.0.0"
++ cargo_pkg_authors = "Jonas Schievink , oyvindln "
++ cargo_pkg_name = "adler2"
+ cargo_pkg_description =
+ "A simple clean-room implementation of the Adler-32 checksum"
+ library_configs -= [
+@@ -1618,7 +1624,7 @@ cargo_crate("miniz_oxide") {
+ ]
+ executable_configs += [ "//build/config/compiler:no_chromium_code" ]
+ deps = [
+- ":adler",
++ ":adler2",
+ ":compiler_builtins",
+ ":rustc_std_workspace_alloc",
+ ":rustc_std_workspace_core",
diff --git a/chromium-134-type-mismatch-error.patch b/chromium-134-type-mismatch-error.patch
new file mode 100644
index 0000000..aabf83f
--- /dev/null
+++ b/chromium-134-type-mismatch-error.patch
@@ -0,0 +1,13 @@
+diff -up chromium-134.0.6998.23/base/containers/to_value_list.h.me chromium-134.0.6998.23/base/containers/to_value_list.h
+--- chromium-134.0.6998.23/base/containers/to_value_list.h.me 2025-02-23 22:39:33.369668072 +0100
++++ chromium-134.0.6998.23/base/containers/to_value_list.h 2025-02-23 22:42:42.653990901 +0100
+@@ -36,8 +36,7 @@ Value::List ToValueList(Range&& range, P
+ auto container = Value::List::with_capacity(std::ranges::size(range));
+ std::ranges::for_each(
+ std::forward(range),
+- [&](T&& value) { container.Append(std::forward(value)); },
+- std::move(proj));
++ [&](auto&& value) { container.Append(std::invoke(proj, std::forward(value))); });
+ return container;
+ }
+
diff --git a/chromium-135.0.7049.52.tar.xz b/chromium-135.0.7049.52.tar.xz
new file mode 100644
index 0000000..47c4691
--- /dev/null
+++ b/chromium-135.0.7049.52.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:620ed41ac1c1bd465c775376deaafd43fd0f6cdd2be1971ed87511683728f5a7
+size 7017155948
diff --git a/chromium-6.0.406.0-system-gyp-v8.patch b/chromium-6.0.406.0-system-gyp-v8.patch
new file mode 100644
index 0000000..b75304a
--- /dev/null
+++ b/chromium-6.0.406.0-system-gyp-v8.patch
@@ -0,0 +1,249 @@
+--- chromium/src/build/all.gyp 2010-11-25 19:17:16.000000000 +0100
++++ new/src/build/all.gyp 2010-11-25 21:05:09.413000018 +0100
+@@ -59,7 +59,7 @@
+ 'conditions': [
+ ['javascript_engine=="v8"', {
+ 'dependencies': [
+- '../v8/tools/gyp/v8.gyp:*',
++ 'linux/system.gyp:v8',
+ ],
+ }],
+ ['OS=="mac" or OS=="linux"', {
+@@ -149,167 +149,6 @@
+ }],
+ ],
+ }, # target_name: All
+- {
+- 'target_name': 'chromium_builder_tests',
+- 'type': 'none',
+- 'dependencies': [
+- '../base/base.gyp:base_unittests',
+- '../chrome/chrome.gyp:browser_tests',
+- '../chrome/chrome.gyp:interactive_ui_tests',
+- '../chrome/chrome.gyp:nacl_ui_tests',
+- '../chrome/chrome.gyp:nacl_sandbox_tests',
+- '../chrome/chrome.gyp:safe_browsing_tests',
+- '../chrome/chrome.gyp:sync_integration_tests',
+- '../chrome/chrome.gyp:sync_unit_tests',
+- '../chrome/chrome.gyp:ui_tests',
+- '../chrome/chrome.gyp:unit_tests',
+- '../content/content.gyp:content_unittests',
+- '../crypto/crypto.gyp:crypto_unittests',
+- '../ui/ui.gyp:gfx_unittests',
+- '../gpu/gpu.gyp:gpu_unittests',
+- '../gpu/gles2_conform_support/gles2_conform_support.gyp:gles2_conform_support',
+- '../ipc/ipc.gyp:ipc_tests',
+- '../jingle/jingle.gyp:jingle_unittests',
+- '../media/media.gyp:media_unittests',
+- '../net/net.gyp:net_unittests',
+- '../printing/printing.gyp:printing_unittests',
+- '../remoting/remoting.gyp:remoting_unittests',
+- '../sql/sql.gyp:sql_unittests',
+- '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests',
+- '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests',
+- 'temp_gyp/googleurl.gyp:googleurl_unittests',
+- ],
+- 'conditions': [
+- ['OS=="win"', {
+- 'dependencies': [
+- '../chrome/chrome.gyp:installer_util_unittests',
+- '../chrome/chrome.gyp:mini_installer_test',
+- # mini_installer_tests depends on mini_installer. This should be
+- # defined in installer.gyp.
+- '../chrome/installer/mini_installer.gyp:mini_installer',
+- '../chrome_frame/chrome_frame.gyp:chrome_frame_net_tests',
+- '../chrome_frame/chrome_frame.gyp:chrome_frame_perftests',
+- '../chrome_frame/chrome_frame.gyp:chrome_frame_reliability_tests',
+- '../chrome_frame/chrome_frame.gyp:chrome_frame_tests',
+- '../chrome_frame/chrome_frame.gyp:chrome_frame_unittests',
+- '../chrome_frame/chrome_frame.gyp:npchrome_frame',
+- '../courgette/courgette.gyp:courgette_unittests',
+- '../sandbox/sandbox.gyp:sbox_integration_tests',
+- '../sandbox/sandbox.gyp:sbox_unittests',
+- '../sandbox/sandbox.gyp:sbox_validation_tests',
+- '../views/views.gyp:views_unittests',
+- '../third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:copy_TestNetscapePlugIn',
+- # TODO(nsylvain) ui_tests.exe depends on test_shell_common.
+- # This should:
+- # 1) not be the case. OR.
+- # 2) be expressed in the ui tests dependencies.
+- '../webkit/webkit.gyp:test_shell_common',
+- ],
+- }],
+- ],
+- }, # target_name: chromium_builder_tests
+- {
+- 'target_name': 'chromium_2010_builder_tests',
+- 'type': 'none',
+- 'dependencies': [
+- '../chrome/chrome.gyp:chrome',
+- '../base/base.gyp:base_unittests',
+- '../chrome/chrome.gyp:browser_tests',
+- '../chrome/chrome.gyp:interactive_ui_tests',
+- # TODO(bradnelson): fix and enable.
+- #'../chrome/chrome.gyp:nacl_ui_tests',
+- #'../chrome/chrome.gyp:nacl_sandbox_tests',
+- '../chrome/chrome.gyp:safe_browsing_tests',
+- '../chrome/chrome.gyp:sync_integration_tests',
+- '../chrome/chrome.gyp:sync_unit_tests',
+- '../chrome/chrome.gyp:ui_tests',
+- '../chrome/chrome.gyp:unit_tests',
+- '../content/content.gyp:content_unittests',
+- '../crypto/crypto.gyp:crypto_unittests',
+- '../ui/ui.gyp:gfx_unittests',
+- '../gpu/gpu.gyp:gpu_unittests',
+- '../ipc/ipc.gyp:ipc_tests',
+- '../jingle/jingle.gyp:jingle_unittests',
+- '../media/media.gyp:media_unittests',
+- '../net/net.gyp:net_unittests',
+- '../printing/printing.gyp:printing_unittests',
+- '../remoting/remoting.gyp:remoting_unittests',
+- '../sql/sql.gyp:sql_unittests',
+- '../third_party/cacheinvalidation/cacheinvalidation.gyp:cacheinvalidation_unittests',
+- '../third_party/libphonenumber/libphonenumber.gyp:libphonenumber_unittests',
+- 'temp_gyp/googleurl.gyp:googleurl_unittests',
+- ],
+- 'conditions': [
+- ['OS=="win"', {
+- 'dependencies': [
+- '../chrome/chrome.gyp:installer_util_unittests',
+- # TODO(bradnelson): fix and enable.
+- #'../chrome/chrome.gyp:mini_installer_test',
+- # mini_installer_tests depends on mini_installer. This should be
+- # defined in installer.gyp.
+- #'../chrome/installer/mini_installer.gyp:mini_installer',
+- #'../chrome_frame/chrome_frame.gyp:chrome_frame_net_tests',
+- #'../chrome_frame/chrome_frame.gyp:chrome_frame_perftests',
+- #'../chrome_frame/chrome_frame.gyp:chrome_frame_reliability_tests',
+- #'../chrome_frame/chrome_frame.gyp:chrome_frame_tests',
+- #'../chrome_frame/chrome_frame.gyp:chrome_frame_unittests',
+- #'../chrome_frame/chrome_frame.gyp:npchrome_frame',
+- '../courgette/courgette.gyp:courgette_unittests',
+- '../sandbox/sandbox.gyp:sbox_integration_tests',
+- '../sandbox/sandbox.gyp:sbox_unittests',
+- '../sandbox/sandbox.gyp:sbox_validation_tests',
+- '../views/views.gyp:views_unittests',
+- '../third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:copy_TestNetscapePlugIn',
+- # TODO(nsylvain) ui_tests.exe depends on test_shell_common.
+- # This should:
+- # 1) not be the case. OR.
+- # 2) be expressed in the ui tests dependencies.
+- '../webkit/webkit.gyp:test_shell_common',
+- ],
+- }],
+- ],
+- }, # target_name: chromium_2010_builder_tests
+- {
+- 'target_name': 'chromium_builder_nacl_win_integration',
+- 'type': 'none',
+- 'dependencies': [
+- 'chromium_builder_qa', # needed for pyauto
+- 'chromium_builder_tests',
+- ],
+- }, # target_name: chromium_builder_nacl_win_integration
+- {
+- 'target_name': 'chromium_builder_perf',
+- 'type': 'none',
+- 'dependencies': [
+- 'chromium_builder_qa', # needed for pyauto
+- '../chrome/chrome.gyp:performance_ui_tests',
+- '../chrome/chrome.gyp:plugin_tests',
+- '../chrome/chrome.gyp:sync_performance_tests',
+- '../chrome/chrome.gyp:ui_tests',
+- ],
+- }, # target_name: chromium_builder_perf
+- {
+- 'target_name': 'chromium_gpu_builder',
+- 'type': 'none',
+- 'dependencies': [
+- '../chrome/chrome.gyp:gpu_tests',
+- '../third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:DumpRenderTree',
+- ],
+- }, # target_name: chromium_gpu_builder
+- {
+- 'target_name': 'chromium_builder_qa',
+- 'type': 'none',
+- 'dependencies': [
+- '../chrome/chrome.gyp:chromedriver',
+- ],
+- 'conditions': [
+- ['OS=="mac" or OS=="win" or (os_posix==1 and target_arch==python_arch)', {
+- 'dependencies': [
+- '../chrome/chrome.gyp:pyautolib',
+- ],
+- }],
+- ],
+- }, # target_name: chromium_builder_qa
+ ],
+ 'conditions': [
+ ['OS=="mac"', {
+--- chromium/src/build/linux/system.gyp 2010-11-20 23:07:46.000000000 +0100
++++ new/src/build/linux/system.gyp 2010-11-25 21:05:09.418000018 +0100
+@@ -340,6 +340,19 @@
+ }]]
+ },
+ {
++ 'target_name': 'v8',
++ 'type': 'settings',
++ 'conditions': [
++ ['_toolset=="target"', {
++ 'link_settings': {
++ 'libraries': [
++ '-lv8',
++ '-lvpx',
++ ],
++ },
++ }]]
++ },
++ {
+ 'target_name': 'gnome_keyring',
+ 'type': 'settings',
+ 'conditions': [
+--- chromium/src/net/net.gyp 2010-11-25 19:17:15.000000000 +0100
++++ new/src/net/net.gyp 2010-11-25 21:05:09.427000018 +0100
+@@ -717,7 +717,7 @@
+ 'conditions': [
+ ['javascript_engine=="v8"', {
+ 'dependencies': [
+- '../v8/tools/gyp/v8.gyp:v8',
++ '../build/linux/system.gyp:v8',
+ ],
+ }],
+ ['chromeos==1', {
+--- chromium/src/third_party/WebKit/Source/WebCore/WebCore.gyp/WebCore.gyp 2010-11-20 23:09:21.000000000 +0100
++++ new/src/third_party/WebKit/Source/WebCore/WebCore.gyp/WebCore.gyp 2010-11-25 21:05:09.435000018 +0100
+@@ -789,7 +789,7 @@
+ 'conditions': [
+ ['javascript_engine=="v8"', {
+ 'dependencies': [
+- '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8',
++ '<(chromium_src_dir)/build/linux/system.gyp:v8',
+ ],
+ 'conditions': [
+ ['inside_chromium_build==1 and OS=="win" and component=="shared_library"', {
+@@ -904,10 +904,10 @@
+ 'conditions': [
+ ['javascript_engine=="v8"', {
+ 'dependencies': [
+- '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8',
++ '<(chromium_src_dir)/build/linux/system.gyp:v8',
+ ],
+ 'export_dependent_settings': [
+- '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8',
++ '<(chromium_src_dir)/build/linux/system.gyp:v8',
+ ],
+ 'conditions': [
+ ['inside_chromium_build==1 and OS=="win" and component=="shared_library"', {
+@@ -1438,10 +1438,10 @@
+ 'conditions': [
+ ['javascript_engine=="v8"', {
+ 'dependencies': [
+- '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8',
++ '<(chromium_src_dir)/build/linux/system.gyp:v8',
+ ],
+ 'export_dependent_settings': [
+- '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8',
++ '<(chromium_src_dir)/build/linux/system.gyp:v8',
+ ],
+ }],
+ ['OS=="mac"', {
diff --git a/chromium-6.0.425.0-ffmpeg-no-pkgconfig.patch b/chromium-6.0.425.0-ffmpeg-no-pkgconfig.patch
new file mode 100644
index 0000000..8150e6f
--- /dev/null
+++ b/chromium-6.0.425.0-ffmpeg-no-pkgconfig.patch
@@ -0,0 +1,23 @@
+diff -up chromium-6.0.425.0-20100603svn48830/third_party/ffmpeg/ffmpeg.gyp.BAD chromium-6.0.425.0-20100603svn48830/third_party/ffmpeg/ffmpeg.gyp
+--- chromium-6.0.425.0-20100603svn48830/src/third_party/ffmpeg/ffmpeg.gyp.BAD 2010-06-03 13:48:45.196313786 -0400
++++ chromium-6.0.425.0-20100603svn48830/src/third_party/ffmpeg/ffmpeg.gyp 2010-06-03 13:50:10.580325776 -0400
+@@ -818,12 +818,14 @@
+
+ # Add pkg-config result to include path when use_system_ffmpeg!=0
+ ['use_system_ffmpeg!=0', {
+- 'cflags': [
+- '
+
+ using std::string;
+
diff --git a/chromium-7.0.510.0-system-ffmpeg.patch b/chromium-7.0.510.0-system-ffmpeg.patch
new file mode 100644
index 0000000..948b41c
--- /dev/null
+++ b/chromium-7.0.510.0-system-ffmpeg.patch
@@ -0,0 +1,35 @@
+diff -up chromium-7.0.510.0/media/filters/ffmpeg_glue.cc.system-ffmpeg chromium-7.0.510.0/media/filters/ffmpeg_glue.cc
+--- chromium-7.0.510.0/src/media/filters/ffmpeg_glue.cc.system-ffmpeg 2010-08-31 04:22:39.000000000 -0400
++++ chromium-7.0.510.0/src/media/filters/ffmpeg_glue.cc 2010-09-01 10:50:30.259172512 -0400
+@@ -119,14 +119,14 @@ namespace media {
+ static const char kProtocol[] = "http";
+
+ // Fill out our FFmpeg protocol definition.
+-static URLProtocol kFFmpegURLProtocol = {
+- kProtocol,
+- &OpenContext,
+- &ReadContext,
+- &WriteContext,
+- &SeekContext,
+- &CloseContext,
+-};
++// static URLProtocol kFFmpegURLProtocol = {
++// kProtocol,
++// &OpenContext,
++// &ReadContext,
++// &WriteContext,
++// &SeekContext,
++// &CloseContext,
++//};
+
+ FFmpegGlue::FFmpegGlue() {
+ // Before doing anything disable logging as it interferes with layout tests.
+@@ -134,7 +134,7 @@ FFmpegGlue::FFmpegGlue() {
+
+ // Register our protocol glue code with FFmpeg.
+ avcodec_init();
+- av_register_protocol2(&kFFmpegURLProtocol, sizeof(kFFmpegURLProtocol));
++ // av_register_protocol2(&kFFmpegURLProtocol, sizeof(kFFmpegURLProtocol));
+ av_lockmgr_register(&LockManagerOperation);
+
+ // Now register the rest of FFmpeg.
diff --git a/chromium-7.0.542.0-codechanges-system-minizip-v8.patch b/chromium-7.0.542.0-codechanges-system-minizip-v8.patch
new file mode 100644
index 0000000..de8fd57
--- /dev/null
+++ b/chromium-7.0.542.0-codechanges-system-minizip-v8.patch
@@ -0,0 +1,314 @@
+diff -up chromium-7.0.542.0/chrome/browser/browser_about_handler.cc.system-code chromium-7.0.542.0/chrome/browser/browser_about_handler.cc
+--- chromium-7.0.542.0/src/chrome/browser/browser_about_handler.cc.system-code 2010-10-04 05:42:38.000000000 -0400
++++ chromium-7.0.542.0/src/chrome/browser/browser_about_handler.cc 2010-10-04 13:50:45.322377060 -0400
+@@ -63,7 +63,7 @@
+ #include "webkit/plugins/webplugininfo.h"
+
+ #ifdef CHROME_V8
+-#include "v8/include/v8.h"
++#include
+ #endif
+
+ #if defined(OS_WIN)
+diff -up chromium-7.0.542.0/chrome/browser/ui/webui/options/about_page_handler.cc.system-code chromium-7.0.542.0/chrome/browser/dom_ui/options/about_page_handler.cc
+--- chromium-7.0.542.0/src/chrome/browser/ui/webui/options/chromeos/about_page_handler.cc.system-code 2010-10-04 14:20:06.569129133 -0400
++++ chromium-7.0.542.0/src/chrome/browser/ui/webui/options/chromeos/about_page_handler.cc 2010-10-04 14:20:21.197112798 -0400
+@@ -28,7 +28,7 @@
+ #include "webkit/glue/webkit_glue.h"
+
+ #if defined(CHROME_V8)
+-#include "v8/include/v8.h"
++#include
+ #endif
+
+ #include "chrome/browser/chromeos/cros/cros_library.h"
+diff -up chromium-7.0.542.0/chrome/browser/memory_purger.cc.system-code chromium-7.0.542.0/chrome/browser/memory_purger.cc
+--- chromium-7.0.542.0/src/chrome/browser/memory_purger.cc.system-code 2010-10-04 05:42:38.000000000 -0400
++++ chromium-7.0.542.0/src/chrome/browser/memory_purger.cc 2010-10-04 14:16:54.837353728 -0400
+@@ -23,7 +23,7 @@
+ #include "net/url_request/url_request_context.h"
+ #include "net/url_request/url_request_context_getter.h"
+ #include "third_party/tcmalloc/chromium/src/google/malloc_extension.h"
+-#include "v8/include/v8.h"
++#include
+
+ // PurgeMemoryHelper -----------------------------------------------------------
+
+diff -up chromium-7.0.542.0/chrome/renderer/automation/dom_automation_v8_extension.h.system-code chromium-7.0.542.0/chrome/renderer/automation/dom_automation_v8_extension.h
+--- chromium-7.0.542.0/src/chrome/renderer/automation/dom_automation_v8_extension.h.system-code 2010-10-04 05:42:44.000000000 -0400
++++ chromium-7.0.542.0/src/chrome/renderer/automation/dom_automation_v8_extension.h 2010-10-04 14:16:54.839353510 -0400
+@@ -6,7 +6,7 @@
+ #define CHROME_RENDERER_AUTOMATION_DOM_AUTOMATION_V8_EXTENSION_H_
+ #pragma once
+
+-#include "v8/include/v8.h"
++#include
+
+ class DomAutomationV8Extension {
+ public:
+diff -up chromium-7.0.542.0/chrome/renderer/extensions/bindings_utils.h.system-code chromium-7.0.542.0/chrome/renderer/extensions/bindings_utils.h
+--- chromium-7.0.542.0/src/chrome/renderer/extensions/bindings_utils.h.system-code 2010-10-04 05:42:44.000000000 -0400
++++ chromium-7.0.542.0/src/chrome/renderer/extensions/bindings_utils.h 2010-10-04 14:16:54.840353450 -0400
+@@ -10,7 +10,7 @@
+ #include "base/memory/singleton.h"
+ #include "base/string_piece.h"
+ #include "ui/base/resource/resource_bundle.h"
+-#include "v8/include/v8.h"
++#include
+
+ #include
+ #include
+diff -up chromium-7.0.542.0/chrome/renderer/extensions/chrome_app_bindings.cc.system-code chromium-7.0.542.0/chrome/renderer/extensions/chrome_app_bindings.cc
+--- chromium-7.0.542.0/src/chrome/renderer/extensions/chrome_app_bindings.cc.system-code 2010-10-04 05:42:44.000000000 -0400
++++ chromium-7.0.542.0/src/chrome/renderer/extensions/chrome_app_bindings.cc 2010-10-04 14:16:54.841498794 -0400
+@@ -19,7 +19,7 @@
+ #include "content/renderer/v8_value_converter.h"
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
+-#include "v8/include/v8.h"
++#include
+
+ using WebKit::WebFrame;
+
+diff -up chromium-7.0.542.0/chrome/renderer/extensions/event_bindings.h.system-code chromium-7.0.542.0/chrome/renderer/extensions/event_bindings.h
+--- chromium-7.0.542.0/src/chrome/renderer/extensions/event_bindings.h.system-code 2010-10-04 05:42:44.000000000 -0400
++++ chromium-7.0.542.0/src/chrome/renderer/extensions/event_bindings.h 2010-10-04 14:16:54.841498794 -0400
+@@ -8,7 +8,7 @@
+
+ #include
+
+-#include "v8/include/v8.h"
++#include
+
+ class ExtensionDispatcher;
+ class GURL;
+diff -up chromium-7.0.542.0/chrome/renderer/extensions/extension_process_bindings.h.system-code chromium-7.0.542.0/chrome/renderer/extensions/extension_process_bindings.h
+--- chromium-7.0.542.0/src/chrome/renderer/extensions/extension_process_bindings.h.system-code 2010-10-04 05:42:44.000000000 -0400
++++ chromium-7.0.542.0/src/chrome/renderer/extensions/extension_process_bindings.h 2010-10-04 14:16:54.842499822 -0400
+@@ -12,7 +12,7 @@
+ #include
+ #include
+
+-#include "v8/include/v8.h"
++#include
+
+ class ExtensionDispatcher;
+ class GURL;
+diff -up chromium-7.0.542.0/chrome/renderer/extensions/js_only_v8_extensions.h.system-code chromium-7.0.542.0/chrome/renderer/extensions/js_only_v8_extensions.h
+--- chromium-7.0.542.0/src/chrome/renderer/extensions/js_only_v8_extensions.h.system-code 2010-10-04 05:42:44.000000000 -0400
++++ chromium-7.0.542.0/src/chrome/renderer/extensions/js_only_v8_extensions.h 2010-10-04 14:16:54.843500372 -0400
+@@ -6,7 +6,7 @@
+ #define CHROME_RENDERER_EXTENSIONS_JS_ONLY_V8_EXTENSIONS_H_
+ #pragma once
+
+-#include "v8/include/v8.h"
++#include
+
+ // This file contains various V8 Extensions that are JavaScript only, and
+ // don't have any C++ native functions.
+diff -up chromium-7.0.542.0/chrome/renderer/extensions/renderer_extension_bindings.h.system-code chromium-7.0.542.0/chrome/renderer/extensions/renderer_extension_bindings.h
+--- chromium-7.0.542.0/src/chrome/renderer/extensions/renderer_extension_bindings.h.system-code 2010-10-04 05:42:44.000000000 -0400
++++ chromium-7.0.542.0/src/chrome/renderer/extensions/renderer_extension_bindings.h 2010-10-04 14:16:54.844504849 -0400
+@@ -6,7 +6,7 @@
+ #define CHROME_RENDERER_EXTENSIONS_RENDERER_EXTENSION_BINDINGS_H_
+ #pragma once
+
+-#include "v8/include/v8.h"
++#include
+
+ #include
+
+diff -up chromium-7.0.542.0/chrome/renderer/external_extension.cc.system-code chromium-7.0.542.0/chrome/renderer/external_extension.cc
+--- chromium-7.0.542.0/src/chrome/renderer/external_extension.cc.system-code 2010-10-04 05:42:44.000000000 -0400
++++ chromium-7.0.542.0/src/chrome/renderer/external_extension.cc 2010-10-04 14:16:54.845500082 -0400
+@@ -12,7 +12,7 @@
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
+-#include "v8/include/v8.h"
++#include
+
+ using WebKit::WebFrame;
+ using WebKit::WebView;
+diff -up chromium-7.0.542.0/chrome/renderer/loadtimes_extension_bindings.cc.system-code chromium-7.0.542.0/chrome/renderer/loadtimes_extension_bindings.cc
+--- chromium-7.0.542.0/src/chrome/renderer/loadtimes_extension_bindings.cc.system-code 2010-10-04 05:42:44.000000000 -0400
++++ chromium-7.0.542.0/src/chrome/renderer/loadtimes_extension_bindings.cc 2010-10-04 14:16:54.846500790 -0400
+@@ -9,7 +9,7 @@
+ #include "base/time.h"
+ #include "content/renderer/navigation_state.h"
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
+-#include "v8/include/v8.h"
++#include
+
+ using WebKit::WebDataSource;
+ using WebKit::WebFrame;
+diff -up chromium-7.0.542.0/content/renderer/render_thread.cc.system-code chromium-7.0.542.0/chrome/renderer/render_thread.cc
+--- chromium-7.0.542.0/src/content/renderer/render_thread.cc.system-code 2010-10-04 05:42:44.000000000 -0400
++++ chromium-7.0.542.0/src/content/renderer/render_thread.cc 2010-10-04 14:16:54.848500089 -0400
+@@ -59,7 +59,7 @@
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageEventDispatcher.h"
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
+-#include "v8/include/v8.h"
++#include
+ #include "webkit/extensions/v8/benchmarking_extension.h"
+ #include "webkit/extensions/v8/playback_extension.h"
+ #include "webkit/glue/webkit_glue.h"
+diff -up chromium-7.0.542.0/chrome/renderer/search_extension.cc.system-code chromium-7.0.542.0/chrome/renderer/search_extension.cc
+--- chromium-7.0.542.0/src/chrome/renderer/search_extension.cc.system-code 2010-10-04 05:42:44.000000000 -0400
++++ chromium-7.0.542.0/src/chrome/renderer/search_extension.cc 2010-10-04 14:16:54.849503141 -0400
+@@ -12,7 +12,7 @@
+ #include "chrome/renderer/searchbox.h"
+ #include "content/renderer/render_view.h"
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
+-#include "v8/include/v8.h"
++#include
+
+ using WebKit::WebFrame;
+ using WebKit::WebView;
+diff -up chromium-7.0.542.0/chrome/renderer/translate_helper.cc.system-code chromium-7.0.542.0/chrome/renderer/translate_helper.cc
+--- chromium-7.0.542.0/src/chrome/renderer/translate_helper.cc.system-code 2010-10-04 05:42:44.000000000 -0400
++++ chromium-7.0.542.0/src/chrome/renderer/translate_helper.cc 2010-10-04 14:16:54.850500334 -0400
+@@ -18,7 +18,7 @@
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptSource.h"
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
+ #include "third_party/cld/encodings/compact_lang_det/win/cld_unicodetext.h"
+-#include "v8/include/v8.h"
++#include
+ #include "webkit/glue/dom_operations.h"
+
+ using WebKit::WebDocument;
+diff -up chromium-7.0.542.0/chrome/test/v8_unit_test.h.system-code chromium-7.0.542.0/chrome/test/v8_unit_test.h
+--- chromium-7.0.542.0/src/chrome/test/base/v8_unit_test.h.system-code 2010-10-04 05:42:17.000000000 -0400
++++ chromium-7.0.542.0/src/chrome/test/base/v8_unit_test.h 2010-10-04 14:16:54.851503148 -0400
+@@ -9,7 +9,7 @@
+ #include
+
+ #include "testing/gtest/include/gtest/gtest.h"
+-#include "v8/include/v8.h"
++#include
+
+ namespace base {
+ class StringPiece;
+diff -up chromium-7.0.542.0/net/proxy/proxy_resolver_v8.cc.system-code chromium-7.0.542.0/net/proxy/proxy_resolver_v8.cc
+--- chromium-7.0.542.0/src/net/proxy/proxy_resolver_v8.cc.system-code 2010-10-04 05:40:28.000000000 -0400
++++ chromium-7.0.542.0/src/net/proxy/proxy_resolver_v8.cc 2010-10-04 14:16:54.852507424 -0400
+@@ -22,7 +22,7 @@
+ #include "net/proxy/proxy_resolver_js_bindings.h"
+ #include "net/proxy/proxy_resolver_request_context.h"
+ #include "net/proxy/proxy_resolver_script.h"
+-#include "v8/include/v8.h"
++#include
+
+ // Notes on the javascript environment:
+ //
+diff -up chromium-7.0.542.0/webkit/extensions/v8/benchmarking_extension.h.system-code chromium-7.0.542.0/webkit/extensions/v8/benchmarking_extension.h
+--- chromium-7.0.542.0/src/webkit/extensions/v8/benchmarking_extension.h.system-code 2010-10-04 05:39:56.000000000 -0400
++++ chromium-7.0.542.0/src/webkit/extensions/v8/benchmarking_extension.h 2010-10-04 14:16:54.854152851 -0400
+@@ -9,7 +9,7 @@
+ #ifndef WEBKIT_EXTENSIONS_V8_BENCHMARKING_EXTENSION_H_
+ #define WEBKIT_EXTENSIONS_V8_BENCHMARKING_EXTENSION_H_
+
+-#include "v8/include/v8.h"
++#include
+
+ namespace extensions_v8 {
+
+diff -up chromium-7.0.542.0/webkit/extensions/v8/gc_extension.h.system-code chromium-7.0.542.0/webkit/extensions/v8/gc_extension.h
+--- chromium-7.0.542.0/src/webkit/extensions/v8/gc_extension.h.system-code 2010-10-04 05:39:56.000000000 -0400
++++ chromium-7.0.542.0/src/webkit/extensions/v8/gc_extension.h 2010-10-04 14:16:54.855479939 -0400
+@@ -8,7 +8,7 @@
+ #ifndef WEBKIT_EXTENSIONS_V8_GC_EXTENSION_H_
+ #define WEBKIT_EXTENSIONS_V8_GC_EXTENSION_H_
+
+-#include "v8/include/v8.h"
++#include
+
+ namespace extensions_v8 {
+
+diff -up chromium-7.0.542.0/webkit/extensions/v8/heap_profiler_extension.h.system-code chromium-7.0.542.0/webkit/extensions/v8/heap_profiler_extension.h
+--- chromium-7.0.542.0/src/webkit/extensions/v8/heap_profiler_extension.h.system-code 2010-10-04 05:39:56.000000000 -0400
++++ chromium-7.0.542.0/src/webkit/extensions/v8/heap_profiler_extension.h 2010-10-04 14:16:54.858478535 -0400
+@@ -9,7 +9,7 @@
+ #ifndef WEBKIT_EXTENSIONS_V8_HEAP_PROFILER_EXTENSION_H_
+ #define WEBKIT_EXTENSIONS_V8_HEAP_PROFILER_EXTENSION_H_
+
+-#include "v8/include/v8.h"
++#include
+
+ namespace extensions_v8 {
+
+diff -up chromium-7.0.542.0/webkit/extensions/v8/playback_extension.h.system-code chromium-7.0.542.0/webkit/extensions/v8/playback_extension.h
+--- chromium-7.0.542.0/src/webkit/extensions/v8/playback_extension.h.system-code 2010-10-04 05:39:56.000000000 -0400
++++ chromium-7.0.542.0/src/webkit/extensions/v8/playback_extension.h 2010-10-04 14:16:54.859478557 -0400
+@@ -5,7 +5,7 @@
+ #ifndef WEBKIT_EXTENSIONS_V8_PLAYBACK_EXTENSION_H_
+ #define WEBKIT_EXTENSIONS_V8_PLAYBACK_EXTENSION_H_
+
+-#include "v8/include/v8.h"
++#include
+
+ namespace extensions_v8 {
+
+diff -up chromium-7.0.542.0/webkit/extensions/v8/profiler_extension.h.system-code chromium-7.0.542.0/webkit/extensions/v8/profiler_extension.h
+--- chromium-7.0.542.0/src/webkit/extensions/v8/profiler_extension.h.system-code 2010-10-04 05:39:56.000000000 -0400
++++ chromium-7.0.542.0/src/webkit/extensions/v8/profiler_extension.h 2010-10-04 14:16:54.861478714 -0400
+@@ -9,7 +9,7 @@
+ #ifndef WEBKIT_EXTENSIONS_V8_PROFILER_EXTENSION_H_
+ #define WEBKIT_EXTENSIONS_V8_PROFILER_EXTENSION_H_
+
+-#include "v8/include/v8.h"
++#include
+
+ namespace extensions_v8 {
+
+diff -up chromium-7.0.542.0/webkit/glue/webkitclient_impl.cc.system-code chromium-7.0.542.0/webkit/glue/webkitclient_impl.cc
+--- chromium-7.0.542.0/src/webkit/glue/webkitclient_impl.cc.system-code 2010-10-04 05:39:57.000000000 -0400
++++ chromium-7.0.542.0/src/webkit/glue/webkitclient_impl.cc 2010-10-04 14:16:54.867374474 -0400
+@@ -42,7 +42,7 @@
+ #include "webkit/glue/weburlloader_impl.h"
+
+ #if defined(OS_LINUX)
+-#include "v8/include/v8.h"
++#include
+ #endif
+
+ using WebKit::WebAudioBus;
+diff -up chromium-7.0.542.0/webkit/glue/webkit_glue.cc.system-code chromium-7.0.542.0/webkit/glue/webkit_glue.cc
+--- chromium-7.0.542.0/src/webkit/glue/webkit_glue.cc.system-code 2010-10-04 05:39:57.000000000 -0400
++++ chromium-7.0.542.0/src/webkit/glue/webkit_glue.cc 2010-10-04 14:16:54.869402307 -0400
+@@ -43,7 +43,7 @@
+ #endif
+ #include "webkit/glue/glue_serialize.h"
+ #include "webkit/glue/user_agent.h"
+-#include "v8/include/v8.h"
++#include
+
+ using WebKit::WebCanvas;
+ using WebKit::WebData;
+diff -up chromium-7.0.542.0/webkit/support/test_webkit_client.cc.system-code chromium-7.0.542.0/webkit/support/test_webkit_client.cc
+--- chromium-7.0.542.0/src/webkit/support/test_webkit_client.cc.system-code 2010-10-04 05:39:57.000000000 -0400
++++ chromium-7.0.542.0/src/webkit/support/test_webkit_client.cc 2010-10-04 14:16:54.871369363 -0400
+@@ -31,7 +31,7 @@
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageNamespace.h"
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
+ #include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h"
+-#include "v8/include/v8.h"
++#include
+ #include "webkit/appcache/web_application_cache_host_impl.h"
+ #include "webkit/database/vfs_backend.h"
+ #include "webkit/extensions/v8/gc_extension.h"
+diff -up chromium-7.0.542.0/webkit/tools/test_shell/listener_leak_test.cc.system-code chromium-7.0.542.0/webkit/tools/test_shell/listener_leak_test.cc
+--- chromium-7.0.542.0/src/webkit/tools/test_shell/listener_leak_test.cc.system-code 2010-10-04 05:39:56.000000000 -0400
++++ chromium-7.0.542.0/src/webkit/tools/test_shell/listener_leak_test.cc 2010-10-04 14:16:54.872365629 -0400
+@@ -8,8 +8,8 @@
+ #include "base/string_number_conversions.h"
+ #include "base/string_util.h"
+ #include "testing/gtest/include/gtest/gtest.h"
+-#include "v8/include/v8.h"
+-#include "v8/include/v8-profiler.h"
++#include
++#include
+ #include "webkit/glue/webkit_glue.h"
+ #include "webkit/tools/test_shell/test_shell.h"
+ #include "webkit/tools/test_shell/test_shell_test.h"
diff --git a/chromium-7.0.542.0-media-probe.patch b/chromium-7.0.542.0-media-probe.patch
new file mode 100644
index 0000000..04f8b7e
--- /dev/null
+++ b/chromium-7.0.542.0-media-probe.patch
@@ -0,0 +1,190 @@
+diff -up chromium-7.0.542.0/net/base/mime_util.cc.media-probe chromium-7.0.542.0/net/base/mime_util.cc
+--- chromium-7.0.542.0/src/net/base/mime_util.cc.media-probe 2010-10-04 05:40:38.000000000 -0400
++++ chromium-7.0.542.0/src/net/base/mime_util.cc 2010-10-04 15:02:09.324499172 -0400
+@@ -15,6 +15,15 @@
+ #include "base/string_util.h"
+ #include "base/utf_string_conversions.h"
+
++#include "base/path_service.h"
++
++#if ! defined(OS_MACOSX) && defined (OS_POSIX)
++#include
++#define HAVE_DLFCN 1
++#else
++#define HAVE_DLFCN 0
++#endif
++
+ using std::string;
+
+ namespace net {
+@@ -224,51 +233,47 @@
+ "image/x-xbitmap" // xbm
+ };
+
+-// A list of media types: http://en.wikipedia.org/wiki/Internet_media_type
+-// A comprehensive mime type list: http://plugindoc.mozdev.org/winmime.php
+-static const char* const supported_media_types[] = {
+-#if defined(ENABLE_MEDIA_TYPE_OGG)
+- // Ogg.
+- "video/ogg",
+- "audio/ogg",
+- "application/ogg",
+-#endif
+-
+- // WebM.
+- "video/webm",
+- "audio/webm",
+- "audio/wav",
+- "audio/x-wav",
++struct format_info {
++ const char* name;
++ const char* symbol;
++ const bool fallback;
++};
+
+ #if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS)
+- // MPEG-4.
+- "video/mp4",
+- "video/x-m4v",
+- "audio/mp4",
+- "audio/x-m4a",
+-
+- // MP3.
+- "audio/mp3",
+- "audio/x-mp3",
+- "audio/mpeg",
++#define MPEG true
++#else
++#define MPEG false
+ #endif
++
++// A list of media types: http://en.wikipedia.org/wiki/Internet_media_type
++// A comprehensive mime type list: http://plugindoc.mozdev.org/winmime.php
++static const format_info supported_media_types[] = {
++ { "video/ogg", "ogg_demuxer", true },
++ { "audio/ogg", "ogg_demuxer", true },
++ { "application/ogg", "ogg_demuxer", true },
++ { "video/webm", "matroska_demuxer", true },
++ { "audio/webm", "matroska_demuxer", true },
++ { "audio/wav", "wav_demuxer", true },
++ { "audio/x-wav", "wav_demuxer", true },
++ { "video/mp4", "mov_demuxer", MPEG },
++ { "video/x-m4v", "mov_demuxer", MPEG },
++ { "audio/mp4", "mov_demuxer", MPEG },
++ { "audio/x-m4a", "mov_demuxer", MPEG },
++ { "audio/mp3", "mp3_demuxer", MPEG },
++ { "audio/x-mp3", "mp3_demuxer", MPEG },
++ { "audio/mpeg", "mp3_demuxer", MPEG },
+ };
+
+ // List of supported codecs when passed in with .
+ //
+ // Refer to http://wiki.whatwg.org/wiki/Video_type_parameters#Browser_Support
+ // for more information.
+-static const char* const supported_media_codecs[] = {
+-#if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS)
+- "avc1",
+- "mp4a",
+-#endif
+-#if defined(ENABLE_MEDIA_CODEC_THEORA)
+- "theora",
+-#endif
+- "vorbis",
+- "vp8",
+- "1" // PCM for WAV.
++static const format_info supported_media_codecs[] = {
++ { "avc1", "aac_decoder", MPEG },
++ { "mp4a", "h264_decoder", MPEG },
++ { "theora", "theora_decoder", true },
++ { "vorbis", "vorbis_decoder", true },
++ { "vp8", "libvpx_decoder", true },
+ };
+
+ // Note: does not include javascript types list (see supported_javascript_types)
+@@ -342,7 +347,47 @@
+ { "audio/wav", "1" }
+ };
+
+-void MimeUtil::InitializeMimeTypeMaps() {
++#if defined(OS_MACOSX)
++#define DSO_NAME(MODULE) ("lib" MODULE ".dylib")
++#elif defined(OS_POSIX)
++#define DSO_NAME(MODULE) ("lib" MODULE ".so")
++#else
++#define DSO_NAME(MODULE) (MODULE ".dll")
++#endif
++
++static void* GetHandle(const FilePath& module_dir, const char* library) {
++#if HAVE_DLFCN
++ FilePath path = module_dir.Append(library);
++ return dlopen(path.value().c_str(), RTLD_LAZY);
++#else
++ return NULL;
++#endif
++}
++
++static void DumpHandle(void* dlhandle) {
++#if HAVE_DLFCN
++ if (dlhandle)
++ dlclose(dlhandle);
++#endif
++}
++
++static bool ProbeFormat(void* dlhandle, const char* symbol, bool fallback) {
++#if HAVE_DLFCN
++ return dlhandle && dlsym(dlhandle, symbol);
++#else
++ return fallback;
++#endif
++}
++
++ void MimeUtil::InitializeMimeTypeMaps() {
++ FilePath module_path;
++#if defined(OS_MACOSX)
++ module_path = mac_util::MainAppBundlePath().Append("Libraries");
++#else
++ PathService::Get(base::DIR_MODULE, &module_path);
++#endif
++ void* h_ffmpegsumo = GetHandle(module_path, DSO_NAME("ffmpegsumo"));
++
+ for (size_t i = 0; i < arraysize(supported_image_types); ++i)
+ image_map_.insert(supported_image_types[i]);
+
+@@ -352,11 +397,15 @@
+ for (size_t i = 0; i < arraysize(supported_javascript_types); ++i)
+ non_image_map_.insert(supported_javascript_types[i]);
+ for (size_t i = 0; i < arraysize(supported_media_types); ++i)
+- non_image_map_.insert(supported_media_types[i]);
++ if (ProbeFormat(h_ffmpegsumo, supported_media_types[i].symbol,
++ supported_media_types[i].fallback))
++ non_image_map_.insert(supported_media_types[i].name);
+
+ // Initialize the supported media types.
+ for (size_t i = 0; i < arraysize(supported_media_types); ++i)
+- media_map_.insert(supported_media_types[i]);
++ if (ProbeFormat(h_ffmpegsumo, supported_media_types[i].symbol,
++ supported_media_types[i].fallback))
++ media_map_.insert(supported_media_types[i].name);
+
+ for (size_t i = 0; i < arraysize(supported_javascript_types); ++i)
+ javascript_map_.insert(supported_javascript_types[i]);
+@@ -365,7 +414,9 @@
+ view_source_map_.insert(view_source_types[i]);
+
+ for (size_t i = 0; i < arraysize(supported_media_codecs); ++i)
+- codecs_map_.insert(supported_media_codecs[i]);
++ if (ProbeFormat(h_ffmpegsumo, supported_media_codecs[i].symbol,
++ supported_media_codecs[i].fallback))
++ codecs_map_.insert(supported_media_codecs[i].name);
+
+ // Initialize the strict supported media types.
+ for (size_t i = 0; i < arraysize(format_codec_mappings); ++i) {
+@@ -379,6 +430,8 @@
+ codecs.insert(mime_type_codecs[j]);
+ strict_format_map_[format_codec_mappings[i].mime_type] = codecs;
+ }
++
++ DumpHandle(h_ffmpegsumo);
+ }
+
+ bool MimeUtil::IsSupportedImageMimeType(const char* mime_type) const {
diff --git a/chromium-7.0.542.0-system-libvpx.patch b/chromium-7.0.542.0-system-libvpx.patch
new file mode 100644
index 0000000..6b53f48
--- /dev/null
+++ b/chromium-7.0.542.0-system-libvpx.patch
@@ -0,0 +1,64 @@
+diff -up chromium-7.0.542.0/build/linux/system.gyp.system-libvpx chromium-7.0.542.0/build/linux/system.gyp
+--- chromium-7.0.542.0/src/build/linux/system.gyp.system-libvpx 2010-10-06 14:01:19.638507000 -0400
++++ chromium-7.0.542.0/src/build/linux/system.gyp 2010-10-06 14:01:19.650507000 -0400
+@@ -409,6 +409,26 @@
+ }]]
+ },
+ {
++ 'target_name': 'libvpx',
++ 'type': 'settings',
++ 'conditions': [
++ ['_toolset=="target"', {
++ 'direct_dependent_settings': {
++ 'cflags': [
++ '-I/usr/include/vpx',
++ ],
++ },
++ 'link_settings': {
++ 'ldflags': [
++ '',
++ ],
++ 'libraries': [
++ '-lvpx',
++ ],
++ },
++ }]]
++ },
++ {
+ 'target_name': 'gnome_keyring',
+ 'type': 'settings',
+ 'conditions': [
+diff -up chromium-7.0.542.0/remoting/remoting.gyp.system-libvpx chromium-7.0.542.0/remoting/remoting.gyp
+--- chromium-7.0.542.0/src/remoting/remoting.gyp.system-libvpx 2010-10-06 14:01:19.641507000 -0400
++++ chromium-7.0.542.0/src/remoting/remoting.gyp 2010-10-06 14:01:19.654507000 -0400
+@@ -165,7 +165,7 @@
+ 'remoting_base',
+ 'remoting_host',
+ 'remoting_jingle_glue',
+- '../third_party/libvpx/libvpx.gyp:libvpx',
++ '../build/linux/system.gyp:libvpx',
+ '../third_party/npapi/npapi.gyp:npapi',
+ ],
+ 'sources': [
+@@ -303,7 +303,7 @@
+ # TODO(hclam): Remove this and depend on libvpx directly once we remove
+ # libvpx from FFmpeg.
+ 'include_dirs': [
+- '../third_party/libvpx/source/libvpx',
++ '/usr/include/vpx',
+ ],
+ # This target needs a hard dependency because dependent targets
+ # depend on chromotocol_proto_lib for headers.
+diff -up chromium-7.0.542.0/third_party/ffmpeg/ffmpeg.gyp.system-libvpx chromium-7.0.542.0/third_party/ffmpeg/ffmpeg.gyp
+--- chromium-7.0.542.0/src/third_party/ffmpeg/ffmpeg.gyp.system-libvpx 2010-10-06 14:04:09.730507291 -0400
++++ chromium-7.0.542.0/src/third_party/ffmpeg/ffmpeg.gyp 2010-10-06 14:05:14.341510863 -0400
+@@ -812,6 +812,9 @@
+ '<(output_root)',
+ '../..', # The chromium 'src' directory.
+ ],
++ 'dependencies': [
++ '../../build/linux/system.gyp:libvpx',
++ ],
+ 'direct_dependent_settings': {
+ 'defines': [
+ '__STDC_CONSTANT_MACROS', # FFmpeg uses INT64_C.
diff --git a/chromium-91-java-only-allowed-in-android-builds.patch b/chromium-91-java-only-allowed-in-android-builds.patch
new file mode 100644
index 0000000..c0b118c
--- /dev/null
+++ b/chromium-91-java-only-allowed-in-android-builds.patch
@@ -0,0 +1,16 @@
+References: https://bugs.chromium.org/p/chromium/issues/detail?id=1192875
+
+Index: chromium-91.0.4472.57/third_party/closure_compiler/compiler.py
+===================================================================
+--- chromium-91.0.4472.57.orig/third_party/closure_compiler/compiler.py
++++ chromium-91.0.4472.57/third_party/closure_compiler/compiler.py
+@@ -13,8 +13,7 @@ import subprocess
+
+
+ _CURRENT_DIR = os.path.join(os.path.dirname(__file__))
+-_JAVA_PATH = os.path.join(_CURRENT_DIR, "..", "jdk", "current", "bin", "java")
+-assert os.path.isfile(_JAVA_PATH), "java only allowed in android builds"
++_JAVA_PATH = "java"
+
+ class Compiler(object):
+ """Runs the Closure compiler on given source files to typecheck them
diff --git a/chromium-93-ffmpeg-4.4-rest.patch b/chromium-93-ffmpeg-4.4-rest.patch
new file mode 100644
index 0000000..78a584b
--- /dev/null
+++ b/chromium-93-ffmpeg-4.4-rest.patch
@@ -0,0 +1,59 @@
+From: 52c3e9c0f140a8742034e107fb0f371c0d73bf1d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Marek=20Beh=C3=BAn?=
+Date: Sun, 12 Sep 2021 04:20:11 +0200
+Subject: [PATCH] chromium-93: fix building with system-ffmpeg
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The version of ffmpeg bundled in Chromium changed ABI a little, which
+affected the code in that the type of the last parameter of
+av_packet_get_side_data() is now size_t instead of int.
+
+This causes Chromium to fail to build with system-ffmpeg if the system
+ffmpeg's version does not yet have this ABI change.
+
+Fix the code to be able to compile with older ffmpeg as well.
+
+Signed-off-by: Marek Behún
+---
+ media/filters/audio_decoder_unittest.cc | 4 ++++
+ media/filters/ffmpeg_demuxer.cc | 16 ++++++++++++++++
+ 2 files changed, 20 insertions(+)
+
+Index: chromium-126.0.6478.8/media/filters/ffmpeg_demuxer.cc
+===================================================================
+--- chromium-126.0.6478.8.orig/media/filters/ffmpeg_demuxer.cc
++++ chromium-126.0.6478.8/media/filters/ffmpeg_demuxer.cc
+@@ -343,11 +343,19 @@
+ }
+
+ base::span GetSideData(const AVPacket* packet) {
++#if LIBAVUTIL_VERSION_MAJOR < 57
++ int side_data_size = 0;
++#else
+ size_t side_data_size = 0;
++#endif
+ uint8_t* side_data = av_packet_get_side_data(
+ packet, AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size);
+
++#if LIBAVUTIL_VERSION_MAJOR < 57
++ return base::span(side_data, base::checked_cast(side_data_size));
++#else
+ return base::span(side_data, side_data_size);
++#endif
+ }
+
+ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
+@@ -474,7 +482,11 @@
+ base::HeapArray::CopiedFrom(side_data);
+ }
+
++#if LIBAVUTIL_VERSION_MAJOR < 57
++ int skip_samples_size = 0;
++#else
+ size_t skip_samples_size = 0;
++#endif
+ const uint32_t* skip_samples_ptr =
+ reinterpret_cast(av_packet_get_side_data(
+ packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));
diff --git a/chromium-93-ffmpeg-4.4.patch b/chromium-93-ffmpeg-4.4.patch
new file mode 100644
index 0000000..a98164d
--- /dev/null
+++ b/chromium-93-ffmpeg-4.4.patch
@@ -0,0 +1,39 @@
+From: 52c3e9c0f140a8742034e107fb0f371c0d73bf1d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Marek=20Beh=C3=BAn?=
+Date: Sun, 12 Sep 2021 04:20:11 +0200
+Subject: [PATCH] chromium-93: fix building with system-ffmpeg
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The version of ffmpeg bundled in Chromium changed ABI a little, which
+affected the code in that the type of the last parameter of
+av_packet_get_side_data() is now size_t instead of int.
+
+This causes Chromium to fail to build with system-ffmpeg if the system
+ffmpeg's version does not yet have this ABI change.
+
+Fix the code to be able to compile with older ffmpeg as well.
+
+Signed-off-by: Marek Behún
+---
+ media/filters/audio_decoder_unittest.cc | 4 ++++
+ media/filters/ffmpeg_demuxer.cc | 16 ++++++++++++++++
+ 2 files changed, 20 insertions(+)
+
+Index: chromium-126.0.6478.8/media/filters/audio_decoder_unittest.cc
+===================================================================
+--- chromium-126.0.6478.8.orig/media/filters/audio_decoder_unittest.cc
++++ chromium-126.0.6478.8/media/filters/audio_decoder_unittest.cc
+@@ -109,7 +109,11 @@ void SetDiscardPadding(AVPacket* packet,
+ }
+
+ // If the timestamp is positive, try to use FFmpeg's discard data.
++#if LIBAVUTIL_VERSION_MAJOR < 57
++ int skip_samples_size = 0;
++#else
+ size_t skip_samples_size = 0;
++#endif
+ const uint32_t* skip_samples_ptr =
+ reinterpret_cast(av_packet_get_side_data(
+ packet, AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));
diff --git a/chromium-browser-rpmlintrc b/chromium-browser-rpmlintrc
new file mode 100644
index 0000000..0dca49f
--- /dev/null
+++ b/chromium-browser-rpmlintrc
@@ -0,0 +1 @@
+setBadness("permissions-file-setuid-bit", 0)
diff --git a/chromium-browser.desktop b/chromium-browser.desktop
new file mode 100644
index 0000000..94b3574
--- /dev/null
+++ b/chromium-browser.desktop
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Version=1.0
+Name=Chromium Web Browser
+Comment=Browse the World Wide Web
+GenericName=Web Browser
+Exec=chromium %u
+Terminal=false
+X-MultipleArgs=false
+Type=Application
+Icon=chromium-browser.png
+Categories=Network;WebBrowser;
+MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;
+StartupWMClass=Chromium
+
diff --git a/chromium-browser.sh b/chromium-browser.sh
new file mode 100644
index 0000000..937b534
--- /dev/null
+++ b/chromium-browser.sh
@@ -0,0 +1,117 @@
+#!/bin/sh
+
+# Chromium launcher
+
+# Authors:
+# Fabien Tassin
+# License: GPLv2 or later
+
+APPNAME=chromium
+LIBDIR=/usr/lib/chromium
+GDB=/usr/bin/gdb
+
+# Let the Chromium aware MeeGo desktop environment.
+# For system proxy setting integration.
+GNOME_DESKTOP_SESSION_ID="this-is-deprecated"
+export GNOME_DESKTOP_SESSION_ID
+
+usage () {
+ echo "$APPNAME [-h|--help] [-g|--debug] [options] [URL]"
+ echo
+ echo " -g or --debug Start within $GDB"
+ echo " -h or --help This help screen"
+}
+
+# FFmpeg needs to know where its libs are located
+if [ "Z$LD_LIBRARY_PATH" != Z ] ; then
+ LD_LIBRARY_PATH=$LIBDIR:$LD_LIBRARY_PATH
+else
+ LD_LIBRARY_PATH=$LIBDIR
+fi
+export LD_LIBRARY_PATH
+
+# xdg-settings should in PATH
+PATH=$PATH:$LIBDIR
+export PATH
+
+want_debug=0
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -h | --help | -help )
+ usage
+ exit 0 ;;
+ -g | --debug )
+ want_debug=1
+ shift ;;
+ -- ) # Stop option prcessing
+ shift
+ break ;;
+ * )
+ break ;;
+ esac
+done
+
+# Setup the default profile if this is none
+# Set the default theme as GTK+ with system window decoration
+if [ ! -d ~/.config/chromium/Default ]; then
+ mkdir -p ~/.config/chromium/Default
+ cat < ~/.config/chromium/Default/Preferences
+{
+ "browser": {
+ "custom_chrome_frame": false
+ },
+ "extensions": {
+ "theme": {
+ "colors": {
+
+ },
+ "id": "",
+ "images": {
+
+ },
+ "properties": {
+
+ },
+ "tints": {
+
+ },
+ "use_system": true
+ }
+ },
+ "homepage": "http://meego.com/",
+ "homepage_is_newtabpage": false,
+ "session": {
+ "restore_on_startup": 1
+ },
+ "webkit": {
+ "webprefs": {
+ "default_fixed_font_size": 13,
+ "default_font_size": 16,
+ "fixed_font_family": "Droid Sans Mono",
+ "sansserif_font_family": "Droid Sans",
+ "serif_font_family": "Droid Serif"
+ }
+ }
+}
+EOF
+ # Set the default browser
+ $LIBDIR/xdg-settings set default-web-browser chromium-browser.desktop
+fi
+
+if [ $want_debug -eq 1 ] ; then
+ if [ ! -x $GDB ] ; then
+ echo "Sorry, can't find usable $GDB. Please install it."
+ exit 1
+ fi
+ tmpfile=`mktemp /tmp/chromiumargs.XXXXXX` || { echo "Cannot create temporary file" >&2; exit 1; }
+ trap " [ -f \"$tmpfile\" ] && /bin/rm -f -- \"$tmpfile\"" 0 1 2 3 13 15
+ echo "set args ${1+"$@"}" > $tmpfile
+ echo "# Env:"
+ echo "# LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
+ echo "$GDB $LIBDIR/$APPNAME -x $tmpfile"
+ $GDB "$LIBDIR/$APPNAME" -x $tmpfile
+ exit $?
+else
+ exec $LIBDIR/$APPNAME "--password-store=detect" "--enable-experimental-extension-apis" "--enable-plugins" "--enable-extensions" "--enable-user-scripts" "--enable-printing" "--enable-sync" "--auto-ssl-client-auth" "$@"
+fi
+
diff --git a/chromium-browser.xml b/chromium-browser.xml
new file mode 100644
index 0000000..961c2fb
--- /dev/null
+++ b/chromium-browser.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ Chromium
+ chromium
+ chromium %s
+ chromium-browser
+ false
+ true
+ false
+ false
+
+
+
diff --git a/chromium-buildname.patch b/chromium-buildname.patch
new file mode 100644
index 0000000..0ac9ea9
--- /dev/null
+++ b/chromium-buildname.patch
@@ -0,0 +1,13 @@
+Index: chromium-73.0.3683.27/components/version_ui_strings.grdp
+===================================================================
+--- chromium-73.0.3683.27.orig/components/version_ui_strings.grdp
++++ chromium-73.0.3683.27/components/version_ui_strings.grdp
+@@ -7,7 +7,7 @@
+ Official Build
+
+
+- Developer Build
++ openSUSE Build
+
+
+ (32-bit)
diff --git a/chromium-codechanges-zlib.patch b/chromium-codechanges-zlib.patch
new file mode 100644
index 0000000..a4aed81
--- /dev/null
+++ b/chromium-codechanges-zlib.patch
@@ -0,0 +1,50 @@
+diff -up chromium/src/net/base/gzip_header.cc chromium/src/net/base/gzip_header.cc
+--- chromium/src/net/base/gzip_header.cc 2009-09-28 10:34:28.000000000 -0600
++++ chromium/src/net/base/gzip_header.cc 2009-11-24 17:23:22.000000000 -0700
+@@ -4,11 +4,11 @@
+
+ #include "net/base/gzip_header.h"
+
+-#if defined(USE_SYSTEM_ZLIB)
++/* #if defined(USE_SYSTEM_ZLIB) */
+ #include
+-#else
++/* #else
+ #include "third_party/zlib/zlib.h" // for Z_DEFAULT_COMPRESSION
+-#endif
++#endif */
+
+ #include "base/logging.h"
+
+diff -up chromium/src/net/base/sdch_filter_unittest.cc chromium/src/net/base/sdch_filter_unittest.cc
+--- chromium/src/net/base/sdch_filter_unittest.cc 2009-09-28 10:34:29.000000000 -0600
++++ chromium/src/net/base/sdch_filter_unittest.cc 2009-11-24 17:21:57.000000000 -0700
+@@ -8,11 +8,11 @@
+ #include
+ #include
+
+-#if defined(USE_SYSTEM_ZLIB)
++/* #if defined(USE_SYSTEM_ZLIB) */
+ #include
+-#else
++/* #else
+ #include "third_party/zlib/zlib.h"
+-#endif
++#endif */
+
+ #include "base/logging.h"
+ #include "base/memory/scoped_ptr.h"
+--- chromium/src/chrome/common/metrics_helpers.cc 2009-09-28 10:34:29.000000000 -0600
++++ chromium/src/chrome/common/metrics_helpers.cc 2009-11-24 17:21:57.000000000 -0700
+@@ -4,11 +4,7 @@
+
+ #include "chrome/common/metrics_helpers.h"
+
+-#if defined(USE_SYSTEM_LIBBZ2)
+ #include
+-#else
+-#include "third_party/bzip2/bzlib.h"
+-#endif
+
+ #include "base/base64.h"
+ #include "base/basictypes.h"
diff --git a/chromium-gcc46.patch b/chromium-gcc46.patch
new file mode 100644
index 0000000..906323d
--- /dev/null
+++ b/chromium-gcc46.patch
@@ -0,0 +1,100 @@
+--- chromium/src/ui/gfx/codec/jpeg_codec.h~ 2011-03-31 14:11:18.000000000 +0400
++++ chromium/src/ui/gfx/codec/jpeg_codec.h 2011-03-31 14:11:27.000000000 +0400
+@@ -8,6 +8,7 @@
+
+ #include
+ #include
++#include
+
+ #include "ui/base/ui_export.h"
+
+--- chromium/src/chrome/browser/search_engines/template_url_prepopulate_data.h 2011-03-31 14:48:03.000000000 +0400
++++ chromium/src/chrome/browser/search_engines/template_url_prepopulate_data.h 2011-03-31 14:49:52.000000000 +0400
+@@ -8,6 +8,7 @@
+
+ #include
+ #include
++#include
+
+ class GURL;
+ class PrefService;
+--- chromium/src/third_party/tcmalloc/chromium/src/common.cc~ 2011-03-29 20:46:14.000000000 +0400
++++ chromium/src/third_party/tcmalloc/chromium/src/common.cc 2011-03-29 20:47:02.000000000 +0400
+@@ -30,6 +30,7 @@
+ // ---
+ // Author: Sanjay Ghemawat
+
++#include
+ #include "config.h"
+ #include "common.h"
+ #include "system-alloc.h"
+--- chromium/src/third_party/libjingle/source/talk/base/sigslot.h~ 2011-03-31 13:43:11.000000000 +0400
++++ chromium/src/third_party/libjingle/source/talk/base/sigslot.h 2011-03-31 13:52:32.000000000 +0400
+@@ -81,6 +81,7 @@
+ #include
+ #include
+ #include
++#include
+
+ // On our copy of sigslot.h, we force single threading
+ #define SIGSLOT_PURE_ISO
+--- chromium/src/third_party/ots/src/os2.cc~ 2011-03-31 14:03:13.000000000 +0400
++++ chromium/src/third_party/ots/src/os2.cc 2011-03-31 14:03:25.000000000 +0400
+@@ -5,6 +5,7 @@
+ #include "os2.h"
+
+ #include "head.h"
++#include
+
+ // OS/2 - OS/2 and Windows Metrics
+ // http://www.microsoft.com/opentype/otspec/os2.htm
+--- chromium/src/third_party/tcmalloc/chromium/src/base/vdso_support.h~ 2011-03-29 23:20:20.000000000 +0400
++++ chromium/src/third_party/tcmalloc/chromium/src/base/vdso_support.h 2011-03-29 23:20:37.000000000 +0400
+@@ -38,6 +38,7 @@
+
+ #define HAVE_VDSO_SUPPORT 1
+
++#include
+ #include // for NULL
+ #include // for ElfW
+
+--- chromium/src/third_party/tcmalloc/chromium/src/base/stl_allocator.h~ 2011-03-31 12:53:13.000000000 +0400
++++ chromium/src/third_party/tcmalloc/chromium/src/base/stl_allocator.h 2011-03-31 12:53:32.000000000 +0400
+@@ -39,6 +39,7 @@
+
+ #include // for std::ptrdiff_t
+ #include
++#include
+
+ #include "base/logging.h"
+
+--- chromium/src/third_party/tcmalloc/chromium/src/symbolize.h~ 2011-03-31 12:58:42.000000000 +0400
++++ chromium/src/third_party/tcmalloc/chromium/src/symbolize.h 2011-03-31 12:59:00.000000000 +0400
+@@ -39,6 +39,7 @@
+ #endif
+ #include // for NULL
+ #include