## START: Set by rpmautospec ## (rpmautospec version 0.8.3) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 2; 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.23.0 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-Disable-rustls-and-default-features-for-some-libraries.patch ; \ # cargo vendor --versioned-dirs \ ; # tar Jcvf ../%%{name}-%%{version}-vendor.tar.xz vendor/ \ ; # popd Source1: %{name}-%{version}-vendor.tar.xz # Patches to remove windows dependencies from crates Patch: 0001-Patch-windows-dependencies-across-workspace.patch # Drop rustls in favor of using native-tls backend # Disable default-features for some dependencies # - There is a specific modification that is left out of this patch on # purpose, that is the crate `posthog-rs`. Currently, posthog-rs is enabling # rustls (which pulls ring) by default. I believe this is one of the last # occurrences of rustls in the dependency graph. # - Currently waiting on https://github.com/PostHog/posthog-rs/pull/55 to # be merged. Patch1: 0002-Disable-rustls-and-default-features-for-some-librari.patch # This patch is split into it's own file due to it not being modified quite # often in the source code. Since the dependencies can change from minor -> # minor bumps, or even, patch -> patch bumps, re-doing the source codes patches # becomes a burden. Patch2: 0003-Patch-code-to-use-native-tls-instead-of-rustls.patch # The reason for 0004-*.patch to exist only for the vendored sources is because # we are patching the `build.rs` directly, so it makes more sense to run this # as part of generating the vendored sources instead of delegating to rpm to # apply the patch. # The patch was taken from: # * https://src.fedoraproject.org/rpms/rust-ring/blob/d6d681ed07c088671cb5accc0102470b059a5e88/f/rust-ring.spec#_24 Patch4: 0004-Downstream-only-never-use-pre-generated-object-files.patch # Goose source license SourceLicense: Apache-2.0 # CC0-1.0: # - This license comes from the crate `constant_time_eq` (vendored), in # which, already exists in fedora, so it's fine to keep it here. # # LICENSE.dependencies contains a full license breakdown License: %{shrink: (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR GPL-2.0-only) AND (Apache-2.0 OR ISC OR MIT) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND BSD-2-Clause AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND BSD-3-Clause AND (BSD-3-Clause OR Apache-2.0) AND (BSD-3-Clause OR MIT) AND (BSD-3-Clause OR MIT OR Apache-2.0) AND BSL-1.0 AND CC0-1.0 AND (CC0-1.0 OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception) AND (CC0-1.0 OR MIT-0 OR Apache-2.0) AND ISC AND LGPL-3.0-or-later AND MIT AND MIT-0 AND (MIT OR Apache-2.0 OR LGPL-2.1-or-later) AND (MIT OR Apache-2.0 OR Zlib) AND MPL-2.0 AND Unicode-3.0 AND (Unlicense OR MIT) AND Zlib } BuildRequires: cargo-rpm-macros >= 25 BuildRequires: tomcli # Required by crate bzip2-sys (vendored) BuildRequires: pkgconfig(bzip2) # Required by crate libdbus-sys (vendored) BuildRequires: dbus-devel # Required by crate libsqlite3-sys (vendored) BuildRequires: clang-devel BuildRequires: pkgconfig(sqlite3) # Required by crate libz-sys (vendored) BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(zlib-ng) # Required by crate onig_sys (vendored) BuildRequires: oniguruma-devel # Required by crate openssl-sys (vendored) BuildRequires: openssl-devel # Required by crate ring (vendored) BuildRequires: /usr/bin/perl # Required by crate xcap (vendored) # 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). # https://github.com/block/goose/issues/6302#issuecomment-3744200583 BuildRequires: libxcb-devel # Required by crate zstd-sys (vendored) BuildRequires: libzstd-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 three ways: # 1. git clone https://github.com/trishume/syntect && make packs # 2. git clone https://github.com/trishume/syntect --recursive && cd testdata/Packages # 3. cd %%{crate}-%%{version}/vendor/syntect-*/assets/default_newlines.packdump | xxd Provides: bundled(sublime-syntax-ASP) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-ActionScript) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-AppleScript) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-BatchFile) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-CSharp) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Cpp) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-CSS) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Clojure) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-D) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Diff) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Erlang) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Go) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Graphviz) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Groovy) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-HTML) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Haskell) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Java) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-JavaScript) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-LaTeX) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Lisp) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Lua) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Makefile) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Markdown) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Matlab) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-OCaml) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Object-C) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-PHP) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Pascal) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Perl) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Python) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-R) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Rails) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Regular-Expressions) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-RestructuredText) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Ruby) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Rust) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-SQL) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Scala) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-ShellScript) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-TCL) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Text) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-Textile) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-XML) = 4075~gitfa6b862 Provides: bundled(sublime-syntax-YAML) = 4075~gitfa6b862 # Default themes that are shipped with `syntect` crate under the assets folder. # The list can be generated/viewed in three ways: # 1. git clone https://github.com/trishume/syntect && make packs # 2. git clone https://github.com/trishume/syntect --recursive && cd testdata/{InspiredGithub,Solarized,Spacegray} # 3. cd %%{crate}-%%{version}/vendor/syntect-*/assets/default.themedump | xxd # InspiredGithub theme: MIT Provides: bundled(syntect-theme-InspiredGithub) = 1.3.0~git18ddb27 # Solarized theme: MIT Provides: bundled(syntect-theme-Solarized) = 1.5.11~gitbcd6234 # Spacegray theme: MIT Provides: bundled(sublime-theme-Spacegray) = 1.3.2~git58bb171 # Minified JavaScript libraries contained in `goose-mcp` crate for the # autovisualizer tool. # * crates/goose-mcp/src/autovisualizer/templates/assets/ # # chart.min.js: MIT Provides: bundled(chart-min-js) = 4.5.0~gitb5ee134 # d3.min.js: ISC Provides: bundled(d3-min-js) = 7.9.0~git1f8dd3b # d3-sakey.min.js: BSD-3-Clause Provides: bundled(d3-sankey-min-js) = 0.12.3~gitbb7233e # leaflet.min.js: BSD-2-Clause Provides: bundled(leaflet-min-js) = 1.9.4~gitd15112c # leaflet.min.css: BSD-2-Clause Provides: bundled(leaflet-min-css) = 1.9.4~gitd15112c # leaflet-markercluster.min.js: MIT Provides: bundled(leaflet-markercluster-min-js) = 1.5.3~gite5124b2 # mermaid.min.js: MIT Provides: bundled(mermaid-min-js) = 11.12.0~git0116b27 %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 # Remove the documentation, ui and bin folders as it contains the whole blog # posts, images, audio, and a bunch of extra binary blobs that are not # necessary for goose. # Delete all files with the exception of logo_{dark,light}.png find documentation -type f ! -path "documentation/static/img/logo_dark.png" ! -path "documentation/static/img/logo_light.png" -delete # After deleting all files, only empty directories will be left out. Delete # them. find documentation -type d -empty -delete rm -rf ui rm -rf bin # Remove the `test_image.jpg` as we are not sure if this was LLM generated or # made by a human. Since there is no copyright data anywhere in the repository # mentioning this and the PR that introduced it # (https://github.com/block/goose/pull/3688) does not mention anything about # the source of the image, it's better that we remove this anyway. rm crates/goose-cli/src/scenario_tests/test_data/test_image.jpg # Helper function to prune vendored folders that contains C libraries or # pre-defined objects. All pruned libraries here should be linked against # system libraries instead. prune_vendor() { local crate_pattern="$1" local path_to_remove="$2" # Remove the vendored source # We use ${var} without quotes here to allow the '*' glob to expand rm -rf ${crate_pattern}/${path_to_remove} # Patch the cargo checksum to ignore the deleted files find . -path "*/${crate_pattern}/.cargo-checksum.json" \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' } pushd vendor prune_vendor "bzip2-sys-*" "bzip-*" prune_vendor "libdbus-sys-*" "vendor" prune_vendor "libsqlite3-sys-*" "{sqlite3,sqlcipher}" prune_vendor "onig_sys-*" "oniguruma" prune_vendor "ring-*" "pregenerated" # Handle libz-sys (requires specific config before pruning) tomcli set libz-sys-*/Cargo.toml append "features.default" "static" prune_vendor "libz-sys-*" "zlib{,zng}" # This expression will match: # - zstd-* / zstd-*+zstd* # - zstd-safe-* / zstd-safe*+zstd* # - zstd-sys-*+zstd* # And will add the `pkg-config` to the default-features, and patch # .cargo-checksum.json to ignore the changed files. find . -maxdepth 1 -path "*/zstd-*" \ -exec tomcli set "{}/Cargo.toml" append features.default pkg-config \; \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' "{}/.cargo-checksum.json" \; prune_vendor "zstd-sys-*" "zstd" # Update posthog-rs to reqwest 0.12.28 (same version as goose) and try to # remove rustls-tls and append native-tls to the features. # Workaround until https://github.com/PostHog/posthog-rs/pull/55 get merged # and goose update it's version. find . -maxdepth 1 -path "*/posthog-rs-*" \ -exec tomcli set "{}/Cargo.toml" str dependencies.reqwest.version "0.12.28" \; \ -exec tomcli set "{}/Cargo.toml" arrays delitem dependencies.reqwest.features "rustls-tls" \; \ -exec tomcli set "{}/Cargo.toml" append dependencies.reqwest.features "native-tls" \; \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' "{}/.cargo-checksum.json" \; 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 # The oniguruma-sys crate does not have a feature to enable using system # libraries (pkg-config), so we have to set `RUSTONIG_SYSTEM_LIBONIG` in order # for it to use pkg-config. 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 # The oniguruma-sys crate does not have a feature to enable using system # libraries (pkg-config), so we have to set `RUSTONIG_SYSTEM_LIBONIG` in order # for it to use pkg-config. export RUSTONIG_SYSTEM_LIBONIG=1 # Breakdown of each skipped test: # * Network / DNS resolution failures: # - providers::gcpauth::tests::test_token_refresh_race_condition # - routes::audio::tests::test_transcribe_endpoint_requires_auth # - tunnel::lapstone_test::test_tunnel_end_to_end # - tunnel::lapstone_test::test_tunnel_post_request # * Potential copyrightable content (see %%prep for a longer explanation): # - scenario_tests::scenarios::tests::test_image_analysis %{cargo_test -- -- %{shrink --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 --skip scenario_tests::scenarios::tests::test_image_analysis }} %endif %files %doc README.md %doc SECURITY.md %doc GOVERNANCE.md %license LICENSE %license LICENSE.dependencies %license cargo-vendor.txt %{_bindir}/goose %{_bindir}/goosed %changelog ## START: Generated by rpmautospec * Thu Feb 12 2026 Rodolfo Olivieri - 1.23.0-2 - Uncommitted changes * Thu Feb 12 2026 Rodolfo Olivieri - 1.23.0-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