# --------------------------------------------------------------------------- # In memory of Seth Vidal, lead developer of yum and createrepo, and a Red Hat # engineer whose work still underpins very nearly every RPM based system in use # today. Seth was killed by a car while out cycling in Durham, North Carolina # in July 2013. Every `dnf install` owes him a debt. # --------------------------------------------------------------------------- # Build against libfuse 2 instead of libfuse 3: rpmbuild --with fuse2 %bcond_with fuse2 %global forgeurl https://github.com/jboero/up-fuse %global srcname up-fuse Name: upfuse Version: 1.0.0 Release: 1%{?dist} Summary: FUSE client for browsing the Upbound APIs as a filesystem License: GPL-3.0-only URL: %{forgeurl} Source0: %{forgeurl}/archive/v%{version}/%{srcname}-%{version}.tar.gz BuildRequires: gcc-c++ >= 8 BuildRequires: cmake >= 3.16 BuildRequires: make BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(jsoncpp) %if %{with fuse2} BuildRequires: pkgconfig(fuse) %else BuildRequires: pkgconfig(fuse3) %endif # The shared libraries come from the automatic dependency generator; what that # cannot see is the setuid helper needed to mount and unmount as a normal user. %if %{with fuse2} Requires: fuse %else Requires: fuse3 %endif %description upfuse mounts Upbound organizations, Spaces, groups, control planes and every Crossplane resource inside them as an ordinary directory tree, so that ls, cat, grep, find and an editor replace much of what the up and kubectl command line clients are otherwise needed for. Credentials are read from the same ~/.up/config.json that "up login" writes, so no separate configuration is required. Both Upbound SaaS and self-hosted or disconnected Spaces are supported. Every object is served as YAML and as JSON, and also as a directory tree in which mappings are directories and scalars are files, so reading a single field is a single cat with no JSON tooling in the way. Each resource directory offers a template seeded from the control plane's own CRD schema, and each directory carries a refresh file that drops its cache when touched. Mounts are read-only unless -o writable is given. %prep %autosetup -n %{srcname}-%{version} %build %cmake \ %if %{with fuse2} -DUPFUSE_USE_FUSE2:BOOL=ON %else -DUPFUSE_USE_FUSE2:BOOL=OFF %endif %cmake_build %install %cmake_install install -Dpm 0644 upfuse.1 %{buildroot}%{_mandir}/man1/upfuse.1 %check # Exercises the YAML emitter and parser and the document browsing primitives. # No network access is required. ./tests/run.sh %files %license LICENSE %doc README.md %{_bindir}/upfuse %{_mandir}/man1/upfuse.1* %changelog * Wed Aug 19 2026 John Boero - 1.0.0-1 - Initial package.