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