File gstarcad.spec of Package gstarcad
%global debug_package %{nil}
%global __provides_exclude_from ^/opt/.*$
%global __requires_exclude ^(ld.so|lib([a-r]|[A-R]|[t-z]|[T-Z]|shp|slm|SM|Spa|sqlite|Step)).*$
%define program_version 26.1
%define program_year 2026
Name: gstarcad
Version: %{program_version}
Release: 0%{?dist}
Summary: General Purpose 2D CAD Modeler
License: SUSE-NonFree
Group: Productivity/Graphics/CAD
URL: https://www.gstarcad.com/cad_linux/
Source0: %{name}.deb
Source1: %{name}.rpmlintrc
BuildRequires: hicolor-icon-theme
BuildRequires: desktop-file-utils
BuildRequires: chrpath
%if 0%{?suse_version} || 0%{?fedora} || 0%{?mageia}
BuildRequires: fdupes
%endif
%if 0%{?suse_version}
BuildRequires: update-desktop-files
%endif
Provides: gcad
ExclusiveArch: x86_64
%description
GstarCAD
%package senseshield
Summary: GstarCAD 加密狗
Group: Productivity/Security
Requires: gstarcad = %{version}
Supplements: %{name}
%description senseshield
提供GstarCAD激活服务
%prep
ar x %{SOURCE0}
tar -Jxvf data.tar.xz
# Use system libraries
for t in f l
do
# Remove libstdc++.so to fix graphics issues
find %{_builddir}/ -type ${t} -name "libstdc++.so*" -delete;
find %{_builddir}/ -type ${t} -name "libGL.so*" -o -name "libpcre16.so*" -delete;
done
# Fix invalid RPATH
# bad example: /scp/trunk/ss_v2.0_cp_pri/project/common/third/Virbox:/scp/trunk/ss_v2.0_cp_pri/project/common/third/lib_vmp:/scp/trunk/ss_v2.0_cp_pri/project/common/cbb/package/zcrypt/lib:/scp/trunk/ss_v2.0_cp_pri/project/common/third/openssl_ssl_linux/x64/lib
STRIP_FILE_LIST=$(find %{_builddir}/opt/ -type f -name "*.so*" -o -name "*.grx")" "$(find %{_builddir}/opt/ -type f -name sscfg -o -name ssclt -o -name senseshield -o -name virboxlcc)
for f in ${STRIP_FILE_LIST}
do
RPATH_DIR_LIST=$(chrpath -l ${f}|cut -d' ' -f2|cut -d'=' -f2|tr ':' '\n')
# No RPATH
[ "${RPATH_DIR_LIST}" = "no" ] && continue
RPATH_DIR=""
for p in ${RPATH_DIR_LIST}
do
[ -z "${p}" ] && continue
[[ "${p}" = "lib" ]] && continue
[[ "${p}" =~ "scp/trunk" ]] && continue
[[ "${p}" =~ "usr/local" ]] && continue
[[ "${p}" =~ "mnt/" ]] && continue
[[ "${p}" =~ "home/" ]] && continue
[[ "${p}" =~ "gcdyn.gdx" ]] && continue
[[ "${p}" =~ "RIGIN" ]] && continue
[ -z "${RPATH_DIR}" ] && RPATH_DIR=${p} || RPATH_DIR=${RPATH_DIR}":"${p}
done
# Remove invalid RPATH
[ -z "${RPATH_DIR}" ] && chrpath --delete ${f} && continue
chrpath -r "${RPATH_DIR}" ${f}
done
# Add keywords to desktop
find %{_builddir}/ -type f -name gstarsoft.gstarcad%{program_year}.desktop -exec sed -i -e '$i Keywords=cad;gcad;gstar;2d;draw;' {} \;
# Remove uninstall desktop
find %{_builddir}/ -type f -name gstarsoft.gstarcad%{program_year}-uninstall.desktop -delete;
# Disable gcad.log and debugging
find %{_builddir}/ -type f -name gcad.sh -exec sed -i -e '2i touch ~/gcad.log && chmod -w ~/gcad.log' -e 's/export QT_DEBUG_PLUGINS=1//' {} \;
# Fix filelist-forbidden-backup-file
find %{_builddir}/ -type f -iname "*.bak" -delete;
%build
%install
mkdir -p %{buildroot}%{_bindir} %{buildroot}%{_sbindir}
cp -a %{_builddir}/usr %{_builddir}/opt %{buildroot}
# .desktop
%if 0%{?suse_version}
%suse_update_desktop_file %{buildroot}%{_datadir}/applications/gstarsoft.gstarcad%{program_year}.desktop
%endif
# 加密狗服务
find %{_builddir}/etc/ -type f -name 80-elite5.rules -exec install -p -D -m 644 {} %{buildroot}%{_udevrulesdir}/80-elite5.rules \;
find %{buildroot}/opt/ -type f -name senseshield.service -exec install -p -D -m 644 {} %{buildroot}%{_unitdir}/senseshield.service \;
ln -sf %{_unitdir}/senseshield.service %{buildroot}%{_sbindir}/rcsenseshield
%if 0%{?suse_version} || 0%{?fedora} || 0%{?mageia}
%fdupes -s %{buildroot}/opt
%endif
%pre senseshield
%service_add_pre senseshield.service
%post senseshield
%service_add_post senseshield.service
%preun senseshield
%service_del_preun senseshield.service
%postun senseshield
%service_del_postun senseshield.service
%files
%dir /opt/apps
/opt/apps/gstar*/
%exclude /opt/apps/gstar*/files/com.virbox.senseshield/
%exclude /opt/apps/gstar*/files/sense_hw/
%{_datadir}/applications/gstarsoft.gstarcad%{program_year}.desktop
%{_datadir}/mime/packages/gstarsoft.gstarcad%{program_year}.xml
%{_datadir}/icons/hicolor/*/apps/*.svg
%{_datadir}/icons/hicolor/*/mimetypes/*.png
%files senseshield
/opt/apps/gstar*/files/com.virbox.senseshield/
/opt/apps/gstar*/files/sense_hw/
%{_unitdir}/senseshield.service
%{_sbindir}/rcsenseshield
%{_udevrulesdir}/80-elite5.rules
%changelog