source: spec/trunk/SPECS/libspf2.spec@ 1330

Last change on this file since 1330 was 172, checked in by Yuri Dario, 14 years ago

spec: massive rebuild due to new rpm lx parser updates (see changeset:167).

File size: 8.3 KB
Line 
1# NOTE THAT THE TEST SUITE IS CURRENTLY BROKEN
2# USE rpmbuild --with checks TO SEE THIS FOR YOURSELF
3
4# Each change to the spec requires a bump to version/release of both library and perlmod
5%global library_version 1.2.9
6%global library_release 1%{?dist}
7%global perlmod_version 0.01
8%global perlmod_release 0%{?dist}
9
10# Set to 1 for a compat-libspf2 package
11%global compat 0
12
13# graphviz needed to build API docs, only available from Fedora 3, RHEL 4
14%if 0%{?fedora} >= 3 || 0%{?rhel} >= 4
15%global build_apidocs 1
16%else
17%global build_apidocs 0
18%endif
19# Fedora 10, RHEL 6 onwards support noarch subpackages
20%if 0%{?fedora} > 9 || 0%{?rhel} >= 6
21%global build_apidocs_noarch 1
22%endif
23
24# Use rpmbuild --with checks to try running the broken test suite (disabled by default)
25%{!?_without_checks: %{!?_with_checks: %global _without_checks --without-checks}}
26%{?_with_checks: %global enable_checks 1}
27%{?_without_checks: %global enable_checks 0}
28
29# Macros that need defining for older distributions
30%{!?perl_vendorarch: %global perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch)}
31%{!?__id_u: %global __id_u %([ -x /bin/id ]&&echo /bin/id||([ -x /usr/bin/id ]&&echo /usr/bin/id||echo /bin/true)) -u}
32
33%if %{compat}
34Name: compat-libspf2
35%else
36Name: libspf2
37%endif
38Version: %{library_version}
39Release: %{library_release}
40Summary: An implementation of the SPF specification
41License: BSD or LGPLv2+
42Group: System Environment/Libraries
43Url: http://www.libspf2.org/
44Source0: http://www.libspf2.org/spf/libspf2-%{version}.tar.gz
45
46Patch1: libspf2-os2.diff
47
48BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
49
50%if %{build_apidocs}
51# For API docs
52BuildRequires: doxygen, graphviz
53%endif
54# For perl bindings (Makefile.PL claims Mail::SPF is needed, but it isn't)
55#BuildRequires: perl(ExtUtils::MakeMaker)
56# For perl test suite
57#BuildRequires: perl(Test::Pod), perl(String::Escape)
58# POD Coverage is non-existent, causes test suite to fail
59#BuildConflicts: perl(Test::Pod::Coverage)
60# Perl module fails the standard test suite
61#BuildConflicts: perl(Mail::SPF::Test)
62%if %{compat}
63Provides: libspf2 = %{version}-%{release}
64%endif
65
66%description
67libspf2 is an implementation of the SPF (Sender Policy Framework)
68specification as found at:
69http://www.ietf.org/internet-drafts/draft-mengwong-spf-00.txt
70SPF allows email systems to check SPF DNS records and make sure that
71an email is authorized by the administrator of the domain name that
72it is coming from. This prevents email forgery, commonly used by
73spammers, scammers, and email viruses/worms.
74
75A lot of effort has been put into making it secure by design, and a
76great deal of effort has been put into the regression tests.
77
78%if ! %{compat}
79%package devel
80Summary: Development tools needed to build programs that use libspf2
81Group: Development/Libraries
82Version: %{library_version}
83Release: %{library_release}
84Requires: %{name} = %{version}-%{release}
85
86%description devel
87The libspf2-devel package contains the header files and static
88libraries necessary for developing programs using the libspf2 (Sender
89Policy Framework) library.
90
91If you want to develop programs that will look up and process SPF records,
92you should install libspf2-devel.
93
94%if %{build_apidocs}
95API documentation is in the separate libspf2-apidocs package.
96
97%package apidocs
98Summary: API documentation for the libspf2 library
99Group: Documentation
100Version: %{library_version}
101Release: %{library_release}
102%{?build_apidocs_noarch:BuildArch: noarch}
103
104%description apidocs
105The libspf2-apidocs package contains the API documentation for creating
106applications that use the libspf2 (Sender Policy Framework) library.
107%endif
108
109%package -n perl-Mail-SPF_XS
110Summary: An XS implementation of Mail::SPF
111Group: Development/Libraries
112License: GPL+ or Artistic
113Version: %{perlmod_version}
114Release: %{perlmod_release}
115Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
116
117%description -n perl-Mail-SPF_XS
118This is an interface to the C library libspf2 for the purpose of
119testing. While it can be used as an SPF implementation, you can also
120use Mail::SPF, which is a little more perlish.
121
122%package progs
123Summary: Programs for making SPF queries using libspf2
124Group: Applications/Internet
125Version: %{library_version}
126Release: %{library_release}
127Requires: %{name} = %{version}-%{release}
128
129#Requires(post): /usr/sbin/alternatives
130#Requires(preun): /usr/sbin/alternatives
131#Requires(postun): /usr/sbin/alternatives, /usr/bin/readlink
132
133%description progs
134Programs for making SPF queries and checking their results using libspf2.
135%endif
136
137%prep
138%setup -q -n libspf2-%{version}
139%patch001 -p1 -b .os2~
140
141%build
142# The configure script checks for the existence of __ns_get16 and uses the
143# system-supplied version if found, otherwise one from src/libreplace.
144# However, this function is marked GLIBC_PRIVATE in recent versions of glibc
145# and shouldn't be called even if the configure script finds it. So we make
146# sure that the configure script always uses the version in src/libreplace.
147# This prevents us getting an unresolvable dependency in the built RPM.
148ac_cv_func___ns_get16=no
149export ac_cv_func___ns_get16
150
151export CONFIG_SHELL="/bin/sh" ; \
152export LDFLAGS="-Zbin-files -Zhigh-mem -Zomf -Zargs-wild -Zargs-resp" ; \
153export LIBS="-lurpo -lmmap -lpthread" ; \
154%configure \
155 --enable-shared --disable-static \
156 "--cache-file=%{_topdir}/cache/%{name}-%{_target_cpu}.cache"
157
158# Kill bogus RPATHs
159%{__sed} -i 's|^sys_lib_dlsearch_path_spec="/lib /usr/lib|sys_lib_dlsearch_path_spec="/%{_lib} %{_libdir}|' libtool
160
161%{__make} %{?_smp_mflags} CFLAGS="%{optflags} -fno-strict-aliasing"
162
163%if %{build_apidocs}
164# Generate API docs
165%{__sed} -i -e 's/\(SHORT_NAMES[[:space:]]*=[[:space:]]*\)NO/\1YES/' Doxyfile
166/usr/bin/doxygen
167%endif
168
169%install
170#PERL_INSTALL_ROOT=$(%{__grep} DESTDIR perl/Makefile &> /dev/null && echo "" || echo %{buildroot})
171%{__rm} -rf %{buildroot}
172%{__make} \
173 DESTDIR=%{buildroot} \
174 INSTALLDIRS=vendor \
175 INSTALL="%{__install} -p" \
176 install
177
178cp src/libspf2/.libs/spf2.a %{buildroot}%{_libdir}
179
180# Clean up after impure perl installation
181#/usr/bin/find %{buildroot} \( -name perllocal.pod -o -name .packlist \) -exec %{__rm} {} ';'
182#/usr/bin/find %{buildroot} -type f -name '*.bs' -a -size 0 -exec %{__rm} -f {} ';'
183#/usr/bin/find %{buildroot} -depth -type d -exec /bin/rmdir {} 2>/dev/null ';'
184#%{__chmod} -R u+w %{buildroot}/*
185
186# Don't want statically-linked binaries
187%{__rm} -f %{buildroot}%{_bindir}/spf*_static.exe
188
189# Rename binaries that will be accessed via alternatives
190%{__mv} -f %{buildroot}%{_bindir}/spfquery.exe %{buildroot}%{_bindir}/spfquery_libspf2.exe
191%{__mv} -f %{buildroot}%{_bindir}/spfd.exe %{buildroot}%{_bindir}/spfd_libspf2.exe
192
193# Remove files not needed for compat package
194%if %{compat}
195%{__rm} -rf %{buildroot}%{_bindir}
196%{__rm} -rf %{buildroot}%{_includedir}/spf2
197%{__rm} -rf %{buildroot}%{_libdir}/*.a
198%{__rm} -rf %{buildroot}%{_libdir}/*.la
199%{__rm} -rf %{buildroot}%{_libdir}/*.so
200%{__rm} -rf %{buildroot}%{_mandir}/man3
201%{__rm} -rf %{buildroot}%{perl_vendorarch}
202%endif
203
204#%check
205#%if %{enable_checks}
206#%{__make} -C tests check
207#%endif
208#LD_PRELOAD=$(pwd)/src/libspf2/.libs/libspf2.so %{__make} -C perl test
209
210%clean
211%{__rm} -rf %{buildroot}
212
213#%post -p /sbin/ldconfig
214
215#%postun -p /sbin/ldconfig
216
217%if ! %{compat}
218%post progs
219/usr/sbin/alternatives --install %{_bindir}/spfquery spf %{_bindir}/spfquery.libspf2 20 \
220 --slave %{_bindir}/spfd spf-daemon %{_bindir}/spfd.libspf2
221exit 0
222
223#%preun progs
224#if [ $1 = 0 ]; then
225# /usr/sbin/alternatives --remove spf %{_bindir}/spfquery.libspf2
226#fi
227#exit 0
228
229#%postun progs
230#if [ "$1" -ge "1" ]; then
231# spf=`readlink /etc/alternatives/spf`
232# if [ "$spf" == "%{_bindir}/spfquery.libspf2" ]; then
233# /usr/sbin/alternatives --set spf %{_bindir}/spfquery.libspf2
234# fi
235#fi
236#exit 0
237
238#%triggerpostun -- libspf2-progs <= 1.0.4-3
239#/usr/sbin/alternatives --auto spf
240%endif
241
242%files
243%defattr(-,root,root,-)
244%{_libdir}/spf2.dll
245%doc README INSTALL LICENSES TODO
246#%doc docs/*.txt
247
248%if ! %{compat}
249%files devel
250%defattr(-,root,root,-)
251%{_includedir}/spf2/spf*.h
252%{_libdir}/spf2.a
253%{_libdir}/spf2.dll
254
255%if %{build_apidocs}
256%files apidocs
257%defattr(-,root,root,-)
258%doc doxygen/html
259%endif
260
261%files progs
262%defattr(-,root,root,-)
263%{_bindir}/spfd_libspf2.exe
264%{_bindir}/spfquery_libspf2.exe
265%{_bindir}/spftest.exe
266%{_bindir}/spf_example.exe
267
268#%files -n perl-Mail-SPF_XS
269#%defattr(-,root,root,-)
270#%{perl_vendorarch}/Mail/
271#%{perl_vendorarch}/auto/Mail/
272#%{_mandir}/man3/Mail::SPF_XS.3pm*
273%endif
274
275%changelog
Note: See TracBrowser for help on using the repository browser.