File wps-office.spec of Package wps-office

%global debug_package %{nil}
%global __provides_exclude_from ^/opt/.*$
%global __requires_exclude ^lib(aeo|asound|atk|Qt|xsl|av|cef|curl|c\+\+|et|EGL|grid|icu|IRLAS|html|jde|js|k|libsafec|media|my|opencv|qing|paho|pdfcore|pdfui|ppt|rpc|search|sqlite|ssl|sw|thrift|tiff|uof|v8|vbe|wp|xcb|xkb|xe).*$
%global program_version 12.1.0.17900
Name:           wps-office
Version:        %{program_version}
Release:        0%{?dist}
Summary:        WPS Office Suite
License:        SUSE-NonFree
Group:          Productivity/Office/Suite
URL:            http://wps-community.org/
Source0:        %{name}.rpm
Source1:        %{name}.rpmlintrc

BuildRequires:  bash
BuildRequires:  chrpath
BuildRequires:  cpio
BuildRequires:  desktop-file-utils
BuildRequires:  hicolor-icon-theme
BuildRequires:  rpm
BuildRequires:  findutils
BuildRequires:  (chmod or coreutils)

%if 0%{?suse_version} || 0%{?fedora} || 0%{?mageia}
BuildRequires:  fdupes
%endif
%if 0%{?suse_version}
BuildRequires:  update-desktop-files
%endif

Requires:       libc++abi
Requires:       libc++
Requires:       libcurl
Requires:       libpng-devel
Requires:       openssl
Requires:       bzip2-libs
Requires:       cairo
Requires:       dbus-libs
Requires:       libjpeg-turbo
Requires:       nss
Requires:       unixODBC
Requires:       SDL2
Requires:       ffmpeg-libs

ExclusiveArch:  x86_64

%description
WPS Office including Writer, Presentation and Spreadsheets is a powerful 
office suite capable of processing word files, creating presentations, 
and analyzing data. It features deep compatibility with Microsoft Office 
file formats and can easily open and read documents created with MS Office.

This is the Linux version. Welcome to our website: http://wps-community.org

%prep
# No prep needed as we're using binary source

%build
# No build needed for binary package

%install
# Create build root directory
mkdir -p %{buildroot}

# Extract binary RPM with proper permissions
rpm2cpio %{SOURCE0} | cpio -idm -D %{buildroot} --no-preserve-owner

# Fix file permissions
find %{buildroot} -name '*.cfg' -exec chmod 644 {} \;
find %{buildroot} -name '*.xml' -exec chmod 644 {} \;
find %{buildroot} -name '*.desktop' -exec chmod 644 {} \;
find %{buildroot} -name '*.sh' -exec chmod 755 {} \;

# Remove bundled libraries to use system ones
remove_bundled_libs() {
    local lib_patterns=(
        "libbz2.so*" "libc++.so*" "libc++abi.so*" "libcairo.so*"
        "libdbus-1.so*" "libjpeg.so*" "libsmime3.so" "libnss3.so*"
        "libnssckbi.so" "libnssdbm3.so" "libnssutil3.so" "libstdc++.so*"
        "libodbc.so*" "libodbccr.so" "libodbcinst.so" "libpng16.so*"
        "libSDL2.so*" "libSDL2-2.0.so*" "libswscale.so*" "libswresample.so*"
        "libtcmalloc_minimal.so*"
    )
    
    for pattern in "${lib_patterns[@]}"; do
        find %{buildroot} -type f -name "$pattern" -delete
        find %{buildroot} -type l -name "$pattern" -delete
    done
}

remove_bundled_libs

# Fix RPATH issues
fix_rpath() {
    local files
    files=$(find %{buildroot}/opt/ -type f -name "*.so*")
    files+=" $(find %{buildroot}/opt/kingsoft/wps-office/office*/ -maxdepth 1 -type f \
        -name transerr -o -name et -o -name wpp -o -name wpspdf \
        -o -name parsecloudfiletool -o -name wps -o -name promecefpluginhost)"
    
    for file in $files; do
        if [ ! -f "$file" ]; then
            continue
        fi
        
        rpath_info=$(chrpath -l "$file" 2>/dev/null || echo "")
        if [[ "$rpath_info" == *"no"* ]] || [ -z "$rpath_info" ]; then
            continue
        fi
        
        rpath_dirs=$(echo "$rpath_info" | cut -d' ' -f2 | cut -d'=' -f2 | tr ':' '\n')
        new_rpath=""
        
        for dir in $rpath_dirs; do
            [ -z "$dir" ] && continue
            [[ "$dir" =~ "build/data" ]] && continue
            [ -z "$new_rpath" ] && new_rpath="$dir" || new_rpath="$new_rpath:$dir"
        done
        
        if [ -z "$new_rpath" ]; then
            chrpath --delete "$file"
        else
            chrpath -r "$new_rpath" "$file"
        fi
    done
}

fix_rpath

# Fix insecure permissions
find %{buildroot} -type f -perm /u=w,g=w,o=w -exec chmod 644 {} \;
find %{buildroot} -type d -perm /o=w -exec chmod 755 {} \;

%if 0%{?suse_version} || 0%{?fedora} || 0%{?mageia}
%fdupes -s %{buildroot}/opt/
%fdupes -s %{buildroot}/usr/share/icons/
%endif

%post
# Update desktop database and icons
update-desktop-database &>/dev/null || :
update-mime-database %{_datadir}/mime &>/dev/null || :
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :

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

%files
%defattr(-,root,root,-)
%dir /opt/kingsoft
/opt/kingsoft/wps-office
%dir /usr/share/fonts/wps-office
/usr/share/fonts/wps-office/*
/usr/share/applications/wps-office-*
%dir /usr/share/templates
/usr/share/templates/.source
/usr/share/templates/*.desktop
/usr/share/templates/.source/*
%dir /etc/xdg/menus/applications-merged
/etc/xdg/menus/applications-merged/wps-office.menu

%{_bindir}/wps
%{_bindir}/et
%{_bindir}/wpp
%{_bindir}/wpspdf

%{_datadir}/mime/packages/wps-office-*

# Иконки приложений
%{_datadir}/icons/hicolor/16x16/apps/wps-office*.png
%{_datadir}/icons/hicolor/24x24/apps/wps-office*.png
%{_datadir}/icons/hicolor/32x32/apps/wps-office*.png
%{_datadir}/icons/hicolor/48x48/apps/wps-office*.png
%{_datadir}/icons/hicolor/64x64/apps/wps-office*.png
%{_datadir}/icons/hicolor/96x96/apps/wps-office*.png
%{_datadir}/icons/hicolor/128x128/apps/wps-office*.png
%{_datadir}/icons/hicolor/256x256/apps/wps-office*.png
%{_datadir}/icons/hicolor/512x512/apps/wps-office*.png
%{_datadir}/icons/hicolor/scalable/apps/wps-office*.svg

# Иконки MIME-типов
%{_datadir}/icons/hicolor/16x16/mimetypes/wps-office*.png
%{_datadir}/icons/hicolor/24x24/mimetypes/wps-office*.png
%{_datadir}/icons/hicolor/32x32/mimetypes/wps-office*.png
%{_datadir}/icons/hicolor/48x48/mimetypes/wps-office*.png
%{_datadir}/icons/hicolor/64x64/mimetypes/wps-office*.png
%{_datadir}/icons/hicolor/96x96/mimetypes/wps-office*.png
%{_datadir}/icons/hicolor/128x128/mimetypes/wps-office*.png
%{_datadir}/icons/hicolor/256x256/mimetypes/wps-office*.png
%{_datadir}/icons/hicolor/512x512/mimetypes/wps-office*.png

%exclude %{_datadir}/desktop-directories
%exclude %{_datadir}/icons/hicolor/20x20
%exclude %{_datadir}/icons/hicolor/40x40

%changelog
* Wed Dec 11 2024 Your Name <your.email@example.com> - 12.1.0.17900-0
- Added all missing icon files to %files section
- Updated spec file with proper dependencies
- Fixed file permissions issues
- Added proper post/postun scripts
- Cleaned up bundled libraries
- Fixed RPATH issues
- Improved package structure
openSUSE Build Service is sponsored by