## START: Set by rpmautospec ## (rpmautospec version 0.8.3) ## RPMAUTOSPEC: autorelease, autochangelog %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 %bcond check 1 Name: goose Version: 1.20.1 Release: %autorelease Summary: Extensible AI agent client URL: https://github.com/block/goose Source: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz # To create the vendor tarball: # spectool -g goose.spec ; \ # tar xf %%{name}-%%{version}.tar.gz ; pushd %%{name}-%%{version} ; \ # patch -p1 < ../0001-Patch-windows-dependencies-across-workspace.patch ; \ # patch -p1 < ../0002-Remove-unwanted-dependencies-from-top-level-dependen.patch ; \ # cargo vendor --versioned-dirs && tar Jcvf ../%%{name}-%%{version}-vendor.tar.xz vendor/ ; popd Source1: %{name}-%{version}-vendor.tar.xz # Remove all windows related top-level dependencies as they won't serve any # purpose in here. Patch: 0001-Patch-windows-dependencies-across-workspace.patch # Various fixes to the dependencies to remove rustls/ring and use native-tls # instead. Patch2: 0002-Remove-unwanted-dependencies-from-top-level-dependen.patch # Goose source license SourceLicense: Apache-2.0 License: %{shrink: (Apache-2.0 OR MIT) AND BSD-3-Clause Unicode-3.0 NCSA 0BSD Apache-2.0 Apache-2.0 OR BSL-1.0 Apache-2.0 OR ISC OR MIT Apache-2.0 WITH LLVM-exception BSD-2-Clause BSD-3-Clause BSD-3-Clause AND MIT BSD-3-Clause OR MIT BSL-1.0 Apache-2.0 WITH LLVM-exception ISC ISC AND OpenSSL LGPL-3.0-or-later MIT MIT OR Zlib OR Apache-2.0 MIT-0 MPL-2.0 Unicode-3.0 Unlicense OR MIT Zlib } BuildRequires: cargo-rpm-macros >= 25 BuildRequires: openssl-devel BuildRequires: tomcli # Goose has an extension called "Developer Extension" which allows the program # to take screenshots of the screen or specified windows when debugging visual # issues (Not enabled by default. Needs manual activation). The libxcb-devel # provides necessary bindings for the xcap crate. # https://github.com/block/goose/issues/6302#issuecomment-3744200583 BuildRequires: libxcb-devel # Required by crate bzip2-sys (vendored) BuildRequires: pkgconfig(bzip2) # Required by crate libz-sys (vendored) BuildRequires: pkgconfig(zlib-ng) BuildRequires: pkgconfig(zlib) # Required by libdbus-sys (vendored) BuildRequires: dbus-devel # Required by zstd-sys (vendored) BuildRequires: libzstd-devel # Required by onig_sys (vendored) BuildRequires: oniguruma-devel # Required by libsqlite3-sys (vendored) BuildRequires: pkgconfig(sqlite3) BuildRequires: clang-libs BuildRequires: clang-devel BuildRequires: gcc, gcc-c++ BuildRequires: glibc-devel # Sublime Text 3 language definitions for syntax highlighting # from: https://github.com/sublimehq/Packages/tree/fa6b862 # - all except Rust: LicenseRef-Fedora-UltraPermissive # https://gitlab.com/fedora/legal/fedora-license-data/-/issues/516 # - Rust: MIT Provides: bundled(sublime-syntax) = 4075~gitfa6b862 # third-party language definitions for syntax highlighting # The `syntect` crate is bundling all of sublimehq/Packages syntax definitions. # The list can be generated/viewed in two ways: # 1. git clone https://github.com/trishume/syntect && make packs # 2. cd %%{crate}-%%{version}/vendor/syntect-*/assets/default_newlines.packdump | xxd # Both will output the list of sublime syntax used by syntect. Provides: bundled(sublime-syntax-ASP) Provides: bundled(sublime-syntax-ActionScript) Provides: bundled(sublime-syntax-AppleScript) Provides: bundled(sublime-syntax-BatchFile) Provides: bundled(sublime-syntax-CSharp) Provides: bundled(sublime-syntax-Cpp) Provides: bundled(sublime-syntax-CSS) Provides: bundled(sublime-syntax-Clojure) Provides: bundled(sublime-syntax-D) Provides: bundled(sublime-syntax-Diff) Provides: bundled(sublime-syntax-Erlang) Provides: bundled(sublime-syntax-Go) Provides: bundled(sublime-syntax-Graphviz) Provides: bundled(sublime-syntax-Groovy) Provides: bundled(sublime-syntax-HTML) Provides: bundled(sublime-syntax-Haskell) Provides: bundled(sublime-syntax-Java) Provides: bundled(sublime-syntax-JavaScript) Provides: bundled(sublime-syntax-LaTeX) Provides: bundled(sublime-syntax-Lisp) Provides: bundled(sublime-syntax-Lua) Provides: bundled(sublime-syntax-Makefile) Provides: bundled(sublime-syntax-Markdown) Provides: bundled(sublime-syntax-Matlab) Provides: bundled(sublime-syntax-OCaml) Provides: bundled(sublime-syntax-Object-C) Provides: bundled(sublime-syntax-PHP) Provides: bundled(sublime-syntax-Pascal) Provides: bundled(sublime-syntax-Perl) Provides: bundled(sublime-syntax-Python) Provides: bundled(sublime-syntax-R) Provides: bundled(sublime-syntax-Rails) Provides: bundled(sublime-syntax-Regular-Expressions) Provides: bundled(sublime-syntax-RestructuredText) Provides: bundled(sublime-syntax-Ruby) Provides: bundled(sublime-syntax-Rust) Provides: bundled(sublime-syntax-SQL) Provides: bundled(sublime-syntax-Scala) Provides: bundled(sublime-syntax-ShellScript) Provides: bundled(sublime-syntax-TCL) Provides: bundled(sublime-syntax-Text) Provides: bundled(sublime-syntax-Textile) Provides: bundled(sublime-syntax-XML) Provides: bundled(sublime-syntax-YAML) # Default themes that are shipped with `syntect` crate under the assets folder. # InspiredGithub theme: MIT Provides: bundled(syntect-theme-InspiredGithub) # Solarized theme: MIT Provides: bundled(syntect-theme-Solarized) # Spacegray theme: MIT Provides: bundled(sublime-theme-Spacegray) %description an open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM. %prep %autosetup -n %{name}-%{version} -p1 -a1 pushd vendor # Remove vendored C libraries. Those should be linked against system libraries # instead. rm -rf bzip2-sys-*/bzip-* find . -path "*/bzip2-sys-*/.cargo-checksum.json" \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' rm -rf libdbus-sys-*/vendor find . -path "*/libdbus-sys-*/.cargo-checksum.json" \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' rm -rf onig_sys-*/oniguruma find . -path "*/onig_sys-*/.cargo-checksum.json" \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' # Add `loadable_extension` for default feature in libsqlite3-sys crate to link # against system libraries. rm -rf libsqlite3-sys-*/{sqlite3,sqlcipher} find . -path "*/libsqlite3-sys-*/.cargo-checksum.json" \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' # Drop other features from defaut in zstd-sys and append pkg-config rm -rf zstd-sys-*/zstd find . -path "*/zstd-sys-*/.cargo-checksum.json" \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' # Add pkg-config for libz-sys crate tomcli set libz-sys-*/Cargo.toml append "features.default" "static" rm -rf libz-sys-*/zlib{,zng} find . -path "*/libz-sys-*/.cargo-checksum.json" \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' # Enable native-tls for reqwest in posthog-rs as unfortunately, they don't # provide a feature for us to swap. # FIXME: https://github.com/PostHog/posthog-rs/pull/55 tomcli set posthog-rs-*/Cargo.toml arrays delitem "dependencies.reqwest.features" "rustls-tls" tomcli set posthog-rs-*/Cargo.toml append "dependencies.reqwest.features" "native-tls" find . -path "*/posthog-rs-*/.cargo-checksum.json" \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' # Enable native-tls for reqwest in opentelemetry-* crates as unfortunately, # they don't provide a feature for us to swap. tomcli set opentelemetry-otlp-*/Cargo.toml arrays replace "features.reqwest-client" "reqwest" "reqwest/native-tls" tomcli set opentelemetry-http-*/Cargo.toml append "dependencies.reqwest.features" "reqwest/native-tls" find . -path "*/opentelemetry-{otlp,http}-*/.cargo-checksum.json" \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' # Enable native-tls for reqwest in rmcp-* crates as unfortunately, # they don't provide a feature for us to swap. # * The update to version 0.13 is to avoid pulling rustls crate as part of # the json feature. tomcli set rmcp-*/Cargo.toml str "dependencies.reqwest.version" "0.13" tomcli set rmcp-*/Cargo.toml arrays replace "features.__reqwest" "dep:reqwest" "dep:reqwest/native-tls" tomcli set rmcp-*/Cargo.toml arrays delitem "features.reqwest" "reqwest?/rustls-tls" find . -path "*/rmcp-*/.cargo-checksum.json" \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' popd # Sometimes Rust sources start with #![...] attributes, and "smart" editors think # it's a shebang and make them executable. Then brp-mangle-shebangs gets upset... find -name '*.rs' -type f -perm /111 -exec chmod -v -x '{}' '+' %cargo_prep -v vendor %build export ZSTD_SYS_USE_PKG_CONFIG=1 # Tell oniguruma-sys crate to use system libs. export RUSTONIG_SYSTEM_LIBONIG=1 %cargo_build %cargo_vendor_manifest %{cargo_license_summary} %{cargo_license} > LICENSE.dependencies %install install -Dpm 0755 target/rpm/goose -t %{buildroot}%{_bindir} install -Dpm 0755 target/rpm/goosed -t %{buildroot}%{_bindir} %if %{with check} %check export ZSTD_SYS_USE_PKG_CONFIG=1 # Tell oniguruma-sys crate to use system libs. export RUSTONIG_SYSTEM_LIBONIG=1 # The following tests are trying to reach out to the internete and thus, # failing to resolve DNS. # Need to be patched upstream to not rely internet access. %cargo_test -- -- --skip providers::gcpauth::tests::test_token_refresh_race_condition --skip routes::audio::tests::test_transcribe_endpoint_requires_auth --skip tunnel::lapstone_test::test_tunnel_end_to_end --skip tunnel::lapstone_test::test_tunnel_post_request %endif %files %license LICENSE %license LICENSE.dependencies %license cargo-vendor.txt %doc README.md %{_bindir}/goose %{_bindir}/goosed %changelog ## START: Generated by rpmautospec * Mon Jan 19 2026 Rodolfo Olivieri - 1.20.1-1 - Uncommitted changes * Fri Jan 16 2026 Rodolfo Olivieri - 1.19.1-1 - Bundling * Thu Jan 08 2026 Rodolfo Olivieri - 1.19.0-2 - simplify * Thu Jan 08 2026 Rodolfo Olivieri - 1.19.0-1 - Initial commit ## END: Generated by rpmautospec