%global _missing_build_ids_terminate_build 0 %global debug_package %{nil} Name: NekoBox Version: 5.6.3 Release: 0%{?autorelease} Summary: Qt based cross-platform GUI proxy configuration manager (backend: sing-box) URL: https://github.com/qr243vbi/nekobox License: GPLv3 Source0: %{url}/releases/download/%{version}/nekobox-unified-source-%{version}.tar.xz BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: pkgconfig(protobuf) BuildRequires: pkgconfig(libcurl) BuildRequires: cmake(yaml-cpp) BuildRequires: cmake(ZXing) BuildRequires: cmake(absl) BuildRequires: cmake(Qt6) BuildRequires: cmake(Qt6Qml) BuildRequires: cmake(Qt6Network) BuildRequires: cmake(Qt6Svg) BuildRequires: cmake(Qt6Linguist) BuildRequires: cmake(Qt6Gui) BuildRequires: cmake(Qt6Core) BuildRequires: cmake(Qt6Widgets) BuildRequires: (upx or bash) BuildRequires: chrpath BuildRequires: make BuildRequires: sed BuildRequires: golang >= 1.24 %package -n nekobox Summary: %{summary} Requires: nekobox-core %define main nekobox %define core nekobox_core %package -n nekobox-core Summary: %{summary} %description %{summary}. %description -n nekobox %{summary}. %description -n nekobox-core %{summary}. %prep %autosetup -p1 -n nekobox-unified-source-%{version} %build ( DEST=$PWD/build GOARCH="" GOOS=linux SKIP_UPDATER=y GOFLAGS='-mod=vendor %{?gobuildflags}' VERSION_SINGBOX="$(cat SingBox.Version)" . script/build_go.sh ) %if %{undefined optflags} %define optflags -O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables %endif ( export CXXFLAGS="$CXXFLAGS -Wno-error=return-type" export CFLAGS="$CFLAGS -Wno-error=return-type" export INPUT_VERSION="%{version}" cmake -S . -B build -DSKIP_UPDATE_BUTTON=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS:STRING="%{optflags}" -DCMAKE_CXX_FLAGS:STRING="%{optflags}" -DCMAKE_EXE_LINKER_FLAGS:STRING="-Wl,--as-needed -Wl,--no-undefined" cmake --build build ) %install mkdir -p %{buildroot}%{_libdir}/%{name} mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_datadir}/applications mkdir -p %{buildroot}%{_datadir}/icons cat << EOF > %{buildroot}%{_bindir}/%{main} #!%{_bindir}/sh %{_libdir}/%{name}/%{main} -appdata "${@}" EOF cat << EOF > %{buildroot}%{_datadir}/applications/%{main}.desktop [Desktop Entry] Version=1.0 Terminal=false Type=Application Name=%{main} Categories=Network; Comment=Qt based cross-platform GUI proxy configuration manager (backend: sing-box) Comment[zh_CN]=基于 Qt 的跨平台代理配置管理器 (后端 sing-box) Keywords=Internet;VPN;Proxy;sing-box; Exec=%{_bindir}/%{main} Icon=%{_datadir}/icons/%{main}.ico EOF cp build/%{main} %{buildroot}%{_libdir}/%{name}/%{main} cp build/%{core} %{buildroot}%{_libdir}/%{name}/%{core} mv res/public %{buildroot}%{_libdir}/%{name}/public echo "%{version}" > %{buildroot}%{_libdir}/%{name}/version.txt cp srslist.json %{buildroot}%{_libdir}/%{name}/srslist.json cp *.js %{buildroot}%{_libdir}/%{name}/ cp res/%{main}.ico %{buildroot}%{_datadir}/icons/%{main}.ico chrpath -d %{buildroot}%{_libdir}/%{name}/%{main} upx %{buildroot}%{_libdir}/%{name}/%{main} ||: upx %{buildroot}%{_libdir}/%{name}/%{core} ||: %files -n nekobox %attr(0755, -, -) %{_bindir}/%{main} %attr(0755, -, -) %{_libdir}/%{name}/%{main} %attr(0755, -, -) %dir %{_libdir}/%{name}/public %attr(0644, -, -) %{_libdir}/%{name}/public/*.png %attr(0644, -, -) %{_libdir}/%{name}/version.txt %attr(0644, -, -) %{_libdir}/%{name}/srslist.json %attr(0644, -, -) %{_datadir}/icons/%{main}.ico %attr(0644, -, -) %{_datadir}/applications/%{main}.desktop %attr(0644, -, -) %{buildroot}%{_libdir}/%{name}/*.js %files -n nekobox-core %dir %{_libdir}/%{name} %attr(0755, -, -) %{_libdir}/%{name}/%{core}