File aspia.spec of Package aspia
Name: aspia
Version: 2.7.0
Release: 0
Summary: Remote desktop control and monitoring tool
License: GPL-3.0-or-later
URL: https://www.aspia.ru
Source0: %{name}-%{version}.tar.gz
BuildRequires: cmake >= 3.21
BuildRequires: gcc-c++
BuildRequires: pkgconfig
BuildRequires: libQt5Widgets-devel libQt5Network-devel libQt5PrintSupport-devel libQt5Xml-devel libqt5-linguist-devel
%if 0%{?suse_version} > 1600
BuildRequires: libqt5-qtbase-private-headers-devel
%else
BuildRequires: libQt5Core-private-headers-devel
%endif
BuildRequires: asio-devel libcurl-devel fmt-devel libyuv-devel openssl-devel libopus-devel protobuf-devel rapidjson-devel sqlite3-devel libzstd-devel libicu-devel libjpeg-devel libvpx-devel libpulse-devel
BuildRequires: pkgconfig(x11) pkgconfig(xfixes) pkgconfig(xdamage) pkgconfig(xrandr) pkgconfig(xtst) pkgconfig(xi) pkgconfig(xext) pkgconfig(xcomposite) pkgconfig(systemd)
BuildRequires: hicolor-icon-theme
%description
Aspia is a remote desktop control and monitoring tool.
%prep
%setup -q
# --- ГИБРИДНАЯ ОЧИСТКА ---
%if 0%{?suse_version} > 1600
# Tumbleweed: функции-заглушки
sed -i '1i function(add_executable name)\n if(name MATCHES "test")\n return()\n endif()\n _add_executable(${name} ${ARGN})\nendfunction()' CMakeLists.txt
sed -i '1i function(target_link_libraries name)\n if(NOT TARGET ${name})\n return()\n endif()\n _target_link_libraries(${name} ${ARGN})\nendfunction()' CMakeLists.txt
%else
# Leap 16.0: жесткая зачистка тестов и приватных таргетов Qt
find . -type f -name "CMakeLists.txt" -exec sed -i -E '/add_subdirectory\((test|tests)\)/d' {} +
find . -type f -name "CMakeLists.txt" -exec sed -i -E '/add_executable\(.*test/,/\)/d' {} +
find . -type f -name "CMakeLists.txt" -exec sed -i -E '/target_link_libraries\(.*test/,/\)/d' {} +
# Удаляем ВСЕ Qt5::...Private
find . -type f -name "CMakeLists.txt" -exec sed -i -E 's/Qt5::[a-zA-Z]+Private//g' {} +
%endif
# --- ОБЩИЕ ИСПРАВЛЕНИЯ (оставляем как было) ---
sed -i '1i cmake_policy(SET CMP0069 NEW)' CMakeLists.txt
sed -i -E '/find_package\((asio|RapidJSON|GTest|libyuv|Opus|fmt|zstd|unofficial-libvpx|unofficial-sqlite3).*REQUIRED\)/d' CMakeLists.txt
sed -i -E 's/find_package\(CURL.*CONFIG REQUIRED\)/find_package(CURL REQUIRED)/gI' CMakeLists.txt
sed -i 's/find_package(protobuf CONFIG REQUIRED)/find_package(Protobuf REQUIRED)/' CMakeLists.txt
sed -i 's/find_package(ICU REQUIRED uc dt)/find_package(ICU REQUIRED COMPONENTS uc data)/' CMakeLists.txt
# Массовая линковка системных библиотек
find . -type f -name "CMakeLists.txt" -exec sed -i \
-e 's/Opus::opus/opus/g' -e 's/fmt::fmt/fmt/g' -e 's/fmt-header-only/fmt/g' \
-e 's/zstd::libzstd_static/zstd/g' -e 's/RapidJSON::RapidJSON/ /g' \
-e 's/unofficial::libvpx::libvpx/vpx/g' -e 's/unofficial::sqlite3::sqlite3/sqlite3/g' \
-e 's/libyuv::libyuv/yuv/g' -e 's/CURL::libcurl/curl/g' -e 's/asio::asio/ /g' \
-e 's/ICU::dt/ICU::data/g' -e 's/Qt5::QICOPlugin/ /g' -e 's/Qt5::QGenericEnginePlugin/ /g' \
-e 's/X11::[A-Za-z0-9]*/&/g' -e 's/X11:://g' {} +
# Фикс для aspia_base
sed -i 's/target_link_libraries(aspia_base PRIVATE/target_link_libraries(aspia_base PRIVATE X11 Xext Xdamage Xfixes Xrandr Xtst Xi Xcomposite /' source/base/CMakeLists.txt
# Версии
find . -type f -name "CMakeLists.txt" -exec sed -i -E 's/set\(GIT_COMMIT_COUNT .*\)/set(GIT_COMMIT_COUNT 4866)/g' {} +
sed -i 's/set(ASPIA_VERSION_REVISION 0)/set(ASPIA_VERSION_REVISION 4866)/g' CMakeLists.txt
sed -i 's/project(aspia VERSION 2.7.0)/project(aspia VERSION 2.7.0.4866)/g' CMakeLists.txt
%build
%if 0%{?suse_version} <= 1600
# Для Leap 16.0 собираем пути ко всем приватным заголовкам, которые могут понадобиться
QT_VER=$(rpm -q --queryformat '%%{VERSION}' libQt5Widgets-devel)
QT_INC="-I/usr/include/qt5/QtGui/${QT_VER} -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore/${QT_VER} -I/usr/include/qt5/QtCore -I/usr/include/qt5/QtNetwork/${QT_VER} -I/usr/include/qt5/QtNetwork"
%endif
export CXXFLAGS="%{optflags} ${QT_INC} -I/usr/include/opus -I/usr/include/libvpx -I/usr/include/libyuv"
%cmake \
-DBUILD_TESTING=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DASPIA_VERSION_REVISION=4866 \
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF
%cmake_build
%install
%cmake_install
if [ "%{_libdir}" != "/usr/lib" ] && [ -f %{buildroot}/usr/lib/libaspia_host_core.so ]; then
mkdir -p %{buildroot}%{_libdir}
mv %{buildroot}/usr/lib/libaspia_host_core.so %{buildroot}%{_libdir}/
fi
%files
%license LICENSE.md
%doc README.md
%{_bindir}/aspia_*
%{_libdir}/libaspia_host_core.so
%{_unitdir}/aspia-*.service
%{_datadir}/applications/aspia-*.desktop
%{_datadir}/mime/packages/aspia-console.xml
%{_datadir}/icons/hicolor/