]> git.ipfire.org Git - ipfire-3.x.git/blob - pdns/pdns.nm
Sanitize pdns and pdns-recursor package.
[ipfire-3.x.git] / pdns / pdns.nm
1 ###############################################################################
2 # IPFire.org - An Open Source Firewall Solution #
3 # Copyright (C) - IPFire Development Team <info@ipfire.org> #
4 ###############################################################################
5
6 name = pdns
7 version = 3.1
8 release = 3
9
10 groups = Networking/DNS
11 url = http://powerdns.com/
12 license = GPLv2
13 summary = A modern, advanced and high performance authoritative-only nameserver.
14
15 description
16 The PowerDNS Nameserver is a modern, advanced and high performance
17 authoritative-only nameserver. It is written from scratch and conforms
18 to all relevant DNS standards documents.
19 Furthermore, PowerDNS interfaces with almost any database.
20 end
21
22 source_dl = http://downloads.powerdns.com/releases/
23
24 build
25 requires
26 boost-devel
27 chrpath
28 gcc-c++
29 lua-devel
30 shadow-utils
31 sqlite-devel
32 zlib-devel
33 end
34
35 # No paralilelism build.
36 PARALLELISMFLAGS =
37
38 configure_options += \
39 --sysconfdir=%{sysconfdir}/pdns \
40 --libdir=%{libdir}/powerdns \
41 --with-modules="" \
42 --with-dynmodules="pipe geo gsqlite3" \
43 --with-lua \
44 --disable-static
45
46 prepare_cmds
47 %{create_user}
48 end
49
50 install_cmds
51 # Create directories for pdns sqlite db.
52 mkdir -p %{BUILDROOT}%{datadir}/pdns/
53 mkdir -p %{BUILDROOT}%{sharedstatedir}/pdns/
54
55 # Install shema for sqlite database.
56 install -m 0644 %{DIR_SOURCE}/pdns.table \
57 %{BUILDROOT}%{datadir}/pdns/pdns.table
58
59 # Install default configuration.
60 install -m 0644 %{DIR_SOURCE}/pdns.conf \
61 %{BUILDROOT}%{sysconfdir}/pdns/pdns.conf
62 rm -vf %{BUILDROOT}%{sysconfdir}/pdns/pdns.conf-dist
63
64 # Create empty database file.
65 touch %{BUILDROOT}%{sharedstatedir}/pdns/pdns.db
66
67 # Fix permissions and ownership from database.
68 chown -R pdns:pdns %{BUILDROOT}%{sharedstatedir}/pdns
69 chmod 660 %{BUILDROOT}%{sharedstatedir}/pdns/pdns.db
70
71 # Remove unneded binaries.
72 rm -vf %{BUILDROOT}%{bindir}/zone2ldap
73
74 # Remove rpath from binaries and backend libs.
75 chrpath --delete %{BUILDROOT}/usr/bin/pdns_control
76 chrpath --delete %{BUILDROOT}/usr/bin/zone2sql
77 chrpath --delete %{BUILDROOT}/usr/sbin/pdns_server
78 chrpath --delete %{BUILDROOT}%{libdir}/powerdns/*.so
79 chrpath --delete %{BUILDROOT}/usr/bin/dnsreplay
80 chrpath --delete %{BUILDROOT}/usr/bin/pdnssec
81 end
82 end
83
84 create_user
85 getent group pdns >/dev/null || groupadd -r pdns
86 getent passwd pdns >/dev/null || \
87 useradd -r -g pdns -d %{sharedstatedir}/pdns -s /sbin/nologin \
88 -c "PowerDNS user" pdns
89 end
90
91 packages
92 package %{name}
93 prerequires
94 coreutils
95 shadow-utils
96 sqlite
97 end
98
99 requires
100 pdns-recursor >= 3.3-8
101 end
102
103 configfiles
104 %{sysconfdir}/pdns/pdns.conf
105 end
106
107 script prein
108 %{create_user}
109 end
110
111 script postin
112 systemctl daemon-reload >/dev/null 2>&1 || :
113
114 # Check if DB allready exists. Create pdns sqlite database if not.
115 if [ ! -s "%{sharedstatedir}/pdns/pdns.db" ]; then
116 sqlite3 %{sharedstatedir}/pdns/pdns.db < %{datadir}/pdns/pdns.table
117 fi
118 end
119
120 script preun
121 systemctl --no-reload disable pdns.service >/dev/null 2>&1 || :
122 systemctl stop pdns.service >/dev/null 2>&1 || :
123
124 # Backup existing database.
125 mv %{sharedstatedir}/pdns/pdns.db{,.bak}
126 end
127
128 script postun
129 systemctl daemon-reload >/dev/null 2>&1 || :
130 end
131
132 script postup
133 systemctl daemon-reload >/dev/null 2>&1 || :
134 systemctl try-restart pdns.service >/dev/null 2>&1 || :
135 end
136 end
137
138 package %{name}-debuginfo
139 template DEBUGINFO
140 end
141 end