commit 0f503fabde57ad75492cd375dfd133ca06eac4d3 Author: tigro Date: Mon Jan 15 23:00:27 2024 +0300 import rust-tree-sitter-0.20.9-1.el9 diff --git a/.rust-tree-sitter.metadata b/.rust-tree-sitter.metadata new file mode 100644 index 0000000..e69de29 diff --git a/SOURCES/LICENSE.upstream b/SOURCES/LICENSE.upstream new file mode 100644 index 0000000..4c22002 --- /dev/null +++ b/SOURCES/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/SOURCES/binding_rust-regenerate-bindings-during-build.patch b/SOURCES/binding_rust-regenerate-bindings-during-build.patch new file mode 100644 index 0000000..d421f01 --- /dev/null +++ b/SOURCES/binding_rust-regenerate-bindings-during-build.patch @@ -0,0 +1,110 @@ +From 801d1f702ff46ee7f0219d9c9ac427f22e1a9a9a Mon Sep 17 00:00:00 2001 +From: Aleksei Bavshin +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 +--- + lib/Cargo.toml | 1 + + lib/binding_rust/build.rs | 24 ++++++++++++++++++++++++ + lib/binding_rust/ffi.rs | 2 +- + lib/binding_rust/lib.rs | 5 +++-- + 4 files changed, 29 insertions(+), 3 deletions(-) + +diff --git a/Cargo.toml b/Cargo.toml +index d096efdc..c318cd34 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -46,5 +46,8 @@ + [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 934915fe..44417c77 100644 +--- a/binding_rust/lib.rs ++++ b/binding_rust/lib.rs +@@ -26,12 +26,13 @@ use std::{ + /// The Tree-sitter library is generally backwards-compatible with languages + /// generated using older CLI versions, but is not forwards-compatible. + #[doc(alias = "TREE_SITTER_LANGUAGE_VERSION")] +-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. + #[doc(alias = "TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION")] +-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.37.1 + diff --git a/SOURCES/tree-sitter-0.20.9.crate b/SOURCES/tree-sitter-0.20.9.crate new file mode 100644 index 0000000..10415cf Binary files /dev/null and b/SOURCES/tree-sitter-0.20.9.crate differ diff --git a/SPECS/rust-tree-sitter.spec b/SPECS/rust-tree-sitter.spec new file mode 100644 index 0000000..285582b --- /dev/null +++ b/SPECS/rust-tree-sitter.spec @@ -0,0 +1,123 @@ +## START: Set by rpmautospec +## (rpmautospec version 0.3.0) +%define autorelease(e:s:pb:n) %{?-p:0.}%{lua: + release_number = 1; + base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); + print(release_number + base_release_number - 1); +}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} +## END: Set by rpmautospec + +# Generated by rust2rpm 22 +%bcond_without check +%global debug_package %{nil} + +%global crate tree-sitter +# The bindings version does not match the C library version. +%global ts_ver 0.20.7 + +Name: rust-tree-sitter +Version: 0.20.9 +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%{ts_ver}/LICENSE#/LICENSE.upstream +# 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) = %{ts_ver} +# 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 +* Mon Jan 15 2024 Arkady L. Shane - 0.20.9-1 +- Rebuilt for MSVSphere 9.3 + +* Mon Sep 05 2022 Aleksei Bavshin 0.20.9-1 +- Update to 0.20.9 (#2100278) + +* Sat Jul 23 2022 Fedora Release Engineering 0.20.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Fri Apr 01 2022 Aleksei Bavshin 0.20.6-1 +- Update to 0.20.6 + +* Wed Mar 23 2022 Aleksei Bavshin 0.20.2-2 +- Add patch to address test failures on s390x + +* Fri Feb 25 2022 Aleksei Bavshin 0.20.2-1 +- Initial import (#2028895)