Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:zhmars:arch
chromium122
0001-231128-Remove-enable_rust_qr-build-flag.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-231128-Remove-enable_rust_qr-build-flag.patch of Package chromium122
diff --git a/build/config/rust.gni b/build/config/rust.gni index 814c455..f124170 100644 --- a/build/config/rust.gni +++ b/build/config/rust.gni @@ -92,6 +92,9 @@ declare_args() { # Support for chrome://crash-rust to check crash dump collection works. enable_rust_crash = enable_rust + # Support for QR code generation - see https://crbug.com/1431991. + enable_rust_qr = enable_rust + # Support for Rust mojo bindings. enable_rust_mojo = enable_rust && enable_all_rust_features diff --git a/components/qr_code_generator/BUILD.gn b/components/qr_code_generator/BUILD.gn index dddcc72..c4ee062 100644 --- a/components/qr_code_generator/BUILD.gn +++ b/components/qr_code_generator/BUILD.gn @@ -11,6 +11,11 @@ declare_args() { enable_qr_print = false } +buildflag_header("rust_buildflags") { + header = "rust_buildflags.h" + flags = [ "ENABLE_RUST_QR=$enable_rust_qr" ] +} + # Separate target to: # - Limit `visibility` (stricter than dir-level `DEPS` would allow) # - Allow `//chrome/services/qr_code_generator_service/public/cpp` to check the @@ -23,7 +28,10 @@ source_set("qr_code_generator_features") { "features.cc", "features.h", ] - deps = [ "//base" ] + deps = [ + ":rust_buildflags", + "//base", + ] visibility = [ ":qr_code_generator", ":unit_tests", @@ -39,19 +47,27 @@ source_set("qr_code_generator") { ] deps = [ ":qr_code_generator_features", - ":qr_code_generator_ffi_glue", + ":rust_buildflags", "//base", ] + if (enable_rust_qr) { + deps += [ + ":qr_code_generator_ffi_glue", + "//build/rust:cxx_cppdeps", + ] + } public_deps = [ "//base" ] } -rust_static_library("qr_code_generator_ffi_glue") { - allow_unsafe = true # Needed for FFI that underpins the `cxx` crate. - crate_root = "qr_code_generator_ffi_glue.rs" - sources = [ "qr_code_generator_ffi_glue.rs" ] - cxx_bindings = [ "qr_code_generator_ffi_glue.rs" ] - visibility = [ ":qr_code_generator" ] - deps = [ "//third_party/rust/qr_code/v2:lib" ] +if (enable_rust_qr) { + rust_static_library("qr_code_generator_ffi_glue") { + allow_unsafe = true # Needed for FFI that underpins the `cxx` crate. + crate_root = "qr_code_generator_ffi_glue.rs" + sources = [ "qr_code_generator_ffi_glue.rs" ] + cxx_bindings = [ "qr_code_generator_ffi_glue.rs" ] + visibility = [ ":qr_code_generator" ] + deps = [ "//third_party/rust/qr_code/v2:lib" ] + } } source_set("unit_tests") { @@ -60,6 +76,7 @@ source_set("unit_tests") { deps = [ ":qr_code_generator", ":qr_code_generator_features", + ":rust_buildflags", "//base", "//base/test:test_support", "//testing/gtest", diff --git a/components/qr_code_generator/features.h b/components/qr_code_generator/features.h index 4458662..47388bf 100644 --- a/components/qr_code_generator/features.h +++ b/components/qr_code_generator/features.h @@ -6,6 +6,7 @@ #define COMPONENTS_QR_CODE_GENERATOR_FEATURES_H_ #include "base/feature_list.h" +#include "components/qr_code_generator/rust_buildflags.h" namespace qr_code_generator { @@ -13,8 +14,10 @@ namespace qr_code_generator { // but product code should instead use `IsRustyQrCodeGeneratorFeatureEnabled`. BASE_DECLARE_FEATURE(kRustyQrCodeGeneratorFeature); -// Returns true if Rust should be used for QR code generation - i.e. if -// the `"RustyQrCodeGenerator"` base::Feature has been enabled. +// Returns true if Rust should be used for QR code generation: +// 1) the GN-level `enable_rust_qr` is true. +// *and* +// 2) the `"RustyQrCodeGenerator"` base::Feature has been enabled. // // If Rust is used for QR code generation then: // 1) //components/qr_code_generator becomes a thin wrapper around a 3rd-party @@ -26,7 +29,11 @@ BASE_DECLARE_FEATURE(kRustyQrCodeGeneratorFeature); // See https://crbug.com/1431991 for more details about the feature and the // Rust QR Code Generator project. inline bool IsRustyQrCodeGeneratorFeatureEnabled() { +#if BUILDFLAG(ENABLE_RUST_QR) return base::FeatureList::IsEnabled(kRustyQrCodeGeneratorFeature); +#else + return false; +#endif } } // namespace qr_code_generator diff --git a/components/qr_code_generator/qr_code_generator.cc b/components/qr_code_generator/qr_code_generator.cc index 6b0eca3..6549af2 100644 --- a/components/qr_code_generator/qr_code_generator.cc +++ b/components/qr_code_generator/qr_code_generator.cc @@ -11,12 +11,15 @@ #include <vector> #include "base/check_op.h" -#include "base/containers/span_rust.h" #include "base/memory/raw_ptr.h" #include "base/notreached.h" #include "base/numerics/safe_conversions.h" #include "components/qr_code_generator/features.h" + +#if BUILDFLAG(ENABLE_RUST_QR) +#include "base/containers/span_rust.h" #include "components/qr_code_generator/qr_code_generator_ffi_glue.rs.h" +#endif namespace qr_code_generator { @@ -572,6 +575,7 @@ size_t SegmentSpanLength(base::span<const QRCodeGenerator::Segment> segments) { return sum; } +#if BUILDFLAG(ENABLE_RUST_QR) absl::optional<QRCodeGenerator::GeneratedCode> GenerateQrCodeUsingRust( base::span<const uint8_t> in, absl::optional<int> min_version) { @@ -593,6 +597,7 @@ absl::optional<QRCodeGenerator::GeneratedCode> GenerateQrCodeUsingRust( CHECK_EQ(code.data.size(), static_cast<size_t>(code.qr_size * code.qr_size)); return code; } +#endif } // namespace @@ -615,7 +620,11 @@ absl::optional<QRCodeGenerator::GeneratedCode> QRCodeGenerator::Generate( } if (IsRustyQrCodeGeneratorFeatureEnabled()) { +#if BUILDFLAG(ENABLE_RUST_QR) return GenerateQrCodeUsingRust(in, min_version); +#else + CHECK(false); // The `if` condition guarantees `ENABLE_RUST_QR`. +#endif } std::vector<Segment> segments; diff --git a/components/qr_code_generator/qr_code_generator_unittest.cc b/components/qr_code_generator/qr_code_generator_unittest.cc index adf4d20..7d3323f 100644 --- a/components/qr_code_generator/qr_code_generator_unittest.cc +++ b/components/qr_code_generator/qr_code_generator_unittest.cc @@ -286,9 +286,12 @@ TEST_P(QRCodeGeneratorTest, HugeInput) { ASSERT_FALSE(qr.Generate(huge_input)); } +#if BUILDFLAG(ENABLE_RUST_QR) INSTANTIATE_TEST_SUITE_P(RustEnabled, QRCodeGeneratorTest, ::testing::Values(RustFeatureState::kRustEnabled)); +#endif + INSTANTIATE_TEST_SUITE_P(RustDisabled, QRCodeGeneratorTest, ::testing::Values(RustFeatureState::kRustDisabled));
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor