[packages/cxx-rust-cssparser] - new - added two upstream patches - build without corrosion (corrosion build failed)

witekfl witekfl at pld-linux.org
Sat Jun 27 12:39:04 CEST 2026


commit 038f5375cec2758f3803458f6c729a4da8ea7da9
Author: Witold Filipczyk <witekfl at poczta.onet.pl>
Date:   Sat Jun 27 12:37:28 2026 +0200

    - new
    - added two upstream patches
    - build without corrosion (corrosion build failed)

 cxx-rust-cssparser.spec       | 104 ++++++++++++++++++++++++++++++++++++++++++
 no_underscores.patch          |  21 +++++++++
 use_corrosion_cxxbridge.patch |  74 ++++++++++++++++++++++++++++++
 3 files changed, 199 insertions(+)
---
diff --git a/cxx-rust-cssparser.spec b/cxx-rust-cssparser.spec
new file mode 100644
index 0000000..129d7b0
--- /dev/null
+++ b/cxx-rust-cssparser.spec
@@ -0,0 +1,104 @@
+#
+# Conditional build:
+%bcond_with	tests		# build with tests
+%define		kdeframever	6.27
+%define		qtver		5.15.2
+%define		kfname		kidletime
+
+Summary:	Library for parsing CSS
+Summary(pl.UTF-8):	Biblioteka do parsowania CSS
+Name:		cxx-rust-cssparser
+Version:	1.0.0
+Release:	1
+License:	LGPL
+Group:		Libraries
+Source0:	https://download.kde.org/stable/cxx-rust-cssparser/%{name}-%{version}.tar.xz
+# Source0-md5:	4302471a1d004501e8e1f5e8473befa0
+Source1:	%{name}-vendor-crates-%{version}.tar.xz
+# Source1-md5:	e0f32680846515cd13c3c3250a2ad51b
+Patch0:		use_corrosion_cxxbridge.patch
+Patch1:		no_underscores.patch
+URL:		https://www.kde.org/
+BuildRequires:	cargo
+BuildRequires:	cmake >= 3.22
+BuildRequires:	ninja
+BuildRequires:	rpmbuild(macros) >= 2.004
+BuildRequires:	rust
+BuildRequires:	tar >= 1:1.22
+BuildRequires:	xz
+BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+A C++ library for parsing CSS that uses the Rust cssparser crate
+internally.
+
+%description -l pl.UTF-8
+Biblioteka C++ do parsowania CSS, która używa wewnętrznie paczki Rust
+cssparser.
+
+%package devel
+Summary:	Header files for %{name} development
+Summary(pl.UTF-8):	Pliki nagłówkowe dla programistów używających %{name}
+Group:		X11/Development/Libraries
+Requires:	%{name} = %{version}-%{release}
+
+%description devel
+Header files for %{name} development.
+
+%description devel -l pl.UTF-8
+Pliki nagłówkowe dla programistów używających %{name}.
+
+%prep
+%setup -q -b1
+%patch -P0 -p1
+%patch -P1 -p1
+# Use our offline registry
+export CARGO_HOME="$(pwd)/rust/.cargo"
+
+mkdir -p "$CARGO_HOME"
+cat >rust/.cargo/config.toml <<EOF
+[source.crates-io]
+replace-with = 'vendored-sources'
+
+[source.vendored-sources]
+directory = '$PWD/rust/vendor'
+EOF
+
+%build
+export CARGO_HOME="$(pwd)/rust/.cargo"
+%cmake -B build \
+	-G Ninja \
+	%{!?with_tests:-DBUILD_TESTING=OFF} \
+	-DKDE_INSTALL_USE_QT_SYS_PATHS=ON \
+	-DUSE_CORROSION_CXXBRIDGE=OFF
+
+%ninja_build -C build
+
+%if %{with tests}
+%ninja_build -C build test
+%endif
+
+%install
+rm -rf $RPM_BUILD_ROOT
+export CARGO_HOME="$(pwd)/rust/.cargo"
+rm -rf $RPM_BUILD_ROOT
+%ninja_install -C build
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post	-p /sbin/ldconfig
+%postun	-p /sbin/ldconfig
+
+%files
+%defattr(644,root,root,755)
+%doc README.md
+%attr(755,root,root) %{_bindir}/cxx-rust-cssparser-parse
+%ghost %{_libdir}/libcxx-rust-cssparser.so.1
+%{_libdir}/libcxx-rust-cssparser.so.*.*
+
+%files devel
+%defattr(644,root,root,755)
+%{_includedir}/cxx-rust-cssparser
+%{_libdir}/cmake/cxx-rust-cssparser
+%{_libdir}/libcxx-rust-cssparser.so
diff --git a/no_underscores.patch b/no_underscores.patch
new file mode 100644
index 0000000..5361268
--- /dev/null
+++ b/no_underscores.patch
@@ -0,0 +1,21 @@
+commit 17e12236d06b5c55d232856042ccc667a8a05955
+Author: Arjen Hiemstra <ahiemstra at heimr.nl>
+Date:   Thu May 14 22:36:22 2026 +0200
+
+    Correct the include path used by the non-corrosion cxxbridge
+    
+    The non-corrosion cxxbridge doesn't use underscores for the target name.
+
+diff --git a/rust/CMakeLists.txt b/rust/CMakeLists.txt
+index 8f9f3d5..d174d72 100644
+--- a/rust/CMakeLists.txt
++++ b/rust/CMakeLists.txt
+@@ -20,7 +20,7 @@ else()
+     set(_bridge_include_dir ${CMAKE_CURRENT_BINARY_DIR}/corrosion_generated/cxxbridge)
+     file(MAKE_DIRECTORY ${_bridge_include_dir}/cxx-rust-cssparser-impl-bridge)
+     file(WRITE ${_bridge_include_dir}/cxx-rust-cssparser-impl-bridge/ffi.h
+-        "#pragma once\n#include \"${_cxxbridge_dir}/cxx_rust_cssparser_impl/src/ffi.rs.h\"\n"
++        "#pragma once\n#include \"${_cxxbridge_dir}/cxx-rust-cssparser-impl/src/ffi.rs.h\"\n"
+     )
+ 
+     target_include_directories(cxx_rust_cssparser_impl INTERFACE ${_bridge_include_dir})
diff --git a/use_corrosion_cxxbridge.patch b/use_corrosion_cxxbridge.patch
new file mode 100644
index 0000000..8ef2cc1
--- /dev/null
+++ b/use_corrosion_cxxbridge.patch
@@ -0,0 +1,74 @@
+commit 566b92ac4746d4c59eab14112efdc31737b922c7
+Author: Arjen Hiemstra <ahiemstra at heimr.nl>
+Date:   Thu May 14 22:35:52 2026 +0200
+
+    Make an option for toggling using corrosion for bridge building
+    
+    Rather than only switching based on whether we're building a flatpak or
+    not.
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f91dbc6..536fb92 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -32,6 +32,8 @@ if (BUILD_DOCS)
+     include(ECMGenerateQDoc)
+ endif()
+ 
++option(USE_CORROSION_CXXBRIDGE "Use corrosion to build the CXX bridge" ON)
++
+ set(CMAKE_CXX_STANDARD 20)
+ set(CMAKE_AUTOMOC FALSE)
+ set(CMAKE_AUTORCC FALSE)
+diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
+index 16c46a0..a81165b 100644
+--- a/cpp/CMakeLists.txt
++++ b/cpp/CMakeLists.txt
+@@ -28,10 +28,10 @@ target_sources(cxx-rust-cssparser PUBLIC
+     ${CMAKE_CURRENT_BINARY_DIR}/cssparser_export.h
+ )
+ 
+-if(DEFINED ENV{FLATPAK_ID})
+-    target_link_libraries(cxx-rust-cssparser PRIVATE cxx_rust_cssparser_impl)
+-else()
++if (USE_CORROSION_CXXBRIDGE)
+     target_link_libraries(cxx-rust-cssparser PRIVATE cxx-rust-cssparser-impl-bridge)
++else()
++    target_link_libraries(cxx-rust-cssparser PRIVATE cxx_rust_cssparser_impl)
+ endif()
+ 
+ target_include_directories(cxx-rust-cssparser PUBLIC
+diff --git a/rust/CMakeLists.txt b/rust/CMakeLists.txt
+index 594abb1..8f9f3d5 100644
+--- a/rust/CMakeLists.txt
++++ b/rust/CMakeLists.txt
+@@ -3,7 +3,14 @@
+ 
+ corrosion_import_crate(MANIFEST_PATH Cargo.toml)
+ 
+-if(DEFINED ENV{FLATPAK_ID})
++if (USE_CORROSION_CXXBRIDGE)
++    corrosion_add_cxxbridge(cxx-rust-cssparser-impl-bridge
++        CRATE cxx_rust_cssparser_impl
++        FILES ffi.rs
++    )
++
++    set_target_properties(cxx-rust-cssparser-impl-bridge PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
++else()
+     # Flatpak: use cxx_build output directly instead of corrosion_add_cxxbridge.
+     string(SHA1 _cargo_path_hash ${CMAKE_CURRENT_SOURCE_DIR}/Cargo.toml)
+     string(SUBSTRING "${_cargo_path_hash}" 0 5 _cargo_path_hash)
+@@ -17,13 +24,6 @@ if(DEFINED ENV{FLATPAK_ID})
+     )
+ 
+     target_include_directories(cxx_rust_cssparser_impl INTERFACE ${_bridge_include_dir})
+-else()
+-    corrosion_add_cxxbridge(cxx-rust-cssparser-impl-bridge
+-        CRATE cxx_rust_cssparser_impl
+-        FILES ffi.rs
+-    )
+-
+-    set_target_properties(cxx-rust-cssparser-impl-bridge PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
+ endif()
+ 
+ if (BUILD_TESTING)
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/cxx-rust-cssparser.git/commitdiff/038f5375cec2758f3803458f6c729a4da8ea7da9



More information about the pld-cvs-commit mailing list