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
openSUSE Build Service is sponsored by