The package rpms/rust-tree-sitter.git has added or updated architecture specific content
in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/rust-tree-sitter.git/commit/?id=7....
Change:
+ExclusiveArch: %{rust_arches}
Thanks.
Full change:
============
commit c6742bd0c1e6babf2420ad3cfea3dd99de1e2737
Author: Aleksei Bavshin <alebastr(a)fedoraproject.org>
Date: Fri Apr 1 00:53:03 2022 -0700
Update to 0.20.6
diff --git a/rust-tree-sitter.spec b/rust-tree-sitter.spec
index 9ad36e0..20ed7f4 100644
--- a/rust-tree-sitter.spec
+++ b/rust-tree-sitter.spec
@@ -5,7 +5,7 @@
%global crate tree-sitter
Name: rust-%{crate}
-Version: 0.20.2
+Version: 0.20.6
Release: %autorelease
Summary: Rust bindings to the Tree-sitter parsing library
diff --git a/sources b/sources
index 1496289..4ab0e90 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (tree-sitter-0.20.2.crate) =
498a6a8add5c79d81add11af76b679322150ab87fb55171aeeaf279b44841ac9afb0ddfe3edb10f67979dacb7c37a1039a32ac4e516270e57e28fb1c020bd284
+SHA512 (tree-sitter-0.20.6.crate) =
b1c7425db2903b889c90cd283ab557ad34d0dead01ec1313571fd537f2b783df88849caf4f253d27c65cd84fc43eeb3c5073e2df876b5a5d716186563b37b92a
commit c616536d51835f7f444155cfd1ea9e56dd13d638
Author: Aleksei Bavshin <alebastr(a)fedoraproject.org>
Date: Wed Mar 23 00:11:07 2022 -0700
Add patch to address test failures on s390x
diff --git a/lib-fix-incorrect-int-ptr-cast-on-big-endian-archite.patch
b/lib-fix-incorrect-int-ptr-cast-on-big-endian-archite.patch
new file mode 100644
index 0000000..4010794
--- /dev/null
+++ b/lib-fix-incorrect-int-ptr-cast-on-big-endian-archite.patch
@@ -0,0 +1,49 @@
+From fe33599f4695c4ab442e1e5f8682cfda11321308 Mon Sep 17 00:00:00 2001
+From: Aleksei Bavshin <alebastr89(a)gmail.com>
+Date: Tue, 22 Mar 2022 22:47:21 -0700
+Subject: [PATCH] lib: fix incorrect int ptr cast on big-endian architectures
+
+`*usize` -> `*u32` conversion on 64-bit big-endian machine takes high
+halfword of the value. As a consequence, any result returned via
+`count` is unexpectedly shifted left:
+
+ u32 = 00 00 00 01 // 1
+ usize = 00 00 00 01 00 00 00 00 // 4294967296
+
+Fixes following test failure:
+```
+$ cargo test -- tests::corpus_test
+<...>
+running 13 tests
+memory allocation of 206158430208 bytes failed
+error: test failed, to rerun pass '--lib'
+```
+---
+ lib/binding_rust/lib.rs | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/binding_rust/lib.rs b/binding_rust/lib.rs
+index e88a411c..1df9e7ac 100644
+--- a/binding_rust/lib.rs
++++ b/binding_rust/lib.rs
+@@ -705,14 +705,14 @@ impl Tree {
+ /// after calling one of the [Parser::parse] functions. Call it on the old tree
that
+ /// was passed to parse, and pass the new tree that was returned from `parse`.
+ pub fn changed_ranges(&self, other: &Tree) -> impl
ExactSizeIterator<Item = Range> {
+- let mut count = 0;
++ let mut count = 0u32;
+ unsafe {
+ let ptr = ffi::ts_tree_get_changed_ranges(
+ self.0.as_ptr(),
+ other.0.as_ptr(),
+- &mut count as *mut _ as *mut u32,
++ &mut count as *mut u32,
+ );
+- util::CBufferIter::new(ptr, count).map(|r| r.into())
++ util::CBufferIter::new(ptr, count as usize).map(|r| r.into())
+ }
+ }
+ }
+--
+2.35.1
+
diff --git a/rust-tree-sitter.spec b/rust-tree-sitter.spec
index 8de80bd..9ad36e0 100644
--- a/rust-tree-sitter.spec
+++ b/rust-tree-sitter.spec
@@ -18,6 +18,8 @@ Source: %{crates_source}
Source1:
https://github.com/tree-sitter/tree-sitter/raw/v%{version}/LICENSE#/LICEN...
# tree-sitter/tree-sitter#1524 modified to apply to the crate source
Patch0: binding_rust-regenerate-bindings-during-build.patch
+# fix tree-sitter-cli tests on s390x - tree-sitter/tree-sitter#1692
+Patch1: lib-fix-incorrect-int-ptr-cast-on-big-endian-archite.patch
ExclusiveArch: %{rust_arches}
commit 7f84b8a67e7271a5071f1f6ad87fe625f2967ce5
Author: Aleksei Bavshin <alebastr(a)fedoraproject.org>
Date: Thu Feb 24 20:47:08 2022 -0800
Initial import (#2028895)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1e13678
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.crate
+*.src.rpm
+results_*/
diff --git a/LICENSE.upstream b/LICENSE.upstream
new file mode 100644
index 0000000..4c22002
--- /dev/null
+++ b/LICENSE.upstream
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2018-2021 Max Brunsfeld
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/binding_rust-regenerate-bindings-during-build.patch
b/binding_rust-regenerate-bindings-during-build.patch
new file mode 100644
index 0000000..e9e8129
--- /dev/null
+++ b/binding_rust-regenerate-bindings-during-build.patch
@@ -0,0 +1,109 @@
+From 545f8b98b8f614869e5e836c5a05091dfd5472c6 Mon Sep 17 00:00:00 2001
+From: Aleksei Bavshin <alebastr89(a)gmail.com>
+Date: Sun, 5 Dec 2021 16:08:59 -0800
+Subject: [PATCH] binding_rust: generate bindings during build
+
+Bindgen output is platform- and architecture-dependent. Pre-generated
+bindings may cause issues on the machines different from the one used
+for generating the code.
+
+The recommended way[1] to use bindgen is to invoke it from `build.rs`.
+
+[1]:
https://rust-lang.github.io/rust-bindgen/library-usage.html
+---
+ Cargo.lock | 155 +++++++++++++++++++++++++++++++++++++-
+ lib/Cargo.toml | 1 +
+ lib/binding_rust/build.rs | 24 ++++++
+ lib/binding_rust/ffi.rs | 2 +-
+ lib/binding_rust/lib.rs | 5 +-
+ 5 files changed, 183 insertions(+), 4 deletions(-)
+
+diff --git a/Cargo.toml b/Cargo.toml
+index ed173fdf7..3ab8f52b7 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -31,5 +31,7 @@
+
+ [dependencies.regex]
+ version = "1"
++[build-dependencies.bindgen]
++version = "0.59.1"
+ [build-dependencies.cc]
+ version = "^1.0.58"
+diff --git a/binding_rust/build.rs b/binding_rust/build.rs
+index 5798cde3..34736b53 100644
+--- a/binding_rust/build.rs
++++ b/binding_rust/build.rs
+@@ -1,6 +1,28 @@
+ use std::path::{Path, PathBuf};
+ use std::{env, fs};
+
++fn generate_bindings() {
++ const HEADER_FILE: &'static str = "include/tree_sitter/api.h";
++
++ println!("cargo:rerun-if-changed={}", HEADER_FILE);
++ let bindings = bindgen::Builder::default()
++ .header(HEADER_FILE)
++ .layout_tests(false)
++ .allowlist_type("^TS.*")
++ .allowlist_function("^ts_.*")
++ .allowlist_var("^TREE_SITTER.*")
++ .blocklist_function("ts_tree_print_dot_graph")
++ .opaque_type("FILE")
++ .size_t_is_usize(true)
++ .generate()
++ .expect("Unable to generate bindings");
++
++ let output = PathBuf::from(env::var("OUT_DIR").unwrap());
++ bindings
++ .write_to_file(output.join("bindings.rs"))
++ .expect("Unable to write bindings");
++}
++
+ fn main() {
+ println!("cargo:rerun-if-env-changed=TREE_SITTER_STATIC_ANALYSIS");
+ if env::var("TREE_SITTER_STATIC_ANALYSIS").is_ok() {
+@@ -17,6 +39,8 @@ fn main() {
+ }
+ }
+
++ generate_bindings();
++
+ let src_path = Path::new("src");
+ for entry in fs::read_dir(&src_path).unwrap() {
+ let entry = entry.unwrap();
+diff --git a/binding_rust/ffi.rs b/binding_rust/ffi.rs
+index 685ed765..5cf93180 100644
+--- a/binding_rust/ffi.rs
++++ b/binding_rust/ffi.rs
+@@ -2,7 +2,7 @@
+ #![allow(non_upper_case_globals)]
+ #![allow(non_camel_case_types)]
+
+-include!("./bindings.rs");
++include!(concat!(env!("OUT_DIR"),"/bindings.rs"));
+
+ extern "C" {
+ pub(crate) fn dup(fd: std::os::raw::c_int) -> std::os::raw::c_int;
+diff --git a/binding_rust/lib.rs b/binding_rust/lib.rs
+index cf8437b8..35205cee 100644
+--- a/binding_rust/lib.rs
++++ b/binding_rust/lib.rs
+@@ -25,11 +25,12 @@ use std::{
+ /// assigned an ABI version number that corresponds to the current CLI version.
+ /// The Tree-sitter library is generally backwards-compatible with languages
+ /// generated using older CLI versions, but is not forwards-compatible.
+-pub const LANGUAGE_VERSION: usize = ffi::TREE_SITTER_LANGUAGE_VERSION;
++pub const LANGUAGE_VERSION: usize = ffi::TREE_SITTER_LANGUAGE_VERSION as usize;
+
+ /// The earliest ABI version that is supported by the current version of the
+ /// library.
+-pub const MIN_COMPATIBLE_LANGUAGE_VERSION: usize =
ffi::TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION;
++pub const MIN_COMPATIBLE_LANGUAGE_VERSION: usize =
++ ffi::TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION as usize;
+
+ pub const PARSER_HEADER: &'static str =
include_str!("../include/tree_sitter/parser.h");
+
+--
+2.33.1
+
diff --git a/rust-tree-sitter.spec b/rust-tree-sitter.spec
new file mode 100644
index 0000000..8de80bd
--- /dev/null
+++ b/rust-tree-sitter.spec
@@ -0,0 +1,96 @@
+# Generated by rust2rpm 21
+%bcond_without check
+%global debug_package %{nil}
+
+%global crate tree-sitter
+
+Name: rust-%{crate}
+Version: 0.20.2
+Release: %autorelease
+Summary: Rust bindings to the Tree-sitter parsing library
+
+# Upstream license specification: MIT
+# Bundled ICU sources: Unicode
+License: MIT and Unicode
+URL:
https://crates.io/crates/tree-sitter
+Source: %{crates_source}
+# Upstream license file - tree-sitter/tree-sitter#1520
+Source1:
https://github.com/tree-sitter/tree-sitter/raw/v%{version}/LICENSE#/LICEN...
+# tree-sitter/tree-sitter#1524 modified to apply to the crate source
+Patch0: binding_rust-regenerate-bindings-during-build.patch
+
+ExclusiveArch: %{rust_arches}
+
+BuildRequires: rust-packaging >= 21
+
+%global _description %{expand:
+Rust bindings to the Tree-sitter parsing library.}
+
+%description %{_description}
+
+%package devel
+Summary: %{summary}
+BuildArch: noarch
+# The create contains a bundled copy of the tree-sitter C library.
+Provides: bundled(tree-sitter) = %{version}
+# The tree-sitter C library contains a small subset of files from the ICU library
+Provides: bundled(icu) = 65.1
+
+%description devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "%{crate}" crate.
+
+%files devel
+%license %{crate_instdir}/LICENSE
+%license %{crate_instdir}/src/unicode/LICENSE
+%{crate_instdir}/
+
+%package -n %{name}+default-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+default-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "default" feature of the "%{crate}" crate.
+
+%files -n %{name}+default-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%package -n %{name}+lazy_static-devel
+Summary: %{summary}
+BuildArch: noarch
+
+%description -n %{name}+lazy_static-devel %{_description}
+
+This package contains library source intended for building other packages which
+use the "lazy_static" feature of the "%{crate}" crate.
+
+%files -n %{name}+lazy_static-devel
+%ghost %{crate_instdir}/Cargo.toml
+
+%prep
+%autosetup -n %{crate}-%{version_no_tilde} -p1
+%cargo_prep
+# drop pre-generated bindings; we don't want to accidentally use these
+rm -f binding_rust/bindings.rs
+
+%generate_buildrequires
+%cargo_generate_buildrequires
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+# prepare upstream license file for %%license
+install -D -m 0644 -pv %{SOURCE1} %{buildroot}%{crate_instdir}/LICENSE
+
+%if %{with check}
+%check
+%cargo_test
+%endif
+
+%changelog
+%autochangelog
diff --git a/sources b/sources
new file mode 100644
index 0000000..1496289
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (tree-sitter-0.20.2.crate) =
498a6a8add5c79d81add11af76b679322150ab87fb55171aeeaf279b44841ac9afb0ddfe3edb10f67979dacb7c37a1039a32ac4e516270e57e28fb1c020bd284