ca2749e1bd
In practical terms, passt doesn't benefit from the additional protection offered by the AGPL over the GPL, because it's not suitable to be executed over a computer network. Further, restricting the distribution under the version 3 of the GPL wouldn't provide any practical advantage either, as long as the passt codebase is concerned, and might cause unnecessary compatibility dilemmas. Change licensing terms to the GNU General Public License Version 2, or any later version, with written permission from all current and past contributors, namely: myself, David Gibson, Laine Stump, Andrea Bolognani, Paul Holzinger, Richard W.M. Jones, Chris Kuhn, Florian Weimer, Giuseppe Scrivano, Stefan Hajnoczi, and Vasiliy Ulyanov. Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
110 lines
3.4 KiB
RPMSpec
110 lines
3.4 KiB
RPMSpec
# PASST - Plug A Simple Socket Transport
|
|
# for qemu/UNIX domain socket mode
|
|
#
|
|
# PASTA - Pack A Subtle Tap Abstraction
|
|
# for network namespace/tap device mode
|
|
#
|
|
# Copyright (c) 2022 Red Hat GmbH
|
|
# Author: Stefano Brivio <sbrivio@redhat.com>
|
|
|
|
%global git_hash {{{ git_head }}}
|
|
%global selinuxtype targeted
|
|
|
|
Name: passt
|
|
Version: {{{ git_version }}}
|
|
Release: 1%{?dist}
|
|
Summary: User-mode networking daemons for virtual machines and namespaces
|
|
License: GPLv2+ and BSD
|
|
Group: System Environment/Daemons
|
|
URL: https://passt.top/
|
|
Source: https://passt.top/passt/snapshot/passt-%{git_hash}.tar.xz
|
|
|
|
BuildRequires: gcc, make, checkpolicy, selinux-policy-devel
|
|
Requires: (%{name}-selinux = %{version}-%{release} if selinux-policy-%{selinuxtype})
|
|
|
|
%description
|
|
passt implements a translation layer between a Layer-2 network interface and
|
|
native Layer-4 sockets (TCP, UDP, ICMP/ICMPv6 echo) on a host. It doesn't
|
|
require any capabilities or privileges, and it can be used as a simple
|
|
replacement for Slirp.
|
|
|
|
pasta (same binary as passt, different command) offers equivalent functionality,
|
|
for network namespaces: traffic is forwarded using a tap interface inside the
|
|
namespace, without the need to create further interfaces on the host, hence not
|
|
requiring any capabilities or privileges.
|
|
|
|
%package selinux
|
|
BuildArch: noarch
|
|
Summary: SELinux support for passt and pasta
|
|
Requires: %{name} = %{version}-%{release}
|
|
Requires: selinux-policy
|
|
Requires(post): %{name}
|
|
Requires(post): policycoreutils
|
|
Requires(preun): %{name}
|
|
Requires(preun): policycoreutils
|
|
|
|
%description selinux
|
|
This package adds SELinux enforcement to passt(1) and pasta(1).
|
|
|
|
%prep
|
|
%setup -q -n passt-%{git_hash}
|
|
|
|
%build
|
|
%set_build_flags
|
|
%make_build VERSION="%{version}-%{release}.%{_arch}"
|
|
|
|
%install
|
|
%make_install DESTDIR=%{buildroot} prefix=%{_prefix} bindir=%{_bindir} mandir=%{_mandir} docdir=%{_docdir}/%{name}
|
|
%ifarch x86_64
|
|
ln -sr %{buildroot}%{_mandir}/man1/passt.1 %{buildroot}%{_mandir}/man1/passt.avx2.1
|
|
ln -sr %{buildroot}%{_mandir}/man1/pasta.1 %{buildroot}%{_mandir}/man1/pasta.avx2.1
|
|
%endif
|
|
|
|
pushd contrib/selinux
|
|
make -f %{_datadir}/selinux/devel/Makefile
|
|
install -p -m 644 -D passt.pp %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/passt.pp
|
|
install -p -m 644 -D passt.if %{buildroot}%{_datadir}/selinux/devel/include/distributed/passt.if
|
|
install -p -m 644 -D pasta.pp %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/pasta.pp
|
|
popd
|
|
|
|
%pre selinux
|
|
%selinux_relabel_pre -s %{selinuxtype}
|
|
|
|
%post selinux
|
|
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/passt.pp
|
|
%selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/pasta.pp
|
|
|
|
%postun selinux
|
|
if [ $1 -eq 0 ]; then
|
|
%selinux_modules_uninstall -s %{selinuxtype} passt
|
|
%selinux_modules_uninstall -s %{selinuxtype} pasta
|
|
fi
|
|
|
|
%posttrans selinux
|
|
%selinux_relabel_post -s %{selinuxtype}
|
|
|
|
%files
|
|
%license LICENSES/{GPL-2.0-or-later.txt,BSD-3-Clause.txt}
|
|
%dir %{_docdir}/%{name}
|
|
%doc %{_docdir}/%{name}/README.md
|
|
%doc %{_docdir}/%{name}/demo.sh
|
|
%{_bindir}/passt
|
|
%{_bindir}/pasta
|
|
%{_bindir}/qrap
|
|
%{_mandir}/man1/passt.1*
|
|
%{_mandir}/man1/pasta.1*
|
|
%{_mandir}/man1/qrap.1*
|
|
%ifarch x86_64
|
|
%{_bindir}/passt.avx2
|
|
%{_mandir}/man1/passt.avx2.1*
|
|
%{_bindir}/pasta.avx2
|
|
%{_mandir}/man1/pasta.avx2.1*
|
|
%endif
|
|
|
|
%files selinux
|
|
%{_datadir}/selinux/packages/%{selinuxtype}/passt.pp
|
|
%{_datadir}/selinux/devel/include/distributed/passt.if
|
|
%{_datadir}/selinux/packages/%{selinuxtype}/pasta.pp
|
|
|
|
%changelog
|
|
{{{ passt_git_changelog }}}
|