]>
Commit | Line | Data |
---|---|---|
b53d342f | 1 | # |
2 | # Conditional build: | |
3 | %bcond_without tests # do not perform "make test" | |
aa62a755 | 4 | |
b53d342f | 5 | %define pdir Server |
6 | %define pnam Starter | |
7 | %include /usr/lib/rpm/macros.perl | |
8 | Summary: Server::Starter - a superdaemon for hot-deploying server programs | |
b53d342f | 9 | Name: perl-Server-Starter |
10 | Version: 0.11 | |
11 | Release: 1 | |
12 | # same as perl | |
13 | License: GPL v1+ or Artistic | |
14 | Group: Development/Languages/Perl | |
15 | Source0: http://www.cpan.org/modules/by-module/Server/%{pdir}-%{pnam}-%{version}.tar.gz | |
16 | # Source0-md5: 037d75831a23ca76cd306d678b20332e | |
aa62a755 | 17 | URL: http://search.cpan.org/dist/Server-Starter/ |
b53d342f | 18 | BuildRequires: perl-devel >= 1:5.8.0 |
19 | BuildRequires: rpm-perlprov >= 4.1-13 | |
b53d342f | 20 | %if %{with tests} |
21 | BuildRequires: perl-List-MoreUtils | |
22 | BuildRequires: perl-Proc-Wait3 | |
23 | BuildRequires: perl-Scope-Guard | |
24 | %endif | |
25 | BuildArch: noarch | |
26 | BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) | |
27 | ||
28 | %description | |
29 | It is often a pain to write a server program that supports graceful | |
30 | restarts, with no resource leaks. Server::Starter, solves the problem | |
31 | by splitting the task into two. One is start_server, a script provided | |
32 | as a part of the module, which works as a superdaemon that binds to | |
33 | zero or more TCP ports or unix sockets, and repeatedly spawns the | |
34 | server program that actually handles the necessary tasks (for example, | |
35 | responding to incoming commenctions). The spawned server programs | |
36 | under Server::Starter call accept(2) and handle the requests. | |
37 | ||
38 | To gracefully restart the server program, send SIGHUP to the | |
39 | superdaemon. The superdaemon spawns a new server program, and if (and | |
40 | only if) it starts up successfully, sends SIGTERM to the old server | |
41 | program. | |
42 | ||
43 | By using Server::Starter it is much easier to write a hot-deployable | |
44 | server. Following are the only requirements a server program to be run | |
45 | under Server::Starter should conform to: | |
46 | ||
47 | - receive file descriptors to listen to through an environment | |
48 | variable | |
49 | - perform a graceful shutdown when receiving SIGTERM | |
50 | ||
51 | A Net::Server personality that can be run under Server::Starter exists | |
52 | under the name Net::Server::SS::PreFork. | |
53 | ||
54 | ||
55 | ||
56 | # %description -l pl.UTF-8 # TODO | |
57 | ||
58 | %prep | |
59 | %setup -q -n %{pdir}-%{pnam}-%{version} | |
60 | ||
61 | %build | |
62 | %{__perl} Makefile.PL \ | |
63 | INSTALLDIRS=vendor | |
64 | %{__make} | |
65 | ||
66 | %{?with_tests:%{__make} test} | |
67 | ||
68 | %install | |
69 | rm -rf $RPM_BUILD_ROOT | |
70 | ||
71 | %{__make} pure_install \ | |
72 | DESTDIR=$RPM_BUILD_ROOT | |
73 | ||
74 | %clean | |
75 | rm -rf $RPM_BUILD_ROOT | |
76 | ||
77 | %files | |
78 | %defattr(644,root,root,755) | |
79 | %doc Changes README | |
80 | %attr(755,root,root) %{_bindir}/start_server | |
81 | %{_mandir}/man1/start_server.1p* | |
82 | %{perl_vendorlib}/Server/*.pm | |
83 | %{_mandir}/man3/* |