|
@@ -1,360 +0,0 @@
|
|
|
-## 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 1
|
|
|
-
|
|
|
-## Things users may want to change
|
|
|
-#
|
|
|
-# User (and group) name under which the Tor daemon runs.
|
|
|
-
|
|
|
-%define toruser @TORUSER@
|
|
|
-%define torgroup @TORGROUP@
|
|
|
-
|
|
|
-## 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@
|
|
|
-
|
|
|
-%define version %(echo %{native_version} | sed -e 's/-/./g')
|
|
|
-
|
|
|
-## Define output filename
|
|
|
-#
|
|
|
-# This creates filenames based upon the value of target_cpu defined above
|
|
|
-
|
|
|
-## 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
|
|
|
-# (someday). 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)
|
|
|
-%define is_rfl %(test -e /etc/redflag-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
|
|
|
-
|
|
|
-%if %{is_mdk}
|
|
|
-%define ostag mdk
|
|
|
-%endif
|
|
|
-
|
|
|
-%if %{is_suse}
|
|
|
-%define ostag suse%(grep openSUSE /etc/SuSE-release | awk '{print $2}' | sed -e 's/\\./_/')
|
|
|
-%endif
|
|
|
-
|
|
|
-%if %{is_rfl}
|
|
|
-%define ostag %(sed -e 's/^.*Desktop /redflag/' -e 's/ .*$//' -e 's/\\./_/g' < /etc/redflag-release)
|
|
|
-%endif
|
|
|
-
|
|
|
-# Using the build date ensures that every build really does get
|
|
|
-# a different release number. We use this trick for CVS versions.
|
|
|
-# For release versions, we don't want or need it.
|
|
|
-%define is_dev_version %(echo %{native_version} | grep 'dev' > /dev/null && echo 1 || echo 0)
|
|
|
-
|
|
|
-%if %{is_dev_version}
|
|
|
-%define blddate %(date -u +"%Y%m%d%H%M")
|
|
|
-%define release %{pkgspec}.%{specver}.%{ostag}.%{blddate}
|
|
|
-%else
|
|
|
-%define release %{pkgspec}.%{specver}.%{ostag}
|
|
|
-%endif
|
|
|
-
|
|
|
-## 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: https://www.torproject.org/
|
|
|
-Group: System Environment/Daemons
|
|
|
-
|
|
|
-License: 3-clause BSD
|
|
|
-Vendor: The Tor Project (https://torproject.org)
|
|
|
-Packager: Erinn Clark <erinn@torproject.org>
|
|
|
-
|
|
|
-Requires: openssl >= 0.9.7, libevent >= 1.4.13
|
|
|
-BuildRequires: openssl-devel >= 0.9.7, libevent-devel >= 1.4.13, asciidoc
|
|
|
-
|
|
|
-# Fedora 16 and RHEL 5 have following conflicting packages according to rpm search
|
|
|
-%if %{is_rh}
|
|
|
-Conflicts: tor-core, tor-lsb, tor-upstart
|
|
|
-%endif
|
|
|
-
|
|
|
-Requires(pre): /usr/bin/id, /bin/date, /bin/sh
|
|
|
-Requires(pre): %{_sbindir}/useradd, %{_sbindir}/groupadd
|
|
|
-
|
|
|
-Source0: https://www.torproject.org/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 "%{toruser}" user and
|
|
|
-a "%{torgroup}" group, and set tor up to run as a daemon when the system
|
|
|
-is rebooted.
|
|
|
-
|
|
|
-Applications connect to the local Tor proxy using the SOCKS
|
|
|
-protocol. The tor client 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 relay.
|
|
|
-
|
|
|
-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 or
|
|
|
-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 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}
|
|
|
-
|
|
|
-%build
|
|
|
-%if %{is_suse}
|
|
|
-%configure --with-tor-user=%{toruser} --with-tor-group=%{torgroup} --docdir=%{_docdir}/%{name}
|
|
|
-%else
|
|
|
-%configure --with-tor-user=%{toruser} --with-tor-group=%{torgroup}
|
|
|
-%endif
|
|
|
-%make
|
|
|
-
|
|
|
-%install
|
|
|
-%makeinstall
|
|
|
-
|
|
|
-# Install init script and control script
|
|
|
-%__mkdir_p ${RPM_BUILD_ROOT}%{_initrddir}
|
|
|
-%if %{is_suse}
|
|
|
-%__install -p -m 755 contrib/suse/tor.sh ${RPM_BUILD_ROOT}%{_initrddir}/%{name}
|
|
|
-%else
|
|
|
-%__install -p -m 755 contrib/tor.sh ${RPM_BUILD_ROOT}%{_initrddir}/%{name}
|
|
|
-%endif
|
|
|
-%__install -p -m 755 contrib/torctl ${RPM_BUILD_ROOT}%{_bindir}
|
|
|
-
|
|
|
-# 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
|
|
|
-
|
|
|
-# Install the logrotate control file.
|
|
|
-%__mkdir_p -m 755 ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d
|
|
|
-%__install -p -m 644 contrib/tor.logrotate ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/%{name}
|
|
|
-
|
|
|
-# 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}
|
|
|
-%__mkdir_p -m 700 ${RPM_BUILD_ROOT}%{_localstatedir}/tmp/%{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
|
|
|
-
|
|
|
-# If tor is already installed and running (whether installed by RPM
|
|
|
-# or not), then kill it, but remember that it was running.
|
|
|
-%__rm -f /%{_localstatedir}/tmp/${name}-was-running-%{version}-%{release}
|
|
|
-if [ -f %{_initrddir}/%{name} ] && /sbin/service %{name} status ; then
|
|
|
- /sbin/service %{name} stop
|
|
|
- touch /%{_localstatedir}/tmp/${name}-was-running-%{version}-%{release}
|
|
|
-fi
|
|
|
-
|
|
|
-#
|
|
|
-# Create a user and group if need be
|
|
|
-#
|
|
|
-if [ ! -n "`/usr/bin/id -g %{torgroup} 2>/dev/null`" ]; then
|
|
|
- # One would like to default the GID, but doing that properly would
|
|
|
- # require thought.
|
|
|
- %{_sbindir}/groupadd %{torgroup} 2> /dev/null
|
|
|
-fi
|
|
|
-if [ ! -n "`/usr/bin/id -u %{toruser} 2>/dev/null`" ]; then
|
|
|
- # One would also like to default the UID, but doing that properly would
|
|
|
- # also require thought.
|
|
|
- if [ -x %{_sbindir}/nologin ]; then
|
|
|
- %{_sbindir}/useradd -r -g %{torgroup} -d %{_localstatedir}/lib/%{name} -s %{_sbindir}/nologin %{toruser} 2> /dev/null
|
|
|
- else
|
|
|
- %{_sbindir}/useradd -r -g %{torgroup} -d %{_localstatedir}/lib/%{name} -s /bin/false %{toruser} 2> /dev/null
|
|
|
- fi
|
|
|
-fi
|
|
|
-exit 0
|
|
|
-
|
|
|
-%post
|
|
|
-
|
|
|
-# If this is a new installation, use chkconfig to put tor in the
|
|
|
-# default set of runlevels. If it's an upgrade, leave the existing
|
|
|
-# configuration alone.
|
|
|
-if [ $1 -eq 1 ]; then
|
|
|
- /sbin/chkconfig --add %{name}
|
|
|
- /sbin/chkconfig %{name} on
|
|
|
-fi
|
|
|
-
|
|
|
-# Older tor RPMS used a different username for the tor daemon.
|
|
|
-# Make sure the runtime data have the right ownership.
|
|
|
-%__chown -R %{toruser}.%{torgroup} %{_localstatedir}/{lib,log,run}/%{name}
|
|
|
-
|
|
|
-if [ -f /%{_localstatedir}/tmp/${name}-was-running-%{version}-%{release} ]; then
|
|
|
- /sbin/service %{name} start
|
|
|
- %__rm -f /%{_localstatedir}/tmp/${name}-was-running-%{version}-%{release}
|
|
|
-fi
|
|
|
-exit 0
|
|
|
-
|
|
|
-%preun
|
|
|
-
|
|
|
-# If no instances of tor will be installed when we're done, make
|
|
|
-# sure that it gets killed. We *don't* want to kill it or delete
|
|
|
-# any of its data on uninstall if it's being upgraded to a new
|
|
|
-# version, because the new version will actually already have
|
|
|
-# been installed and started before the uninstall script for
|
|
|
-# the old version is run, and we'd end up hosing it.
|
|
|
-if [ $1 -le 0 ]; then
|
|
|
- if [ -f %{_initrddir}/%{name} ] && /sbin/service %{name} status ; then
|
|
|
- /sbin/service %{name} stop
|
|
|
- fi
|
|
|
- %/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
|
|
|
-fi
|
|
|
-exit 0
|
|
|
-
|
|
|
-%files
|
|
|
-%defattr(-,root,root)
|
|
|
-%if %{is_suse}
|
|
|
-%doc INSTALL LICENSE README ChangeLog doc/HACKING doc/TODO doc/*html
|
|
|
-%endif
|
|
|
-%doc INSTALL LICENSE README ChangeLog doc/HACKING doc/TODO
|
|
|
-%{_mandir}/man*/*
|
|
|
-%{_bindir}/tor
|
|
|
-%{_bindir}/torctl
|
|
|
-%{_bindir}/torify
|
|
|
-%{_bindir}/tor-resolve
|
|
|
-%{_bindir}/tor-gencert
|
|
|
-%if %{is_suse}
|
|
|
-%else
|
|
|
-%{_docdir}/*
|
|
|
-%endif
|
|
|
-%{_datadir}/tor/geoip
|
|
|
-%config %{_initrddir}/%{name}
|
|
|
-%config(noreplace) %attr(0644,root,root) %{_sysconfdir}/logrotate.d/%{name}
|
|
|
-%dir %attr(0755,root,%{torgroup}) %{_sysconfdir}/%{name}/
|
|
|
-%config(noreplace) %attr(0644,root,%{torgroup}) %{_sysconfdir}/%{name}/*
|
|
|
-%attr(0700,%{toruser},%{torgroup}) %dir %{_localstatedir}/lib/%{name}
|
|
|
-%attr(0750,%{toruser},%{torgroup}) %dir %{_localstatedir}/run/%{name}
|
|
|
-%attr(0750,%{toruser},%{torgroup}) %dir %{_localstatedir}/log/%{name}
|
|
|
-
|
|
|
-%changelog
|
|
|
-* Thu Jun 21 2012 Ondrej Mikle <ondrej.mikle@gmail.com>
|
|
|
-- fixed to work with both rpmbuild and mock on RHEL/Fedora
|
|
|
-- removed unnecessary files from rpm such as .git repo
|
|
|
-- fixed build dependencies and package conflicts
|
|
|
-- fixed creating _tor user on Fedora 17 (ancient typo)
|
|
|
-- added/updated build instructions for RPM creation
|
|
|
-- confirmed to build and run on EL5, EL6, Fedora 16/17, OpenSuse 12.1
|
|
|
-
|
|
|
-* Fri Aug 20 2010 Erinn Clark <erinn@torproject.org>
|
|
|
-- add conflicts for Fedora packages
|
|
|
-- add logic for SuSE since it requires special doc handling
|
|
|
-
|
|
|
-* Mon Feb 22 2010 Erinn Clark <erinn@torproject.org>
|
|
|
-- remove AUTHORS from %doc line since it no longer exists upstream
|
|
|
-- switch maintainers
|
|
|
-
|
|
|
-* Fri May 01 2009 Andrew Lewman <andrew@torproject.org>
|
|
|
-- clean up distro detection and remove dead comment blocks
|
|
|
-
|
|
|
-* Sun Feb 22 2009 Andrew Lewman <andrew@torproject.org>
|
|
|
-- update the description, vendor, and packager
|
|
|
-
|
|
|
-* Thu Sep 11 2008 Andrew Lewman <phobos@rootme.org>
|
|
|
-- See r16867
|
|
|
-- http://archives.seul.org/or/cvs/Sep-2008/msg00156.html
|
|
|
-
|
|
|
-* Tue Feb 27 2007 Andrew Lewman <phobos@rootme.org>
|
|
|
-- Fix a potential race condition in how we determine the running state of tor. Found by Stefan Nordhausen.
|
|
|
-- see OR-CVS for details
|
|
|
-
|
|
|
-* Fri May 26 2006 Andrew Lewman <phobos@rootme.org>
|
|
|
-- Add in a few "SUSEisms" to make dist-rpm actually work on suse
|
|
|
-- Turn Tor "on" via chkconfig
|
|
|
-- Update -mcpu to -mtune to make GCC happy
|
|
|
-- see OR-CVS for details
|
|
|
-
|
|
|
-* Tue Mar 28 2006 Andrew Lewman <phobos@rootme.org>
|
|
|
-- converted to build the specified target cpu and arch
|
|
|
-- override related rpm macros to build correctly
|
|
|
-- see OR-CVS for details
|
|
|
-
|
|
|
-* Mon Jan 17 2005 John Bashinski <jbash@velvet.com>
|
|
|
-- Take runtime user and group names from configure system. Default
|
|
|
- user/group names are now "_tor"; blame Roger...
|
|
|
-- Make logrotate control file a separate file in the source distribution,
|
|
|
- rather than creating it from the spec file.
|
|
|
-- Properly handle the order in which RPM executes scriptlets on upgrade.
|
|
|
- The old code would kill the daemon on upgrade.
|
|
|
-- Start the tor daemon after installation if and only if it was
|
|
|
- running before installation. Preserve runlevel setup on upgrade.
|
|
|
-- Package the torctl script; the init script is now a wrapper around it.
|
|
|
-
|
|
|
-* 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.
|