Blob Blame History Raw
%global commit 03fa76f835e0954845b206c6f0cadf39975ba82c

%if 0%{?fedora} || 0%{?rhel} > 8
%global link_bin nc
%global link_man nc-man
%else
%global link_bin nmap
%global link_man ncman
%endif

Summary:         OpenBSD netcat to read and write data across connections using TCP or UDP
Name:            netcat
# Version from CVS revision of OpenBSD netcat.c
Version:         1.226
Release:         3%{?dist}
# BSD-3-Clause: nc.1 and netcat.c
# BSD-2-Clause: atomicio.{c,h} and socks.c
License:         BSD-3-Clause AND BSD-2-Clause
URL:             https://man.openbsd.org/nc.1
Source0:         https://raw.githubusercontent.com/openbsd/src/%{commit}/usr.bin/nc/netcat.c
Source1:         https://raw.githubusercontent.com/openbsd/src/%{commit}/usr.bin/nc/nc.1
Source2:         https://raw.githubusercontent.com/openbsd/src/%{commit}/usr.bin/nc/atomicio.c
Source3:         https://raw.githubusercontent.com/openbsd/src/%{commit}/usr.bin/nc/atomicio.h
Source4:         https://raw.githubusercontent.com/openbsd/src/%{commit}/usr.bin/nc/socks.c
Source5:         https://raw.githubusercontent.com/openbsd/src/%{commit}/usr.bin/nc/Makefile
# Port peculiarities from OpenBSD to Linux
Patch0:          https://salsa.debian.org/debian/netcat-openbsd/-/raw/08f1670e0f7c682b3a86335c026a2df62daab3d4/debian/patches/port-to-linux-with-libbsd.patch
BuildRequires:   make
BuildRequires:   gcc
BuildRequires:   libbsd-devel
BuildRequires:   libretls-devel
Requires(post):  %{_sbindir}/alternatives
Requires(preun): %{_sbindir}/alternatives

%description
The OpenBSD nc (or netcat) utility can be used for just about anything involving
TCP, UDP, or UNIX-domain sockets. It can open TCP connections, send UDP packets,
listen on arbitrary TCP and UDP ports, do port scanning, and deal with both IPv4
and IPv6. Unlike telnet(1), nc scripts nicely, and separates error messages onto
standard error instead of sending them to standard output, as telnet(1) might do
with some.

%prep
%setup -q -T -c
cp -pf %{SOURCE0} %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} .
%patch0 -p1 -b .port-to-linux-with-libbsd
sed -e '1i #define unveil(path, permissions) 0' \
    -e '1i #define pledge(request, paths) 0' \
    -i netcat.c
sed -e 's/^\(LIBS=.*\)/\1 -ltls/' -i Makefile

%if 0%{?eln}
echo "The netcat package is not intended for ELN: Red Hat decided explicitly to switch from OpenBSD nc to Nmap ncat for RHEL; see also:"
echo "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-managing_data_using_the_ncat_utility"
exit 1
%endif

%build
%make_build CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="$RPM_LD_FLAGS"

%install
install -D -p -m 0755 nc $RPM_BUILD_ROOT%{_bindir}/%{name}
install -D -p -m 0644 nc.1 $RPM_BUILD_ROOT%{_mandir}/man1/%{name}.1

touch $RPM_BUILD_ROOT%{_bindir}/nc
touch $RPM_BUILD_ROOT%{_mandir}/man1/nc.1.gz

%post
%{_sbindir}/alternatives --install %{_bindir}/nc %{link_bin} %{_bindir}/%{name} 10 \
  --slave %{_mandir}/man1/nc.1.gz %{link_man} %{_mandir}/man1/%{name}.1.gz

%preun
if [ $1 -eq 0 ]; then
  %{_sbindir}/alternatives --remove %{link_bin} %{_bindir}/%{name}
fi

%files
%ghost %{_bindir}/nc
%ghost %{_mandir}/man1/nc.1.gz
%{_bindir}/netcat
%{_mandir}/man1/netcat.1*

%changelog
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.226-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild

* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.226-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild

* Tue Nov 14 2023 Robert Scheck <robert@fedoraproject.org> 1.226-1
- Upgrade to 1.226 (#2244540)

* Sun Nov 05 2023 Robert Scheck <robert@fedoraproject.org> 1.225-3
- Rebuilt for libretls 3.8.1

* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.225-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild

* Sun Jun 11 2023 Robert Scheck <robert@fedoraproject.org> 1.225-1
- Upgrade to 1.225 (#2214050)

* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.219-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild

* Sat Dec 24 2022 Robert Scheck <robert@fedoraproject.org> 1.219-2
- Rebuilt for libretls 3.7.0

* Sun Oct 23 2022 Robert Scheck <robert@fedoraproject.org> 1.219-1
- Upgrade to 1.219 (#2136750)

* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.218-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild

* Sat May 14 2022 Robert Scheck <robert@fedoraproject.org> 1.218-5
- Rebuilt for libretls 3.5.2

* Sun Feb 27 2022 Robert Scheck <robert@fedoraproject.org> 1.218-4
- Rebuilt for libretls 3.5.0

* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.218-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild

* Sat Oct 16 2021 Robert Scheck <robert@fedoraproject.org> 1.218-2
- Rebuilt for libretls 3.4.1

* Mon Aug 30 2021 Robert Scheck <robert@fedoraproject.org> 1.218-1
- Upgrade to 1.218 (#1993735)

* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.217-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild

* Wed Mar 17 2021 Robert Scheck <robert@fedoraproject.org> 1.217-3
- Changes to match the Fedora Packaging Guidelines (#1939769 #c1)

* Wed Mar 17 2021 Robert Scheck <robert@fedoraproject.org> 1.217-2
- Changes to match the Fedora Packaging Guidelines (#1939769)

* Sun Mar 07 2021 Robert Scheck <robert@fedoraproject.org> 1.217-1
- Upgrade to 1.217
- Initial spec file for Fedora and Red Hat Enterprise Linux