diff options
author | Nick Mathewson <nickm@torproject.org> | 2004-11-04 15:17:22 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2004-11-04 15:17:22 +0000 |
commit | 69e5e8d0adc7d841c1b5c2d24f2c8228563cc66f (patch) | |
tree | d211f18170b76df601e86fe2491c7efa161d0483 /tor.spec.in | |
parent | f7a30fa73ec8fbbc850ed39f0206bf2fe1172f10 (diff) | |
download | tor-69e5e8d0adc7d841c1b5c2d24f2c8228563cc66f.tar.gz tor-69e5e8d0adc7d841c1b5c2d24f2c8228563cc66f.zip |
Merge RPM spec patch from jbash
svn:r2674
Diffstat (limited to 'tor.spec.in')
-rw-r--r-- | tor.spec.in | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/tor.spec.in b/tor.spec.in new file mode 100644 index 0000000000..06bf1dfcb9 --- /dev/null +++ b/tor.spec.in @@ -0,0 +1,249 @@ +## NOTE: tor.spec is autogenerated from tor.spec.in . Edit the latter, +## not the former. + +## Things that need to be edited frequently +# +# This should be incremented whenever the spec file changes, but +# can drop back to zero at a new Tor version + +%define specver 0 + +## Things users may want to change +# +# User (and group) name under which the Tor daemon runs + +%define runuser tordmn + +## Version song and dance +# +# This should be the Tor version number, as it appears on the tarball, +# including any "pre<x>" or "rc<y>" suffix. This gets massaged to +# create the RPM version number, in a way that depends on the Tor +# numbering scheme. +%define native_version @VERSION@ + +# Massage the version so that pre-releases will be treated as earlier +# than release candidates which will be treated as earlier than released +# versions... while making as few confusing changes to the standard +# release naming as possible. +# XXXX009 Execept that handling cvs breaks this. +%define version %(echo %{native_version} | sed 's/-cvs/.cvs/' -e 's/pre/.pre./' -e 's/rc/.rc./' -e 's/([0-9])$/\1.release/') + +## Release and OS identification song and dance +# +# This identifies the lineage of the spec file. This file is the +# standard one that comes with Tor; various distributions may +# have their own ideas about the right ways to do things. +%define pkgspec tor + +# This spec is intended to build and install on multiple distributions. +# Detect the distribution we're building on. + +%define is_rh %(test -e /etc/redhat-release && echo 1 || echo 0) +%define is_fc %(test -e /etc/fedora-release && echo 1 || echo 0) +%define is_mdk %(test -e /etc/mandrake-release && echo 1 || echo 0) +%define is_suse %(test -e /etc/SuSE-release && echo 1 || echo 0) + +%if %{is_fc} +%define ostag %(sed -e 's/^.*release /fc/' -e 's/ .*$//' -e 's/\\./_/g' < /etc/fedora-release) +%endif + +%if %{is_rh} +%define ostag %(sed -e 's/^.*release /rh/' -e 's/ .*$//' -e 's/\\./_/g' < /etc/redhat-release) +%endif + +# These are probably wrong... just placeholders should we actually +# end up supporting these distributions + +%if %{is_mdk} +%define ostag mdk +%endif + +%if %{is_suse} +%define ostag suse +%endif + +# Using the build date ensures that every build really does get +# a different release number. +%define blddate %(date -u +"%Y%m%d%H%M") + +# ... and here it is. +%define release %{pkgspec}.%{specver}.%{ostag}.%{blddate} + +## General-purpose macros +# +# Some systems don't have some macros. If a macro doesn't seem +# to exist on your system, add it here... + +%if %{!?__make:1}%{?__make:0} +%define __make make +%endif + +%if %{!?make:1}%{?make:0} +%define make %{__make} +%endif + +%if %{!?_localstatedir:1}%{?_localstatedir:0} +%define _localstatedir @LOCALSTATEDIR@ +%endif + +## Package information +# +Name: tor +Version: %{version} +Release: %{release} + +Summary: Anonymizing overlay network for TCP (The onion router) +URL: http://freehaven.net/%{name}/ +Group: System Environment/Daemons + +License: BSD-like +Vendor: R. Dingledine <arma@seul.org> +Packager: Nick Mathewson <nickm@seul.org> + +Requires: openssl >= 0.9.6 +BuildRequires: openssl-devel >= 0.9.6, rpm-build >= 4.0 +Requires(pre): shadow-utils, /usr/bin/id, /bin/date, /bin/sh +Requires(pre): %{_sbindir}/useradd, %{_sbindir}/groupadd + +Source0: http://freehaven.net/%{name}/dist/%{name}-%{native_version}.tar.gz + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root + +%description +Tor is a connection-based low-latency anonymous communication system. + +This package provides the "tor" program, which serves as both a client and +a relay node. Scripts will automatically create a "%{runuser}" user and +group, and set tor up to run as a daemon when the system is rebooted. + +Clients connect to their local Tor servers using the SOCKS5 +protocol. The local server chooses a path through a set of relays, in +which each relay knows its predecessor and successor, but no +others. Traffic flowing down the circuit is unwrapped by a symmetric +key at each relay, which reveals the downstream node. + +Warnings: Tor does no protocol cleaning. That means there is a danger +that application protocols and associated programs can be induced to +reveal information about the initiator. Tor depends on Privoxy and +similar protocol cleaners to solve this problem. This is alpha code, +and is even more likely than released code to have anonymity-spoiling +bugs. The present network is very small -- this further reduces the +strength of the anonymity provided. Tor is not presently suitable +for high-stakes anonymity. + +%prep +%setup -q -n %{name}-%{native_version} + +# Patch the startup script to use the right user and group IDs. Force +# the use of /bin/sh as the shell for the "tor" account. +ed -s contrib/tor.sh.in << '/EOF/' > /dev/null +,s/^TORUSER=$/TORUSER=%{runuser}/ +,s/^TORGROUP=$/TORGROUP=%{runuser}/ +,s:/bin/su:/bin/su -s /bin/sh: +# +# Save and exit ed +w +q +/EOF/ + +%build +%configure +%make + +%install +%makeinstall + +# Install init script. +%__mkdir_p ${RPM_BUILD_ROOT}%{_initrddir} +%__install -p -m 755 contrib/tor.sh ${RPM_BUILD_ROOT}%{_initrddir}/%{name} + +# Set up config file; "sample" file implements a basic user node. +%__install -p -m 644 ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/torrc.sample ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/torrc + +# Create a logrotate file. This should really be a source file, +# but hey... +%__mkdir_p -m 755 ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d +%__cat > ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/%{name} << /EOF/ +%{_localstatedir}/log/%{name} { + missingok + notifempty + sharedscripts +} +/EOF/ + +# Directories that don't have any preinstalled files +%__mkdir_p -m 700 ${RPM_BUILD_ROOT}%{_localstatedir}/lib/%{name} +%__mkdir_p -m 755 ${RPM_BUILD_ROOT}%{_localstatedir}/run/%{name} +%__mkdir_p -m 755 ${RPM_BUILD_ROOT}%{_localstatedir}/log/%{name} + +%clean +[ "${RPM_BUILD_ROOT}" != "/" ] && rm -rf ${RPM_BUILD_ROOT} + +# These scripts are probably wrong for Mandrake or SuSe. They're certainly +# wrong for Debian, but what are you doing using RPM on Debian? +%pre +[ -f %{_initrddir}/%{name} ] && /sbin/service %{name} stop +if [ ! -n "`/usr/bin/id -g %{runuser} 2>/dev/null`" ]; then + # One would like to default the GID, but doing that properly would + # require thought. + %{_sbindir}/groupadd %{runuser} 2> /dev/null +fi +if [ ! -n "`/usr/bin/id -u %{runuser} 2>/dev/null`" ]; then + # One would also like to default the UID, but doing that properly would + # also require thought. + if [ -x /sbin/nologin ]; then + %{_sbindir}/useradd -r -g %{runuser} -d / -s /sbin/nologin %{runuser} 2> /dev/null + else + %{_sbindir}/useradd -r -g %{runuser} -d / -s /bin/false %{runuser} 2> /dev/null + fi +fi +exit 0 + +%post +/sbin/chkconfig --add %{name} +exit 0 + +%preun +/sbin/chkconfig --del %{name} +exit 0 + +%files +%defattr(-,root,root) +%doc AUTHORS INSTALL LICENSE README ChangeLog doc/HACKING doc/TODO doc/FAQ +%{_mandir}/man*/* +%{_bindir}/tor +%{_bindir}/torify +%{_bindir}/tor-resolve +%config %{_initrddir}/%{name} +%config(noreplace) %attr(0644,root,root) %{_sysconfdir}/logrotate.d/%{name} +%dir %attr(0750,root,%{runuser}) %{_sysconfdir}/%{name}/ +%config(noreplace) %attr(0640,root,%{runuser}) %{_sysconfdir}/%{name}/* +%attr(0700,%{runuser},%{runuser}) %dir %{_localstatedir}/lib/%{name} +%attr(0750,%{runuser},%{runuser}) %dir %{_localstatedir}/run/%{name} +%attr(0750,%{runuser},%{runuser}) %dir %{_localstatedir}/log/%{name} + +%changelog +* Tue Nov 5 2004 John Bashinski <jbash@velvet.com> +- Add skeletal support for multiple distributions +- Even more ridiculous level of macro-ization +- Modify version numbers so RPM can determine when it has a newer version +- Return to including distribution name in package release number +- Sharply trim description +- Change user/group name from "tor" to "tordmn"; "tor" is a common + given name (reported by Marius Hjelle) +- Change group to "System Environment/Daemons" (suggested by Marius Hjelle) +- Create logrotate file (suggested by Marius Hjelle) +- Make Tor run as a user proxy by default (suggested by Marius Hjelle) +- Autogenerate spec file from GNU autotools data, substituting version + and whatnot +- Be perhaps excessively paranoid with config file and directory modes +- Remove auto-start and auto-stop at installation time; there's some kind + of weird race going on, and it's arguably a bad thing anyway. + +* Mon Jun 06 2004 Nick Mathewson <nickm@freehaven.net> 0.0.7-0.std.0.1.rc2 +- Make spec file more happy with fc2 packaging + +* Sat Jan 17 2004 John Bashinski <jbash@velvet.com> +- Basic spec file; tested with Red Hat 9. + |