# Original project: https://github.com/RusNor/StartWine-Launcher %global debug_package %{nil} Name: startwine Version: 422 Release: 1%{?dist} Summary: Windows application launcher for Linux License: GPL-3.0-or-later URL: https://github.com/RusNor/StartWine-Launcher Source0: StartWine_v%{version}.tar.gz Source1: ru.launcher.StartWine.desktop # Пакет содержит собранный Rust-бинарник, поэтому не noarch ExclusiveArch: x86_64 # Сборка Rust BuildRequires: cargo BuildRequires: rust BuildRequires: gcc BuildRequires: gettext-devel BuildRequires: pkgconfig(gtk4) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gio-2.0) BuildRequires: python3-devel BuildRequires: make BuildRequires: cmake BuildRequires: libepoxy-devel BuildRequires: LibRaw-devel BuildRequires: openssl-devel # Зависимости для работы Requires: python3 Requires: python3-psutil Requires: python3-gobject Requires: python3-dbus Requires: python3-pillow Requires: python3-requests Requires: gtk4 Requires: fuse Requires: curl Requires: yad Requires: zenity Requires: coreutils Requires: bash %description StartWine is a Windows application launcher for GNU/Linux operating systems. It includes many features, extensions, and fixes to improve performance, visuals, and usability. %prep %autosetup -n StartWine-Launcher-StartWine_v%{version} ln -sf data/img img rm -f Cargo.lock %build # Сборка Rust компонента export GETTEXT_SYSTEM=1 export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 export LIBRARY_PATH=/usr/lib64:$LIBRARY_PATH cargo build --release # Проверка наличия бинарника if [ ! -f target/release/sw_start ]; then echo "ERROR: sw_start not found!" find target/release -type f -executable 2>/dev/null || true exit 1 fi %install # Создаём системные директории mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_libexecdir}/startwine mkdir -p %{buildroot}%{_datadir}/startwine mkdir -p %{buildroot}%{_datadir}/pixmaps mkdir -p %{buildroot}%{_datadir}/applications # Устанавливаем собранный Rust-бинарник install -Dm755 target/release/sw_start %{buildroot}%{_libexecdir}/startwine/sw # Копируем все остальные файлы приложения cp -r data/* %{buildroot}%{_datadir}/startwine/ 2>/dev/null || true # Копируем иконку if [ -f data/img/gui_icons/sw_icon.png ]; then install -Dm644 data/img/gui_icons/sw_icon.png %{buildroot}%{_datadir}/pixmaps/startwine.png fi # Копируем .desktop файл install -Dm644 %{SOURCE1} %{buildroot}%{_datadir}/applications/ru.launcher.StartWine.desktop # Исправляем пути в .desktop файле sed -i 's|Icon=.*|Icon=startwine|' %{buildroot}%{_datadir}/applications/ru.launcher.StartWine.desktop # Создаём скрипт запуска cat > %{buildroot}%{_bindir}/startwine << 'EOF' #!/bin/bash USER_DATA_DIR="$HOME/.local/share/StartWine" SYSTEM_DATA_DIR="/usr/share/startwine" BIN_SOURCE="%{_libexecdir}/startwine/sw" USER_BIN="$HOME/.local/bin/sw" # При первом запуске создаём структуру в домашней директории if [ ! -f "$USER_BIN" ]; then # Создаём директории mkdir -p "$USER_DATA_DIR" mkdir -p "$HOME/.local/bin" # Копируем все файлы из системной директории cp -r "$SYSTEM_DATA_DIR"/* "$USER_DATA_DIR/" # Делаем скрипты исполняемыми chmod +x "$USER_DATA_DIR"/scripts/*.py 2>/dev/null || true chmod +x "$USER_DATA_DIR"/scripts/*.sh 2>/dev/null || true # Создаём символическую ссылку на бинарник ln -sf "$BIN_SOURCE" "$USER_BIN" # Добавляем ~/.local/bin в PATH, если ещё не добавлен if ! echo "$PATH" | grep -q "$HOME/.local/bin"; then echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$HOME/.bashrc" fi fi # Запускаем приложение exec "$USER_BIN" "$@" EOF chmod 755 %{buildroot}%{_bindir}/startwine # Делаем скрипты в системной директории исполняемыми find %{buildroot}%{_datadir}/startwine -name "*.sh" -exec chmod +x {} \; 2>/dev/null || true find %{buildroot}%{_datadir}/startwine -name "*.py" -exec chmod +x {} \; 2>/dev/null || true %post # Обновляем кэш иконок и desktop-файлов if [ -x /usr/bin/gtk-update-icon-cache ]; then /usr/bin/gtk-update-icon-cache -q /usr/share/icons/hicolor 2>/dev/null || true fi update-desktop-database -q 2>/dev/null || true %postun if [ $1 -eq 0 ]; then update-desktop-database -q 2>/dev/null || true fi %files %{_bindir}/startwine %{_libexecdir}/startwine/ %{_datadir}/startwine/ %{_datadir}/pixmaps/startwine.png %{_datadir}/applications/ru.launcher.StartWine.desktop %license LICENSE %doc README.md %changelog * Tue Jun 09 2026 Wik217 - 422-1 - Initial RPM release for Fedora - Rust component built from source - First run copies files to ~/.local/share/StartWine/ - Creates symlink ~/.local/bin/sw for easy access - Compliant with Fedora packaging guidelines