more portably GSS library detection
[shibboleth/sp.git] / shibboleth.spec.in
index aff8827..5888fbb 100644 (file)
-Name:          shibboleth
-Summary:       Open source system to enable inter-institutional resource sharing
-Version:       @-VERSION-@
+Name:          @PACKAGE_NAME@
+Version:       @PACKAGE_VERSION@
 Release:       1
-#Copyright:    University Corporation for Advanced Internet Development, Inc.
-Group:         System Environment/Libraries
-License:       Apache style
+Summary:    Open source system for attribute-based Web SSO
+Group:         Productivity/Networking/Security
+Vendor:     Internet2
+License:       Apache 2.0
 URL:           http://shibboleth.internet2.edu/
-Source0:       http://wayf.internet2.edu/shibboleth/%{name}-%{version}.tar.gz
-Source1:       http://wayf.internet2.edu/shibboleth/%{name}-%{version}.tar.gz.asc
+Source:     %{name}-sp-%{version}.tar.gz
 BuildRoot:     %{_tmppath}/%{name}-%{version}-root
+PreReq:     openssl, xmltooling-schemas, opensaml-schemas
+%if 0%{?suse_version} > 1030 && 0%{?suse_version} < 1130
+PreReq:         %{insserv_prereq}
+BuildRequires:  libXerces-c-devel >= 2.8.0
+%else
+BuildRequires:  libxerces-c-devel >= 2.8.0
+%endif
+BuildRequires:  libxml-security-c-devel >= 1.4.0
+BuildRequires:  libxmltooling-devel >= 1.4
+BuildRequires:  libsaml-devel >= 2.4
+%{?_with_log4cpp:BuildRequires: liblog4cpp-devel >= 1.0}
+%{!?_with_log4cpp:BuildRequires: liblog4shib-devel}
+BuildRequires:  gcc-c++, zlib-devel
+%{!?_without_doxygen:BuildRequires: doxygen}
+%{!?_without_odbc:BuildRequires:unixODBC-devel}
+%{?_with_fastcgi:BuildRequires: fcgi-devel}
+%if "%{_vendor}" == "redhat"
+%{!?_without_builtinapache:BuildRequires: httpd-devel}
+BuildRequires: redhat-rpm-config
+%endif
+%if "%{_vendor}" == "suse"
+%{!?_without_builtinapache:BuildRequires: apache2-devel}
+%endif
 
-BuildRequires: openssl-devel, curl-devel >= 7.10.6, xerces-c-devel >= 2.6.1
-BuildRequires: xml-security-c-devel >= 1.1.0, log4cpp-devel >= 0.3.5
-BuildRequires: zlib-devel, opensaml-devel >= 1.1, httpd-devel
+%if "%{_vendor}" == "suse"
+%define pkgdocdir %{_docdir}/%{name}
+%else
+%define pkgdocdir %{_docdir}/%{name}-%{version}
+%endif
 
 %description
-Shibboleth, a project of Internet2/MACE, is developing architectures,
-policy structures, practical technologies, and an open source
-implementation to support inter-institutional sharing of web resources
-subject to access controls. In addition, Shibboleth will develop a
-policy framework that will allow inter-operation within the higher
-education community.
+Shibboleth is a Web Single Sign-On implementations based on OpenSAML
+that supports multiple protocols, federated identity, and the extensible
+exchange of rich attributes subject to privacy controls.
 
-This package contains the shibboleth runtime library and apache module.
+This package contains the Shibboleth Service Provider runtime libraries
+and Apache module(s).
 
 %package devel
-Summary: Shibboleth development Headers
-Group: Development/Libraries
-Requires: %{name} = %{version}
+Summary:       Shibboleth development Headers
+Group:         Development/Libraries/C and C++
+Requires:      %{name} = %{version}-%{release}
+%if 0%{?suse_version} > 1030 && 0%{?suse_version} < 1130
+Requires:      libXerces-c-devel >= 2.8.0
+%else
+Requires:      libxerces-c-devel >= 2.8.0
+%endif
+Requires:      libxml-security-c-devel >= 1.4.0
+Requires:      libxmltooling-devel >= 1.4
+Requires:      libsaml-devel >= 2.4
+%{?_with_log4cpp:Requires: liblog4cpp-devel >= 1.0}
+%{!?_with_log4cpp:Requires: liblog4shib-devel}
 
 %description devel
-Shibboleth, a project of Internet2/MACE, is developing architectures,
-policy structures, practical technologies, and an open source
-implementation to support inter-institutional sharing of web resources
-subject to access controls. In addition, Shibboleth will develop a
-policy framework that will allow inter-operation within the higher
-education community.
-
-This package contains the headers and other necessary files to build
-applications that use the shibboleth library.
-
-%package selinux-policy-targeted
-Summary: SELinux policy targeted configuration for Shibboleth SP
-Group: System Environment/Base
-Requires: selinux-policy-targeted-sources
-
-%description selinux-policy-targeted
-Shibboleth, a project of Internet2/MACE, is developing architectures,
-policy structures, practical technologies, and an open source
-implementation to support inter-institutional sharing of web resources
-subject to access controls. In addition, Shibboleth will develop a
-policy framework that will allow inter-operation within the higher
-education community.
-
-This package contains the SELinux Policy (source) Configuration to
-enable the Shibboleth SP to integrate into Apache HTTPD in Red Hat /
-Fedora's Policy Targeted SELinux implementation.  It requires
-rebuilding your policy, so you must have the policy-targeted-source
-installed.
+Shibboleth is a Web Single Sign-On implementations based on OpenSAML
+that supports multiple protocols, federated identity, and the extensible
+exchange of rich attributes subject to privacy controls.
+
+This package includes files needed for development with Shibboleth.
 
 %prep
 %setup -q
 
 %build
-%configure --enable-apache-20
-make
-make -C selinux
+%configure %{?_without_odbc:--disable-odbc} %{?_without_adfs:--disable-adfs} %{?_with_fastcgi} %{?_with_memcached} %{?shib_options}
+%{__make} pkgdocdir=%{pkgdocdir}
 
 %install
-[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
-rm -rf _docs
+%{__make} install NOKEYGEN=1 DESTDIR=$RPM_BUILD_ROOT pkgdocdir=%{pkgdocdir}
+
+%if "%{_vendor}" == "suse"
+       %{__sed} -i "s/\/var\/log\/httpd/\/var\/log\/apache2/g" \
+               $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/native.logger
+%endif
 
-make install DESTDIR=$RPM_BUILD_ROOT
-make -C selinux install DESTDIR=$RPM_BUILD_ROOT
-mv $RPM_BUILD_ROOT/usr/doc/shibboleth _docs
+# Plug the SP into the built-in Apache on a recognized system.
+touch rpm.filelist
+APACHE_CONFIG="no"
+if [ -f $RPM_BUILD_ROOT%{_libdir}/%{name}/mod_shib_13.so ] ; then
+    APACHE_CONFIG="apache.config"
+fi
+if [ -f $RPM_BUILD_ROOT%{_libdir}/%{name}/mod_shib_20.so ] ; then
+    APACHE_CONFIG="apache2.config"
+fi
+if [ -f $RPM_BUILD_ROOT%{_libdir}/%{name}/mod_shib_22.so ] ; then
+    APACHE_CONFIG="apache22.config"
+fi
+%{?_without_builtinapache:APACHE_CONFIG="no"}
+if [ "$APACHE_CONFIG" != "no" ] ; then
+    APACHE_CONFD="no"
+    if [ -d %{_sysconfdir}/httpd/conf.d ] ; then
+            APACHE_CONFD="%{_sysconfdir}/httpd/conf.d"
+    fi
+    if [ -d %{_sysconfdir}/apache2/conf.d ] ; then
+            APACHE_CONFD="%{_sysconfdir}/apache2/conf.d"
+    fi
+    if [ "$APACHE_CONFD" != "no" ] ; then
+        %{__mkdir} -p $RPM_BUILD_ROOT$APACHE_CONFD
+        %{__cp} -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/$APACHE_CONFIG $RPM_BUILD_ROOT$APACHE_CONFD/shib.conf 
+        echo "%config $APACHE_CONFD/shib.conf" > rpm.filelist
+    fi
+fi
 
-find $RPM_BUILD_ROOT/%{_libexecdir} -type f -or -type l | grep \.so |
-  sed -e "s|$RPM_BUILD_ROOT||" | sort > rpm.filelist
+%if "%{_vendor}" == "redhat" || "%{_vendor}" == "suse"
+       # %{_initddir} not yet in RHEL5, use deprecated %{_initrddir}
+       install -d -m 0755 $RPM_BUILD_ROOT%{_initrddir}
+       install -m 0755 $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/shibd-%{_vendor} $RPM_BUILD_ROOT%{_initrddir}/shibd
+%if "%{_vendor}" == "suse"
+       install -d -m 0755 $RPM_BUILD_ROOT/%{_sbindir}
+       %{__ln_s} -f %{_initrddir}/shibd $RPM_BUILD_ROOT%{_sbindir}/rcshibd
+%endif
+%endif
 
-%check || :
-make check
+%check
+%{__make} check
 
 %clean
-[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
+[ "$RPM_BUILD_ROOT" != "/" ] && %{__rm} -rf $RPM_BUILD_ROOT
 
 %post
+%ifnos solaris2.8 solaris2.9 solaris2.10
 /sbin/ldconfig
+%endif
 
-# Plug the shibboleth SP into Apache2 on a Red Hat system.
-[ -d %{_sysconfdir}/httpd/conf.d ] || exit 0
-[ -f %{_sysconfdir}/httpd/conf.d/shib.conf ] && exit 0
-cp -p %{_sysconfdir}/shibboleth/apache2.config \
-    %{_sysconfdir}/httpd/conf.d/shib.conf
+# Key generation
+cd %{_sysconfdir}/%{name}
+sh ./keygen.sh -b
 
-%postun
-/sbin/ldconfig
+%if "%{_vendor}" == "redhat"
+       # This adds the proper /etc/rc*.d links for the script
+       /sbin/chkconfig --add shibd
+       # On upgrade, restart components if they're already running.
+    if [ "$1" -gt "1" ] ; then
+        /etc/init.d/shibd status 1>/dev/null && /etc/init.d/shibd restart 1>/dev/null
+        %{!?_without_builtinapache:/etc/init.d/httpd status 1>/dev/null && /etc/init.d/httpd restart 1>/dev/null}
+        exit 0
+    fi
+%endif
+%if "%{_vendor}" == "suse"
+    # This adds the proper /etc/rc*.d links for the script
+    cd /
+    %insserv_force_if_yast shibd
+%endif
 
-# delete the shibboleth apache configuration if we're being removed
-[ "$0" = 0 ] || exit 0
-[ -f %{_sysconfdir}/httpd/conf.d/shib.conf ] && \
-    rm -f %{_sysconfdir}/httpd/conf.d/shib.conf
+%preun
+%if "%{_vendor}" == "redhat"
+       if [ "$1" = 0 ] ; then
+               /sbin/service shibd stop >/dev/null 2>&1
+               /sbin/chkconfig --del shibd
+        %{!?_without_builtinapache:/etc/init.d/httpd status 1>/dev/null && /etc/init.d/httpd restart 1>/dev/null}
+       fi
+%endif
+%if "%{_vendor}" == "suse"
+    %stop_on_removal shibd
+    if [ "$1" = 0 ] ; then
+        %{!?_without_builtinapache:/etc/init.d/apache2 status 1>/dev/null && /etc/init.d/apache2 restart 1>/dev/null}
+    fi
+%endif
+exit 0
 
-%triggerin selinux-policy-targeted -- %{name}
-restorecon %{_sbindir}/shibd
+%postun
+%ifnos solaris2.8 solaris2.9 solaris2.10
+/sbin/ldconfig
+%endif
+%if "%{_vendor}" == "suse"
+cd /
+%restart_on_update shibd
+%{!?_without_builtinapache:%restart_on_update apache2}
+%{insserv_cleanup}
+%endif
 
-%triggerin selinux-policy-targeted -- selinux-policy-targeted-source
-cd %{_sysconfdir}/selinux/targeted/src/policy || exit 1
-make -W load
+%posttrans
+# ugly hack if init script got removed during %postun by upgraded (buggy/2.1) package
+%if "%{_vendor}" == "redhat"
+    if [ ! -f %{_initrddir}/shibd ] ; then
+        if [ -f %{_sysconfdir}/%{name}/shibd-%{_vendor} ] ; then
+            %{__cp} -p %{_sysconfdir}/%{name}/shibd-%{_vendor} %{_initrddir}/shibd
+            %{__chmod} 755 %{_initrddir}/shibd
+            /sbin/chkconfig --add shibd
+        fi
+    fi
+%endif
 
 %files -f rpm.filelist
 %defattr(-,root,root,-)
-%doc _docs/CREDITS.txt _docs/InQueue.html _docs/NEWS.txt _docs/logo.jpg
-%doc _docs/DEPLOY-GUIDE-ORIGIN.html _docs/main.css _docs/README.txt
-%doc _docs/DEPLOY-GUIDE-TARGET.html _docs/LICENSE.txt _docs/mysql-4.0.12.diff
 %{_sbindir}/shibd
-%{_sbindir}/siterefresh
-%{_bindir}/shibtest
-%{_libdir}/libshib.so.*
-%{_libdir}/libshib-target.so.*
-%dir %{_datadir}/xml/shibboleth
-%{_datadir}/xml/shibboleth/*.xsd
-%dir %{_sysconfdir}/shibboleth
-%config %{_sysconfdir}/shibboleth/*.xml
-%config %{_sysconfdir}/shibboleth/*.html
-%config %{_sysconfdir}/shibboleth/*.logger
-%config %{_sysconfdir}/shibboleth/inqueue.pem
-%config %{_sysconfdir}/shibboleth/example.crt
-%config %{_sysconfdir}/shibboleth/example.key
-%{_sysconfdir}/shibboleth/*.dist
-%{_sysconfdir}/shibboleth/apache*.config
-
-%exclude %{_bindir}/posttest
-%exclude %{_bindir}/test-client
-%exclude %{_libexecdir}/*.la
+%{_bindir}/mdquery
+%{_bindir}/resolvertest
+%{_libdir}/libshibsp.so.*
+%{_libdir}/libshibsp-lite.so.*
+%dir %{_libdir}/%{name}
+%{_libdir}/%{name}/*
+%exclude %{_libdir}/%{name}/*.la
+%dir %{_localstatedir}/log/%{name}
+%dir %{_localstatedir}/run/%{name}
+%dir %{_datadir}/xml/%{name}
+%{_datadir}/xml/%{name}/*
+%dir %{_sysconfdir}/%{name}
+%config(noreplace) %{_sysconfdir}/%{name}/*.xml
+%config(noreplace) %{_sysconfdir}/%{name}/*.html
+%config(noreplace) %{_sysconfdir}/%{name}/*.logger
+%if "%{_vendor}" == "redhat" || "%{_vendor}" == "suse"
+%config %{_initrddir}/shibd
+%endif
+%if "%{_vendor}" == "suse"
+%{_sbindir}/rcshibd
+%endif
+%{_sysconfdir}/%{name}/*.dist
+%{_sysconfdir}/%{name}/apache*.config
+%{_sysconfdir}/%{name}/shibd-*
+%attr(755, root, root) %{_sysconfdir}/%{name}/keygen.sh
+%attr(755, root, root) %{_sysconfdir}/%{name}/metagen.sh
+%{_sysconfdir}/%{name}/*.xsl
+%doc %{pkgdocdir}
+%exclude %{pkgdocdir}/api
 
 %files devel
 %defattr(-,root,root,-)
-%{_includedir}
-%{_libdir}/libshib.so
-%{_libdir}/libshib-target.so
-
-%files selinux-policy-targeted
-%defattr(-,root,root,-)
-%{_sysconfdir}/selinux/targeted/src/policy/file_contexts/program/*.fc
-%{_sysconfdir}/selinux/targeted/src/policy/domains/program/*.te
+%{_includedir}/*
+%{_libdir}/libshibsp.so
+%{_libdir}/libshibsp-lite.so
+%doc %{pkgdocdir}/api
 
 %changelog
+* Fri Dec 25 2009  Scott Cantor  <cantor.2@osu.edu>  - 2.4-1
+- Update dependencies.
+
+* Mon Nov 23 2009 Scott Cantor  <cantor.2@osu.edu>  - 2.3.1-1
+- Reset revision for 2.3.1 release
+
+* Wed Aug 19 2009 Scott Cantor  <cantor.2@osu.edu>  - 2.2.1-2
+- SuSE init script changes
+- Restart Apache on removal, not just upgrade
+- Fix scriptlet exit values when Apache is stopped
+
+* Mon Aug 10 2009 Scott Cantor  <cantor.2@osu.edu>  - 2.2.1-1
+- Doc handling changes
+- SuSE init script
+
+* Tue Aug 4 2009 Scott Cantor  <cantor.2@osu.edu>  - 2.2.1-1
+- Initial version for 2.2.1, with shibd/httpd restart on upgrade
+
+* Thu Jun 25 2009 Scott Cantor  <cantor.2@osu.edu>  - 2.2-3
+- Add additional cleanup to posttrans fix
+
+* Tue Jun 23 2009 Scott Cantor  <cantor.2@osu.edu>  - 2.2-2
+- Reverse without_builtinapache macro test
+- Fix init script handling on Red Hat to handle upgrades
+
+* Wed Dec 3 2008  Scott Cantor  <cantor.2@osu.edu>  - 2.2-1
+- Bump minor version.
+- Make keygen.sh executable.
+- Fixing SUSE Xerces dependency name.
+- Optionally package shib.conf.
+
+* Tue Jun 10 2008  Scott Cantor  <cantor.2@osu.edu>  - 2.1-1
+- Change shib.conf handling to treat as config file.
+
+* Mon Mar 17 2008  Scott Cantor  <cantor.2@osu.edu>  - 2.0-6
+- Official release.
+
+* Fri Jan 18 2008  Scott Cantor  <cantor.2@osu.edu>  - 2.0-5
+- Release candidate 1.
+
+* Sun Oct 21 2007 Scott Cantor  <cantor.2@osu.edu>  - 2.0-4
+- libexec -> lib/shibboleth changes
+- Added doc subpackage
+
+* Thu Aug 16 2007 Scott Cantor  <cantor.2@osu.edu>  - 2.0-3
+- First public beta.
+
+* Fri Jul 13 2007 Scott Cantor <cantor.2@osu.edu>  - 2.0-2
+- Second alpha release.
+
+* Sun Jun 10 2007 Scott Cantor <cantor.2@osu.edu>  - 2.0-1
+- First alpha release.
+
+* Mon Oct 2 2006 Scott Cantor  <cantor.2@osu.edu>  - 1.3-11
+- Applied fix for secadv 20061002
+- Fix for metadata loader loop
+
+* Wed Jun 15 2006 Scott Cantor  <cantor.2@osu.edu>  - 1.3-10
+- Applied fix for sec 20060615
+
+* Fri Apr 15 2006 Scott Cantor  <cantor.2@osu.edu>  - 1.3-9
+- Misc. patches, SuSE, Apache 2.2, gcc 4.1, and 64-bit support
+
+* Mon Jan 9 2006 Scott Cantor  <cantor.2@osu.edu>  - 1.3-8
+- Applied new fix for secadv 20060109
+
+* Tue Nov 8 2005 Scott Cantor  <cantor.2@osu.edu>  - 1.3-7
+- Applied new fix for secadv 20050901 plus rollup
+
+* Fri Sep 23 2005 Scott Cantor  <cantor.2@osu.edu>  - 1.3-6
+- Minor patches and default config changes
+- pidfile patch
+- Fix shib.conf creation
+- Integrated init.d script
+- Prevent replacement of config files
+
+* Thu Sep 1 2005  Scott Cantor  <cantor.2@osu.edu>  - 1.3-5
+- Applied fix for secadv 20050901 plus rollup of NSAPI fixes
+
 * Sun Apr 24 2005  Scott Cantor  <cantor.2@osu.edu>  - 1.3-1
 - Updated test programs and location of schemas.
 - move siterefresh to to sbindir