123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 |
- ## 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.
- #
- # We do this as follows:
- # - If the version number has no "pre", "cvs", or "rc", we let it pass.
- # - Otherwise, we mangle it heavily:
- # * To make 0.0.Xpre come after 0.0.{X-1}* but before 0.0.X, we prepend
- # 0.0.{X-1}.99 to the version.
- # * We replace pre with .pre. and rc with .rc.
- # * We replace -cvs with .cvs, and lack of -cvs with .release.
- #
- # Note that this scheme will break if we ever use 0 as a last digit for a
- # Tor version: so don't do that.
- %define is_dev_version %(echo %{native_version} | grep 'cvs\\|pre\\|rc' > /dev/null && echo 1 || echo 0)
- %if %{is_dev_version}
- # The 0.0.X.pre.1.cvs part.
- %define safe_native_version %(echo %{native_version} | sed -e 's/-cvs/.cvs/' -e 's/pre/.pre./' -e 's/rc/.rc./' -e 's/\\([0-9]\\)$/\\1.release/')
- # The 0.0.X part -- the version we are leading up to.
- %define stub_version %(echo %{native_version} | sed -e 's/-cvs//' -e 's/pre.*//' -e 's/rc.*//')
- # The 0.0 part
- %define stub_start %(echo %{stub_version} | sed -e 's/\\.[0-9]*$//')
- # The X part.
- %define stub_last %(echo %{stub_version} | sed -e 's/.*\\.\\([0-9]*\\)$/\\1/')
- # The {X-1} part.
- %define stub_newlast %(expr %{stub_last} - 1)
- # The actual version: 0.0.{X-1}.99.0.0.X.pre.1.cvs
- %define version %{stub_start}.%{stub_newlast}.99.%{safe_native_version}
- %else
- %define version %{native_version}
- %endif
- ## 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)
- %else
- %if %{is_rh}
- %define ostag %(sed -e 's/^.*release /rh/' -e 's/ .*$//' -e 's/\\./_/g' < /etc/redhat-release)
- %endif
- %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}
- %__rm -f ${_localstatedir}/lib/%{name}/cached-directory
- %__rm -f ${_localstatedir}/lib/%{name}/bw_accounting
- %__rm -f ${_localstatedir}/lib/%{name}/control_auth_cookie
- %__rm -f ${_localstatedir}/lib/%{name}/router.desc
- %__rm -f ${_localstatedir}/lib/%{name}/fingerprint
- 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.
|