## 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 # TODO: 1. Unclear origins / license of assets in "goose-bench" crate # * The goose-bench crate got removed https://github.com/block/goose/commit/a3ba124178fa1a07dafd7f5ae48c86dc9d7f839a#diff-50e077f973f07fbc74ff3898bfed6304ad86366ccae007b0e3140951888c60bb, so no need to do any work on it. %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 Patch1: 0002-Disable-rustls-and-default-features-for-some-librari.patch # Remove rustls specific from source code and force use of native-tls 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 License: %{shrink: (Apache-2.0 OR MIT) AND BSD-3-Clause (MIT OR Apache-2.0) AND Unicode-3.0 0BSD OR MIT OR Apache-2.0 Apache-2.0 Apache-2.0 OR BSL-1.0 Apache-2.0 OR GPL-2.0-only Apache-2.0 OR ISC OR MIT Apache-2.0 OR MIT Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT BSD-2-Clause BSD-2-Clause OR Apache-2.0 OR MIT BSD-3-Clause BSD-3-Clause AND MIT BSD-3-Clause OR Apache-2.0 BSD-3-Clause OR MIT BSD-3-Clause OR MIT OR Apache-2.0 BSL-1.0 CC0-1.0 CC0-1.0 OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception CC0-1.0 OR MIT-0 OR Apache-2.0 ISC LGPL-3.0-or-later MIT MIT AND BSD-3-Clause MIT OR Apache-2.0 MIT OR Apache-2.0 OR LGPL-2.1-or-later MIT OR Apache-2.0 OR Zlib MIT OR Zlib OR Apache-2.0 MIT-0 MPL-2.0 Unicode-3.0 Unlicense OR MIT Zlib Zlib OR Apache-2.0 OR MIT } 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 # TODO(r0x0d): Checkout why this was needed in the first place. # BuildRequires: gcc, gcc-c++, 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 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 # TODO(rhel-lightspeed): Add license to upstream files. # 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 # 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" 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 # The following tests are trying to reach out to the internet and thus, failing # to resolve DNS. Need to be patched upstream to not rely internet access. %{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 }} %endif %files %license LICENSE %license LICENSE.dependencies %license cargo-vendor.txt %doc README.md %{_bindir}/goose %{_bindir}/goosed %changelog ## START: Generated by rpmautospec * Tue Feb 10 2026 Rodolfo Olivieri - 1.23.0-2 - Uncommitted changes * Tue Feb 10 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