%global llama_hash efbd009 Name: tabby Version: 0.7.0 Release: %autorelease Summary: Is a self-hosted AI coding assistant Url: https://github.com/TabbyML/tabby License: Apache-2.0 Source0: https://github.com/TabbyML/tabby/archive/refs/tags/v%{version}/%{name}-%{version}.tar.gz Source1: https://github.com/TabbyML/llama.cpp/archive/%{llama_hash}/tabby_llama.cpp-%{llama_hash}.tar.gz BuildRequires: protobuf-compiler openblas-devel cargo-rpm-macros >= 24 #BuildRequires: crate(anyhow/default) crate(argon2/default) crate(async-stream/default) crate(async-trait/default) #BuildRequires: crate(axum-prometheus/default) crate(axum-streams/default) crate(axum-streams/json) crate(axum-tracing-opentelemetry/default) #BuildRequires: crate(axum/default) crate(axum/headers) crate(axum/ws) crate(bincode/default) crate(cargo-lock/default) #BuildRequires: crate(cargo-lock/dependency-tree) crate(chrono/default) crate(chrono/default) crate(clap/cargo) crate(clap/default) #BuildRequires: crate(clap/default) crate(clap/derive) crate(clap/string) crate(cmake/default) crate(custom_error/default) #BuildRequires: crate(cxx-build/default) crate(cxx/default) crate(dashmap/default) crate(derive_builder/default) crate(dotenvy/default) #BuildRequires: crate(file-rotate/default) crate(filenamify/default) crate(futures-util/default) crate(futures/default) crate(glob/default) #BuildRequires: crate(home/default) crate(hyper/client) crate(hyper/default) crate(ignore/default) crate(indicatif/default) crate(job_scheduler/default) #BuildRequires: crate(jsonwebtoken/default) crate(juniper/default) crate(juniper_graphql_ws/default) crate(kdam/default) crate(lazy_static/default) #BuildRequires: crate(mime_guess/default) crate(minijinja/default) crate(minijinja/loader) crate(netrc/default) crate(nvml-wrapper/default) #BuildRequires: crate(opentelemetry-otlp/default) crate(opentelemetry/default) crate(opentelemetry/rt-tokio) crate(pin-project/default) #BuildRequires: crate(regex/default) crate(requirements/default) crate(reqwest/default) crate(reqwest/json) crate(reqwest/stream) #BuildRequires: crate(rusqlite/bundled) crate(rusqlite/chrono) crate(rusqlite/default) crate(rusqlite_migration/alpha-async-tokio-rusqlite) #BuildRequires: crate(rusqlite_migration/default) crate(rust-embed/default) crate(serde-jsonlines/default) crate(serde/default) #BuildRequires: crate(serde/derive) crate(serde_json/default) crate(serdeconv/default) crate(sha2/default) crate(sha256/default) #BuildRequires: crate(strfmt/default) crate(strum/default) crate(strum/derive) crate(sysinfo/default) crate(tantivy/default) #BuildRequires: crate(tarpc/default) crate(tarpc/serde-transport) crate(textdistance/default) crate(thiserror/default) #BuildRequires: crate(tokio-cron-scheduler/default) crate(tokio-retry/default) crate(tokio-rusqlite/default) #BuildRequires: crate(tokio-tungstenite/default) crate(tokio-util/default) crate(tokio-util/full) crate(tokio/default) crate(tokio/fs) #BuildRequires: crate(tokio/full) crate(tokio/rt) crate(tower-http/cors) crate(tower-http/default) crate(tower-http/fs) crate(tower-http/timeout) #BuildRequires: crate(tower-http/trace) crate(tower/default) crate(tower/util) crate(tracing-opentelemetry/default) crate(tracing-subscriber/default) #BuildRequires: crate(tracing/default) crate(tree-sitter-go/default) crate(tree-sitter-java/default) crate(tree-sitter-kotlin/default) #BuildRequires: crate(tree-sitter-python/default) crate(tree-sitter-ruby/default) crate(tree-sitter-rust/default) crate(tree-sitter-tags/default) #BuildRequires: crate(tree-sitter-typescript/default) crate(unicase/default) crate(url-parse/default) crate(utoipa-swagger-ui/axum) crate(utoipa-swagger-ui/default) #BuildRequires: crate(utoipa/axum_extras) crate(utoipa/default) crate(utoipa/preserve_order) crate(uuid/default) crate(uuid/default) #BuildRequires: crate(uuid/fast-rng) crate(uuid/macro-diagnostics) crate(uuid/v4) crate(uuid/v4) crate(validator/default) crate(validator/derive) #BuildRequires: crate(vergen/build) crate(vergen/default) crate(vergen/git) crate(vergen/gitcl) Requires: openblas %description Tabby is a self-hosted AI coding assistant, offering an open-source and on-premises alternative to GitHub Copilot. %prep %autosetup -n tabby-%{version} -p1 #FIXME do not works %%setup -q -D -T -b 1 -n crates/llama-cpp-bindings/llama.cpp # using classical bash tools mkdir -p crates/llama-cpp-bindings/llama.cpp tar -xzvf %{SOURCE1} -C %{_builddir}/%{name}-%{version}/crates/llama-cpp-bindings/llama.cpp --strip-components=1 %cargo_prep %generate_buildrequires %cargo_generate_buildrequires %build %cargo_build %{cargo_license_summary} %{cargo_license} > LICENSE.dependencies %install %cargo_install %if %{with check} %check %cargo_test %endif %files %license LICENSE %license clients/tabby-agent/LICENSE %license clients/tabby-agent/wasm/LICENSES %license clients/vim/LICENSE %license clients/vscode/LICENSE %license crates/aim-downloader/LICENCE.md %license crates/juniper-axum/LICENSE %license crates/llama-cpp-bindings/llama.cpp/LICENSE %license crates/llama-cpp-bindings/llama.cpp/gguf-py/LICENSE %license ee/LICENSE %license LICENSE.dependencies %doc CHANGELOG.md %doc CONTRIBUTING.md %doc MODEL_SPEC.md %doc README.md %{_bindir}/tabby %changelog %autochangelog