File nmap.spec of Package nmap

#
# spec file for package nmap
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
%{!?python_sitearch: %global python_sitearch %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
%define with_system_lua 0%{?suse_version} >= 1330
Name:           nmap
Version:        7.70
Release:        0
Summary:        Portscanner
License:        GPL-2.0+
Group:          Productivity/Networking/Diagnostic
Url:            https://nmap.org/
Source:         https://nmap.org/dist/nmap-%{version}.tar.bz2
Source1:        https://svn.nmap.org/nmap/docs/nmap_gpgkeys.txt#/%{name}.keyring
Source2:        http://nmap.org/dist/sigs/%{name}-%{version}.tar.bz2.asc
Patch1:         nmap-7.40-desktop_files.patch
Patch2:         nmap-4.75-nostrip.patch
Patch3:         su-to-zenmap.patch
Patch4:         nmap-ncat-skip-network-tests.patch
BuildRequires:  dos2unix
BuildRequires:  fdupes
BuildRequires:  gcc-c++
BuildRequires:  gtk2-devel
BuildRequires:  libpcap-devel
BuildRequires:  openssl-devel
BuildRequires:  pcre-devel
BuildRequires:  python-devel
BuildRequires:  update-desktop-files
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%if %{with_system_lua}
%if 0%{?suse_version} > 1320
BuildRequires:  Lua(devel) = 5.3
%else
BuildRequires:  pkgconfig(lua) >= 5.3
%endif
%endif

%description
Nmap is designed to allow system administrators and curious individuals
to scan large networks to determine which hosts are up and what
services they are offering. XNmap is a graphical front-end that shows
nmap's output clearly.

Find documentation in %{_docdir}/%{name}

%package -n zenmap
Summary:        A Graphical Front-End for Nmap
Group:          Productivity/Networking/Diagnostic
Requires:       %{name} = %{version}
Requires:       python-gtk
Obsoletes:      %{name}-gtk < %{version}
Provides:       %{name}-gtk = %{version}-%{release}
%py_requires

%description -n zenmap
zenmap is a graphical front-end for the nmap network scanner

%package -n ncat
Summary:        Network Tool to concatenate and redirect Sockets
Group:          Productivity/Networking/Diagnostic

%description -n ncat
Ncat is a feature-packed networking utility which will read and write data
across a network from the command line. Ncat was written for the Nmap Project
and is the culmination of the currently splintered family of Netcat
incarnations. It uses both TCP and UDP for communication and is designed to be
a reliable back-end tool to instantly provide network connectivity to other
applications and users. Ncat will not only work with IPv4 and IPv6 but provides
the user with a virtually limitless number of potential uses.

Among Ncat´s vast number of features there is the ability to chain Ncats
together, redirect both TCP and UDP ports to other sites, SSL support, and
proxy connections via SOCKS4 or HTTP (CONNECT method) proxies (with optional
proxy authentication as well). Some general principles apply to most
applications and thus give you the capability of instantly adding networking
support to software that would normally never support it.

%package -n ndiff
Summary:        Compare Results of Nmap Scans
Group:          Productivity/Networking/Diagnostic
%py_requires

%description -n ndiff
Ndiff is a tool to aid in the comparison of Nmap scans. It takes two Nmap XML
output files and prints the differences between them: hosts coming up and down,
ports becoming open or closed, etc.

%package -n nping
Summary:        Compare Results of Nmap Scans
Group:          Productivity/Networking/Diagnostic

%description -n nping
Network packet generation tool / ping utility

%prep
%setup -q
%patch1 -p1
%patch2
%patch3
%patch4 -p1

# use system provided libraries
rm -rf libpcap libpcre macosx mswin32

#fix locale dir
mv zenmap/share/zenmap/locale zenmap/share
sed -i -e "s|^locale_dir =.*$|locale_dir = os.path.join('share','locale')|" \
 -e 's|join(self.install_data, data_dir)|join(self.install_data, "share")|' zenmap/setup.py
sed -i 's|^LOCALE_DIR = .*|LOCALE_DIR = join(prefix, "share", "locale")|' zenmap/zenmapCore/Paths.py

#fix pt_PT/pt zh/zh_CN locale
sed -i '/ALL_LINGUAS =/s/pt_PT/pt/' Makefile.in
sed -i '/ALL_LINGUAS =/s/zh/zh_CN/' Makefile.in
mv docs/man-xlate/nmap-pt_PT.1 docs/man-xlate/nmap-pt.1
mv docs/man-xlate/nmap-zh.1 docs/man-xlate/nmap-zh_CN.1

%build
export CFLAGS="%{optflags} -DOPENSSL_LOAD_CONF"
export CXXFLAGS="%{optflags} -DOPENSSL_LOAD_CONF"

%configure --with-libpcap=%{_prefix} \
           --with-libdnet=included \
%if %{with_system_lua}
           --with-liblua=%{_prefix} \
%else
           --with-liblua=included \
%endif
           --with-libpcre=%{_prefix} \
           STRIP=/bin/true

make %{?_smp_mflags}

%install
make DESTDIR=%{buildroot} deskdir="%{_datadir}/gnome/apps/Utilities/" install
rm "%{buildroot}%{_bindir}/uninstall_zenmap"
rm "%{buildroot}%{_bindir}/uninstall_ndiff"
install -d "%{buildroot}%{_datadir}/pixmaps/"
ln -s ../zenmap/pixmaps/zenmap.png "%{buildroot}%{_datadir}/pixmaps/zenmap.png"
%suse_update_desktop_file zenmap System Network
%suse_update_desktop_file zenmap-root System Network
%find_lang zenmap
touch -r %{buildroot}/%{python_sitelib}/zenmapCore/Paths.py %{buildroot}/%{python_sitelib}/zenmapCore/Paths.pyc
dos2unix %{buildroot}%{_datadir}/%{name}/nselib/data/oracle-sids

%fdupes -s %{buildroot}

%check

pushd ncat
make %{?_smp_mflags} check
popd

pushd libdnet-stripped
make %{?_smp_mflags} check
popd

# retrieve list of compiled in modules
compiled_with=$("%{buildroot}%{_bindir}/nmap" -V | grep "Compiled with:" )
# for the following tests, the leading space is relevant
# check features built with system libraries
[[ $compiled_with == *\ libpcre-* ]]
[[ $compiled_with == *\ libpcap-* ]]
[[ $compiled_with == *\ openssl-* ]]
# check features built with included sources
[[ $compiled_with == *\ nmap-libdnet-* ]]
# check for lua
%if %{with_system_lua}
[[ $compiled_with == *\ liblua-5.3* ]]
%else
# lua in nmap tarball identifies itself as "liblua-5.3.3"
[[ $compiled_with == *\ liblua-5.3.3* ]]
%endif
#

%files
%defattr(-,root,root)
%doc COPYING* CHANGELOG HACKING
%doc docs/README
%doc docs/nmap.usage.txt
%dir %{_mandir}/??
%dir %{_mandir}/??/man1
%dir %{_mandir}/??_??
%dir %{_mandir}/??_??/man1
%{_mandir}/man1/nmap.1.gz
%{_mandir}/*/man1/*
%{_bindir}/nmap
%{_datadir}/nmap

%files -n zenmap -f zenmap.lang
%defattr(-,root,root)
%{_bindir}/xnmap
%{_bindir}/zenmap
%{_bindir}/nmapfe
%{python_sitelib}/zenmap-%{version}-py%{py_ver}.egg-info
%{python_sitelib}/zenmapCore
%{python_sitelib}/zenmapGUI
%{python_sitelib}/radialnet
%{_datadir}/applications/zenmap-root.desktop
%{_datadir}/applications/zenmap.desktop
%{_datadir}/pixmaps/zenmap.png
%{_datadir}/zenmap
%{_mandir}/man1/zenmap.1.gz

%files -n ncat
%defattr(-,root,root)
%{_bindir}/ncat
%{_mandir}/man1/ncat.1.gz
%dir %{_datadir}/ncat
%config(noreplace) %{_datadir}/ncat/ca-bundle.crt

%files -n ndiff
%defattr(-,root,root)
%{_bindir}/ndiff
%{_mandir}/man1/ndiff.1.gz
%{python_sitelib}/ndiff.*

%files -n nping
%defattr(-,root,root)
%{_bindir}/nping
%{_mandir}/man1/nping.1.gz

%changelog
openSUSE Build Service is sponsored by