File perl-Net-Server.spec of Package perl-Net-Server

# spec file for package perl-Net-Server
# Copyright (c) 2014 SUSE LINUX Products 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

Name:           perl-Net-Server
Version:        2.007
Release:        0
%define cpan_name Net-Server
Summary:        Extensible, general Perl server engine
License:        Artistic-1.0 or GPL-1.0+
Group:          Development/Libraries/Perl
BuildArch:      noarch
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
BuildRequires:  perl
%if 0%{?suse_version}
BuildRequires:  perl-macros
BuildRequires:  perl-devel
BuildRequires:  perl-libs
BuildRequires:  rpm-build
BuildRequires:  perl(IO::Socket)
BuildRequires:  perl(IO::Socket::SSL)
BuildRequires:  perl(Net::SSLeay)
BuildRequires:  perl(POSIX)
BuildRequires:  perl(Socket)
BuildRequires:  perl(Time::HiRes)
Requires:       perl(IO::Socket)
Requires:       perl(IO::Socket)
Requires:       perl(IO::Socket::SSL)
Requires:       perl(Net::SSLeay)
Requires:       perl(POSIX)
Requires:       perl(Socket)
Requires:       perl(Time::HiRes)
%if 0%{?suse_version}
Requires:       perl

'Net::Server' is an extensible, generic Perl server engine. 'Net::Server'
combines the good properties from 'Net::Daemon' (0.34),
'NetServer::Generic' (1.03), and 'Net::FTPServer' (1.0), and also from
various concepts in the Apache Webserver.

'Net::Server' attempts to be a generic server as in 'Net::Daemon' and
'NetServer::Generic'. It includes with it the ability to run as an inetd
process ('Net::Server::INET'), a single connection server ('Net::Server' or
'Net::Server::Single'), a forking server ('Net::Server::Fork'), a
preforking server which maintains a constant number of preforked children
('Net::Server::PreForkSimple'), or as a managed preforking server which
maintains the number of children based on server load
('Net::Server::PreFork'). In all but the inetd type, the server provides
the ability to connect to one or to multiple server ports.

'Net::Server' uses ideologies of 'Net::FTPServer' in order to provide
extensibility. The additional server types are made possible via
"personalities" or sub classes of the 'Net::Server'. By moving the multiple
types of servers out of the main 'Net::Server' class, the 'Net::Server'
concept is easily extended to other types (in the near future, we would
like to add a "Thread" personality).

'Net::Server' borrows several concepts from the Apache Webserver.
'Net::Server' uses "hooks" to allow custom servers such as SMTP, HTTP,
POP3, etc. to be layered over the base 'Net::Server' class. In addition the
'Net::Server::PreFork' class borrows concepts of min_start_servers,
max_servers, and min_waiting servers. 'Net::Server::PreFork' also uses the
concept of an flock serialized accept when accepting on multiple ports
(PreFork can choose between flock, IPC::Semaphore, and pipe to control

%setup -q -n %{cpan_name}-%{version}
find . -type f -print0 | xargs -0 chmod 644

%if 0%{?suse_version}
%{__perl} Makefile.PL INSTALLDIRS=vendor
%{__perl} Makefile.PL INSTALLDIRS="vendor" PREFIX="%{buildroot}%{_prefix}"
%{__make} %{?_smp_mflags}

%{__make} test

%if 0%{?suse_version}
%{__rm} -rf %{buildroot}
%{__make} pure_install
touch %{name}.files
### Clean up buildroot
find %{buildroot} -name .packlist -exec %{__rm} {} \;

%files -f %{name}.files
%doc Changes examples README
%if 0%{?rhel_version}
%doc %{_bindir}/net-server
%doc %{_mandir}/man1/net-server.1.gz
%doc %{_mandir}/man3/Net::Server*
%dir %{perl_vendorlib}/Net/Server