BastionGuard/fedora_rpm/bastionguard_fedora.spec
specialworld83 f0f913a209 Release 2.0
2026-07-15 10:52:22 +02:00

303 lines
10 KiB
RPMSpec

#
# BastionGuard™
# Copyright (C) 2025–2026 Calogero Scarnà
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
# BastionGuard™ is a trademark of Calogero Scarnà.
# The BastionGuard™ name and branding are not licensed under the GPL.
#
Name: bastionguard
Version: 2.0
Release: 1%{?dist}
Summary: BastionGuard Security Platform
Provides: bastionguard = %{version}-%{release}
Obsoletes: bastionguard < %{version}-%{release}
License: GPLv3
URL: https://git.bastionguard.eu/specialworld83/BastionGuard
Source0: %{name}-%{version}.tar.gz
%global debug_package %{nil}
BuildRequires: gcc-c++
BuildRequires: cmake
BuildRequires: make
BuildRequires: pkgconf-pkg-config
BuildRequires: gettext
BuildRequires: python3
BuildRequires: rsync
BuildRequires: git
BuildRequires: systemd-rpm-macros
BuildRequires: gtkmm4.0-devel
BuildRequires: glibmm2.68-devel
BuildRequires: pangomm2.48-devel
BuildRequires: libsigc++30-devel
BuildRequires: libsoup3-devel
BuildRequires: libsecret-devel
BuildRequires: systemd-devel
BuildRequires: libidn2-devel
BuildRequires: sqlite-devel
BuildRequires: libcurl-devel
BuildRequires: openssl-devel
BuildRequires: boost-devel
BuildRequires: re2-devel
BuildRequires: vectorscan-devel
BuildRequires: nlohmann-json-devel
BuildRequires: yara-devel
BuildRequires: polkit-devel
BuildRequires: libffi-devel
BuildRequires: zlib-devel
BuildRequires: pcre2-devel
BuildRequires: libpng-devel
BuildRequires: libjpeg-turbo-devel
BuildRequires: libtiff-devel
BuildRequires: libwebp-devel
BuildRequires: nss-devel
BuildRequires: nspr-devel
BuildRequires: fribidi-devel
BuildRequires: libX11-devel
BuildRequires: libXcursor-devel
BuildRequires: libXrandr-devel
BuildRequires: libXi-devel
BuildRequires: libXinerama-devel
BuildRequires: libXdamage-devel
BuildRequires: libXcomposite-devel
BuildRequires: libxkbcommon-devel
BuildRequires: wayland-devel
BuildRequires: alsa-lib-devel
BuildRequires: pipewire-jack-audio-connection-kit-devel
BuildRequires: libsmbclient-devel
BuildRequires: libzstd-devel
BuildRequires: lzo-devel
BuildRequires: nginx
BuildRequires: php-fpm
BuildRequires: dnsmasq
BuildRequires: polkit
BuildRequires: rsync
BuildRequires: yara
BuildRequires: bubblewrap
BuildRequires: clamav
BuildRequires: clamav-freshclam
BuildRequires: clamd
BuildRequires: curl
BuildRequires: nss
BuildRequires: nss-tools
BuildRequires: sudo
# bastionguard-backup (fork GTK4 in Vala, build Meson)
BuildRequires: meson
BuildRequires: ninja-build
BuildRequires: vala
BuildRequires: gtk4-devel
BuildRequires: glib2-devel
BuildRequires: json-glib-devel
BuildRequires: vte291-gtk4-devel
BuildRequires: libgee-devel
BuildRequires: help2man
BuildRequires: vte291
BuildRequires: vte291-devel
# bastionguard-secure-connection (Meson + Go)
BuildRequires: golang
BuildRequires: protobuf-compiler
BuildRequires: protobuf-devel
BuildRequires: grpc-plugins
BuildRequires: grpc-devel
# SC GUI (mappa) + daemon eBPF
BuildRequires: libshumate-devel
BuildRequires: libnetfilter_queue-devel
BuildRequires: libbpf
BuildRequires: libbpf-devel
BuildRequires: libbpf-tools
BuildRequires: bpftool
BuildRequires: clang
BuildRequires: patchelf
Requires: nginx
Requires: php-fpm
Requires: dnsmasq
Requires: polkit
Requires: rsync
Requires: yara
Requires: bubblewrap
Requires: clamav
Requires: clamav-freshclam
Requires: clamd
Requires: curl
Requires: nss
Requires: nss-tools
Requires: sudo
%{?systemd_requires}
%description
Transparent security control plane for Linux desktops.
BastionGuard is not a "trust us" security product.
It is a security control plane for Linux desktops where every protection
mechanism is explicit, deterministic, and observable.
%prep
%autosetup -n %{name}-%{version}
%build
rm -rf build
mkdir -p build
cd build
unset LD_LIBRARY_PATH LIBRARY_PATH CMAKE_PREFIX_PATH PKG_CONFIG_PATH
export LDFLAGS="%{build_ldflags}"
export CFLAGS="%{build_cflags}"
export CXXFLAGS="%{build_cxxflags}"
cmake .. \
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir} \
-DCMAKE_INSTALL_LOCALSTATEDIR=%{_localstatedir} \
-DCMAKE_INSTALL_DATAROOTDIR=%{_datadir} \
-DENABLE_SYSTEMD_SERVICES=OFF \
-DENABLE_USER_AGENT_AUTO=OFF \
-DINSTALL_NGINX_DEFAULTS=OFF \
-DBG_PACKAGING=ON \
-DBG_DEBIAN_NO_INSTALL_CODE=ON \
-DENABLE_CEF=ON \
-DENABLE_CEF_DAEMON=OFF \
-DENABLE_SYSTEM_CA_INSTALL=OFF \
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
-DCMAKE_INSTALL_RPATH='$ORIGIN/../share/BastionGuard/lib;$ORIGIN/../share/BastionGuard/cef' \
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF
make
%install
rm -rf %{buildroot}
cd build
export DESTDIR=%{buildroot}
make install
# Fedora/RHEL family: il runtime CEF incorporato e le GUI Secure Browser
# devono essere presenti; daemon CEF, servizio, installazione CA e attivazione
# devono invece essere esclusi direttamente dal CMake.
for _forbidden in \
"%{buildroot}%{_bindir}/bastionguard-cef" \
"%{buildroot}%{_bindir}/bastionguard-activation-helper" \
"%{buildroot}%{_datadir}/polkit-1/actions/eu.bastionguard.install-ca.policy" \
"%{buildroot}%{_datadir}/polkit-1/actions/org.bastionguard.activation.policy" \
"%{buildroot}%{_datadir}/BastionGuard/data/scripts/install-ca-system.sh" \
"%{buildroot}%{_userunitdir}/BastionGuard-cef.service" \
"%{buildroot}%{_datadir}/BastionGuard/data/service/BastionGuard-cef.service" \
"%{buildroot}%{_unitdir}/bastionguard-cef.service"; do
test ! -e "$_forbidden"
done
# Le GUI e i launcher Secure Browser devono rimanere nel pacchetto.
for _required in \
"%{buildroot}%{_bindir}/BastionGuard-bankopener" \
"%{buildroot}%{_bindir}/BastionGuard-bankgui" \
"%{buildroot}%{_bindir}/BastionGuard-secure" \
"%{buildroot}%{_bindir}/BastionGuard-secure-gui" \
"%{buildroot}%{_datadir}/applications/BastionGuard-bankgui.desktop" \
"%{buildroot}%{_datadir}/applications/BastionGuard-secure.desktop" \
"%{buildroot}%{_datadir}/applications/bastionguard-bankopener.desktop"; do
test -e "$_required"
done
# Runtime CEF incorporato richiesto da BankOpener e Secure Browser.
test -d "%{buildroot}%{_datadir}/BastionGuard/cef"
install -dm750 %{buildroot}%{_sharedstatedir}/bastionguard-webui/{cache,quarantine,sessions,tmp}
install -dm755 %{buildroot}%{_localstatedir}/log/bastionguard-webui
test -x %{buildroot}%{_bindir}/BastionGuard
file %{buildroot}%{_bindir}/BastionGuard | grep -q "ELF 64-bit"
readelf -d %{buildroot}%{_bindir}/BastionGuard | grep -q NEEDED
%postun
if command -v systemctl >/dev/null 2>&1; then
systemctl daemon-reload >/dev/null 2>&1 || :
fi
:
%files
%{_bindir}/*
%{_datadir}/BastionGuard
%{_datadir}/bastionguard-backup
%{_datadir}/bastionguard-sc
%{_datadir}/applications/BastionGuard.desktop
%{_datadir}/applications/bastionguard-sc.desktop
%{_datadir}/applications/bastionguard-backup-gtk.desktop
%{_datadir}/applications/BastionGuard-bankgui.desktop
%{_datadir}/applications/BastionGuard-secure.desktop
%{_datadir}/applications/bastionguard-bankopener.desktop
%config(noreplace) %{_sysconfdir}/xdg/autostart/BastionGuard-autostart.desktop
%config(noreplace) %{_sysconfdir}/xdg/autostart/bastionguard-sc-autostart.desktop
%{_datadir}/dbus-1/services/org.BastionGuard.RansomwareAlert.service
%{_datadir}/dbus-1/system-services/org.BastionGuard.USBD.service
%{_datadir}/dbus-1/system.d/org.BastionGuard.USBD.conf
%{_datadir}/polkit-1/actions/it.BastionGuard.camera.policy
%{_datadir}/polkit-1/actions/org.BastionGuard.policy
%{_datadir}/polkit-1/actions/org.BastionGuard.ransomware.policy
%{_datadir}/polkit-1/actions/org.BastionGuard.USBD.policy
%{_datadir}/polkit-1/actions/eu.bastionguard.sc.policy
%{_datadir}/polkit-1/actions/org.bastionguard.pkexec.backup.policy
%{_unitdir}/*
%{_userunitdir}/*
/usr/share/locale/*
/usr/share/icons/*
/usr/share/plymouth/*
/etc/bastionguard-backup/*
/usr/lib/bastionguard-sc/*
/usr/share/metainfo/*
/usr/share/man/*
/usr/share/icons/hicolor/*/apps/*
%dir %{_libexecdir}/bastionguard
%{_libexecdir}/bastionguard/archive_worker
%config(noreplace) %{_sysconfdir}/sudoers.d/bastionguard-helper
%config(noreplace) %{_sysconfdir}/sudoers.d/bastionguard-phishing
%config(noreplace) %{_sysconfdir}/sudoers.d/bastionguard-bank
%dir %attr(750,apache,apache) %{_sharedstatedir}/bastionguard-webui
%dir %attr(750,apache,apache) %{_sharedstatedir}/bastionguard-webui/cache
%dir %attr(750,apache,apache) %{_sharedstatedir}/bastionguard-webui/quarantine
%dir %attr(750,apache,apache) %{_sharedstatedir}/bastionguard-webui/sessions
%dir %attr(750,apache,apache) %{_sharedstatedir}/bastionguard-webui/tmp
%dir %attr(755,root,root) %{_localstatedir}/log/bastionguard-webui
# ── BastionGuard Recovery Data ──────────────────────────────
%{_datadir}/bastionguard-recovery-data
%{_datadir}/applications/com.bastionguard.RecoveryData.desktop
%{_datadir}/polkit-1/actions/com.bastionguard.RecoveryData.policy
%{_datadir}/locale/*/LC_MESSAGES/bastionguard-recovery-data.mo
# ── Plymouth theme ──────────────────────────────────────────
%{_datadir}/plymouth/themes/bastionguard
%{_datadir}/pixmaps/*
# ── BastionGuard Secure Connection: config daemon ───────────
%dir %{_sysconfdir}/bastionguard-secure-connectiond
%config(noreplace) %{_sysconfdir}/bastionguard-secure-connectiond/*
%changelog
* Fri Jun 12 2026 Calogero Scarnà <info@bastionguard.eu> - 2.0
- Update package