File winboat.spec of Package winboat
%define _build_id_links none
# Disable debug package and debug info generation
%define debug_package %{nil}
%define _enable_debug_packages 0
%define __debug_install_post %{nil}
# FIX: Use the correct absolute path to brp-compress for Tumbleweed
%define __os_install_post /usr/lib/rpm/brp-compress
# Filter out problematic auto-provides and auto-requires
%global __provides_exclude_from ^%{_libdir}/winboat/.*$
%global __requires_exclude ^libffmpeg\\.so.*$
%global __requires_exclude_from ^%{_libdir}/winboat/.*$
Name: winboat
Version: 0
Release: 0
Summary: Run Windows apps on Linux with seamless integration
License: MIT
URL: https://github.com/TibixDev/winboat
Source0: https://github.com/TibixDev/winboat/releases/download/v%{version}/winboat-%{version}-x86_64.rpm
BuildRequires: fdupes
BuildRequires: hicolor-icon-theme
BuildRequires: chrpath
BuildRequires: desktop-file-utils
Requires: docker
Requires: freerdp
Requires: hicolor-icon-theme >= 0.17
Requires: gtk3
# Remove explicit libnotify requirement - let rpm find it automatically
ExclusiveArch: x86_64
AutoReqProv: no
%description
WinBoat is a tool that allows you to run Windows applications on Linux
without complicated configurations. Through a graphical wizard, it
automatically completes image pulling, container creation, and RDP
configuration.
%prep
rpm2cpio %{SOURCE0} | cpio -idmv
%build
# Nothing to build
%install
# Create directories
mkdir -p %{buildroot}%{_libdir}/winboat
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_datadir}/applications
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/apps
# Copy app files from opt/winboat to /usr/lib64/winboat
cp -a opt/winboat/* %{buildroot}%{_libdir}/winboat/
# Remove development files to reduce badness score
find %{buildroot}%{_libdir}/winboat -type f \( \
-name "*.c" -o \
-name "*.cpp" -o \
-name "*.h" \) -delete
# Remove hidden files and directories
find %{buildroot}%{_libdir}/winboat -type f -name ".*" -delete
find %{buildroot}%{_libdir}/winboat -type d -name ".private" -exec rm -rf {} + 2>/dev/null || true
find %{buildroot}%{_libdir}/winboat -type f -name ".codespellrc" -delete 2>/dev/null || true
# Remove pre-commit scripts with bashisms
find %{buildroot}%{_libdir}/winboat -type f -name "pre-commit.sh" -delete 2>/dev/null || true
# Create binary symlink (relative symlink to avoid rpmlint warning)
ln -sf ../lib64/winboat/winboat %{buildroot}%{_bindir}/winboat
# Install desktop file
cat > %{buildroot}%{_datadir}/applications/winboat.desktop << 'EOF'
[Desktop Entry]
Name=WinBoat
Exec=%{_bindir}/winboat %U
Terminal=false
Type=Application
Icon=winboat
StartupWMClass=WinBoat
Comment=Run Windows apps on Linux with seamless integration
Categories=Utility;
EOF
desktop-file-validate %{buildroot}%{_datadir}/applications/winboat.desktop || true
# Install the icon
cp -a usr/share/icons/hicolor/scalable/apps/winboat.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/
# Fix permissions
chrpath -d %{buildroot}%{_libdir}/winboat/winboat 2>/dev/null || true
chmod 755 %{buildroot}%{_libdir}/winboat/winboat
# Set SUID bit on chrome-sandbox to address setgroups warning
# This is the standard way to handle chrome-sandbox security
chmod 4755 %{buildroot}%{_libdir}/winboat/chrome-sandbox 2>/dev/null || true
# Run fdupes
fdupes -s %{buildroot}
%files
%{_bindir}/winboat
%{_libdir}/winboat/
%{_datadir}/applications/winboat.desktop
%{_datadir}/icons/hicolor/scalable/apps/winboat.svg
%post
/usr/bin/update-desktop-database &> /dev/null || :
%postun
/usr/bin/update-desktop-database &> /dev/null || :
%changelog
* Sun Jan 25 2026 itachi_re <xanbenson99@gmail.com> - 0.9.0-0
- Initial package
- Remove development files (.c, .cpp, .h) to reduce package size
- Remove hidden files and directories
- Fix desktop file Exec path
- Add versioned hicolor-icon-theme requirement
- Remove explicit libnotify requirement