File wps-office-docker.spec of Package wps-office-docker

%global debug_package %{nil}
%global _enable_debug_packages 0
%global _unpackaged_files_terminate_build 0
%global _build_id_links none
%define _missing_build_ids_terminate_build 0

%define program wps-office
%define type docker
%define build_timestamp %(date +"%Y%m%d")

Name:       %{program}-%{type}
Version:    12.1.2.23578
Release:    78.1
Summary:    WPS Office Docker builder for KDE Plasma 6
License:    SUSE-NonFree
Group:      Productivity/Office/Suite
URL:        http://wps-community.org/

Source0:    wps-office-12.1.2.23578-46.2.src.rpm
Source1:    %{name}.desktop
Source2:    wps-office-build.sh
Source3:    Dockerfile.rosa
Source4:    wps-office-wrapper.sh
Source5:    wps.png

BuildArch:  x86_64
BuildRoot:  %{_tmppath}/%{name}-%{version}-build

BuildRequires: rpm-build
BuildRequires: desktop-file-utils
BuildRequires: cpio
BuildRequires: chrpath
BuildRequires: fontconfig
BuildRequires: hicolor-icon-theme
BuildRequires: fdupes

Requires:   docker
Requires:   docker-compose
Requires:   bash
Requires:   desktop-file-utils
Requires:   hicolor-icon-theme
Requires:   libX11-devel
Requires:   libxcb-devel
Requires:   wayland-devel
Requires:   plasma6-workspace
Requires:   plasma6-integration-plugin
Requires:   python3
Requires:   libbz2.so.1
Requires:   libc++1

%description
WPS Office Docker - офисный пакет для Linux.
Собирается в Docker контейнере (Dockerfile.rosa), работает от обычного пользователя.

%prep
%setup -q -c -T
rpm2cpio %{SOURCE0} | cpio -idmv 2>/dev/null || true

%build
# Пусто

%install
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_datadir}/applications

# Создаем структуру для иконок
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/16x16/apps
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/22x22/apps
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/24x24/apps
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/32x32/apps
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/48x48/apps
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/64x64/apps
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/128x128/apps
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/256x256/apps

# Копируем иконку в основной размер (исправлено - добавлен путь назначения)
install -m 0644 %{SOURCE5} %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/wps-office-docker.png

# Создаем симлинки для других размеров
for size in 16 22 24 32 48 64 96 256; do
    mkdir -p %{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps
    ln -sf ../../128x128/apps/wps-office-docker.png %{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/wps-office-docker.png
done

mkdir -p %{buildroot}%{_sysconfdir}/%{name}
mkdir -p %{buildroot}%{_sharedstatedir}/%{name}
mkdir -p %{buildroot}%{_sharedstatedir}/%{name}/source
mkdir -p %{buildroot}%{_sharedstatedir}/%{name}/src
mkdir -p %{buildroot}%{_localstatedir}/log/%{name}
mkdir -p %{buildroot}/opt
mkdir -p %{buildroot}%{_docdir}/%{name}

install -m 0644 %{SOURCE0} %{buildroot}%{_sharedstatedir}/%{name}/source/

if [ -d "%{_builddir}/%{name}-%{version}" ]; then
    cp -r %{_builddir}/%{name}-%{version}/* %{buildroot}%{_sharedstatedir}/%{name}/src/ 2>/dev/null || true
fi

install -m 0755 %{SOURCE2} %{buildroot}%{_bindir}/wps-office-build
install -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/%{name}/Dockerfile.rosa

cat > %{buildroot}%{_bindir}/wps-office << 'EOF'
#!/bin/bash
WPS_DIR="/opt/wps-office"
LOG_DIR="/var/log/wps-office-docker"
LOG_FILE="$LOG_DIR/wps.log"
STATUS_FILE="/var/lib/wps-office-docker/status"
BUILD_SCRIPT="/usr/bin/wps-office-build"

if [ "$EUID" -eq 0 ]; then
    echo "❌ Запуск WPS Office от root запрещен!"
    exit 1
fi

[ ! -d "$LOG_DIR" ] && sudo mkdir -p "$LOG_DIR" 2>/dev/null || mkdir -p "$LOG_DIR"

log() { echo "[$(date '+%%Y-%%m-%%d %%H:%%M:%%S')] $1"; }

COMPONENT="wps"
case $(basename "$0") in
    wps-writer|wps-office) COMPONENT="wps" ;;
    wps-presentation) COMPONENT="wpp" ;;
    wps-spreadsheets) COMPONENT="et" ;;
    wps-pdf) COMPONENT="wpspdf" ;;
esac

[ ! -f "$WPS_DIR/opt/kingsoft/wps-office/office6/$COMPONENT" ] && "$BUILD_SCRIPT"
[ ! -f "$WPS_DIR/opt/kingsoft/wps-office/office6/$COMPONENT" ] && exit 1

export QT_QPA_PLATFORM="wayland;xcb"
export XDG_CURRENT_DESKTOP="KDE"
export DISPLAY=${DISPLAY:-:0}
export LD_LIBRARY_PATH="$WPS_DIR/opt/kingsoft/wps-office/office6:$LD_LIBRARY_PATH"

exec "$WPS_DIR/opt/kingsoft/wps-office/office6/$COMPONENT" "$@"
EOF

chmod 0755 %{buildroot}%{_bindir}/wps-office

for comp in writer presentation spreadsheets pdf; do
    ln -sf wps-office %{buildroot}%{_bindir}/wps-$comp
done

install -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/applications/wps-office-docker.desktop
ln -sf %{_bindir}/wps-office %{buildroot}%{_bindir}/wps-office-docker

cat > %{buildroot}%{_docdir}/%{name}/README << 'EOF'
WPS OFFICE DOCKER
=================
Версия: 12.1.2.23578-67.1

УСТАНОВКА:
  sudo rpm -ivh wps-office-docker-12.1.2.23578-67.1.x86_64.rpm

ЗАПУСК:
  wps-office          # Writer
  wps-presentation    # Presentation
  wps-spreadsheets    # Spreadsheets
  wps-pdf             # PDF Reader
EOF

echo "not_installed" > %{buildroot}%{_sharedstatedir}/%{name}/status

%post
update-desktop-database &>/dev/null || :
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
kbuildsycoca6 --noincremental &>/dev/null || :

chmod 755 /opt/wps-office 2>/dev/null || true
chmod 755 /var/log/wps-office-docker 2>/dev/null || true
chmod 755 /var/lib/wps-office-docker 2>/dev/null || true

touch /var/log/wps-office-docker/wps.log 2>/dev/null || true
chmod 666 /var/log/wps-office-docker/wps.log 2>/dev/null || true

gtk-update-icon-cache -f -t %{_datadir}/icons/hicolor &>/dev/null || :

echo ""
echo "==========================================================="
echo " WPS OFFICE DOCKER УСТАНОВЛЕН"
echo "==========================================================="
echo ""
echo " Запуск: wps-office"
echo " Иконка: синий знак на белом фоне"
echo ""

%preun
if [ $1 -eq 0 ]; then
    pkill -f wps-office 2>/dev/null || true
fi

%postun
update-desktop-database &>/dev/null || :
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :

%files
%defattr(-,root,root)
%{_bindir}/wps-office
%{_bindir}/wps-office-docker
%{_bindir}/wps-office-build
%{_bindir}/wps-writer
%{_bindir}/wps-presentation
%{_bindir}/wps-spreadsheets
%{_bindir}/wps-pdf
%{_datadir}/applications/wps-office-docker.desktop

# Иконки
%dir %{_datadir}/icons/
%dir %{_datadir}/icons/hicolor/
%dir %{_datadir}/icons/hicolor/128x128/
%dir %{_datadir}/icons/hicolor/128x128/apps/
%{_datadir}/icons/hicolor/128x128/apps/wps-office-docker.png
%{_datadir}/icons/hicolor/*x*/apps/wps-office-docker.png

# Конфиги
%dir %{_sysconfdir}/%{name}
%config(noreplace) %{_sysconfdir}/%{name}/Dockerfile.rosa

# Данные
%dir %attr(755,root,root) %{_sharedstatedir}/%{name}
%dir %attr(755,root,root) %{_sharedstatedir}/%{name}/source
%attr(644,root,root) %{_sharedstatedir}/%{name}/source/wps-office-12.1.2.23578-46.2.src.rpm
%dir %attr(755,root,root) %{_sharedstatedir}/%{name}/src
%{_sharedstatedir}/%{name}/src/
%attr(644,root,root) %{_sharedstatedir}/%{name}/status

# Логи
%dir %attr(755,root,root) %{_localstatedir}/log/%{name}
%ghost %attr(666,root,root) %{_localstatedir}/log/%{name}/wps.log
%ghost %attr(644,root,root) %{_localstatedir}/log/%{name}/build.log

# Документация
%dir %{_docdir}/%{name}
%doc %{_docdir}/%{name}/README

%changelog
* Tue Mar 17 2026 Alex S.Shubin <renard.corp@hotmail.com> 12.1.2.23578-67.1
- Исправлена ошибка с install для иконки
- Добавлен путь назначения для wps.png
- Иконка копируется в /usr/share/icons/hicolor/128x128/apps/
openSUSE Build Service is sponsored by