# Generated by scripts/render-copr-spec.sh; CI regenerates it per release. %global appid org.geolibre.desktop # This payload is a pre-built Tauri bundle, not something we compile, so turn # off the post-build processing (strip, debuginfo, bytecompile, build-id links) # that assumes a from-source build. Automatic library dependency generation is # separate and stays on, so Requires on the webkit2gtk/gtk3 sonames are still # discovered from the binary. %global debug_package %{nil} %global __os_install_post %{nil} %global _build_id_links none Name: geolibre Version: 2.9.0 Release: 1%{?dist} Summary: Lightweight, cloud-native GIS platform for visualizing and analyzing geospatial data License: MIT URL: https://geolibre.app/ ExclusiveArch: x86_64 # Repackage the official release RPM rather than rebuilding from source. Source0: https://github.com/opengeos/GeoLibre/releases/download/v%{version}/GeoLibre.Desktop-%{version}-1.x86_64.rpm Source1: %{appid}.metainfo.xml # The upstream bundle ships no license file, so carry the project LICENSE here. Source2: LICENSE Provides: geolibre-desktop = %{version}-%{release} # The upstream release RPM (manually installed) is named geo-libre-desktop and # drops the same files; declare the conflict for a clean dnf message. Conflicts: geo-libre-desktop BuildRequires: cpio BuildRequires: desktop-file-utils BuildRequires: appstream %description GeoLibre is a lightweight, cloud-native desktop GIS for visualizing and analyzing geospatial data, built on MapLibre with deck.gl for 3D and point-cloud overlays. It loads vector and raster files, web services, 3D Tiles, MBTiles, and cloud-native formats (GeoParquet, FlatGeobuf, PMTiles, COG), converting local data in the browser with DuckDB-WASM Spatial, and is extensible through a plugin ecosystem. %prep # Nothing to unpack; the payload is handled in %install. %build # Nothing to build; this is a repackage of the upstream binary RPM. %install # Unpack the upstream RPM payload into the buildroot. cd %{buildroot} rpm2cpio %{SOURCE0} | cpio -idmv # Rename the .desktop to the AppStream app-id (software centers and the metainfo # launchable expect this), add the Categories the upstream bundle leaves empty, # and give it a clean Comment. Find the source file rather than hardcoding its # name, so an upstream rename fails loudly instead of silently dropping it. _desktop_dir="%{buildroot}%{_datadir}/applications" _desktop_count="$(find "$_desktop_dir" -name '*.desktop' | wc -l)" [ "$_desktop_count" -eq 1 ] || { echo "expected exactly one .desktop in the upstream RPM payload, found $_desktop_count" >&2; exit 1; } _desktop_src="$(find "$_desktop_dir" -name '*.desktop')" mv "$_desktop_src" "%{buildroot}%{_datadir}/applications/%{appid}.desktop" desktop-file-edit \ --set-key=Categories --set-value="Science;Geoscience;Geography;" \ --set-key=Comment --set-value="Lightweight, cloud-native GIS platform" \ "%{buildroot}%{_datadir}/applications/%{appid}.desktop" # Install the AppStream metainfo. install -Dm0644 %{SOURCE1} "%{buildroot}%{_metainfodir}/%{appid}.metainfo.xml" # Ship the license text (the upstream bundle omits it). install -Dm0644 %{SOURCE2} "%{buildroot}%{_licensedir}/%{name}/LICENSE" %check desktop-file-validate "%{buildroot}%{_datadir}/applications/%{appid}.desktop" appstreamcli validate --no-net "%{buildroot}%{_metainfodir}/%{appid}.metainfo.xml" %files %license %{_licensedir}/%{name}/LICENSE %{_bindir}/geolibre-desktop # The Tauri bundle hardcodes the /usr/lib path (lib, not lib64); quote it # because of the space in the directory name. "/usr/lib/GeoLibre Desktop/" %{_datadir}/applications/%{appid}.desktop %{_datadir}/icons/hicolor/*/apps/geolibre-desktop.png %{_metainfodir}/%{appid}.metainfo.xml %changelog * Thu Sep 3 2026 Qiusheng Wu - 2.9.0-1 - Automated release of GeoLibre 2.9.0 (repackaged from the upstream RPM).