diff options
author | Karl Trygve Kalleberg <karltk@gentoo.org> | 2003-07-01 12:06:24 +0000 |
---|---|---|
committer | Karl Trygve Kalleberg <karltk@gentoo.org> | 2003-07-01 12:06:24 +0000 |
commit | aec9df7f594619373311431897f57eedb26207fc (patch) | |
tree | 4c5c32e453e71e019d47cf75f94e268b06d63e5d /sys-devel/distcc | |
parent | Fixes #23509. (diff) | |
download | gentoo-2-aec9df7f594619373311431897f57eedb26207fc.tar.gz gentoo-2-aec9df7f594619373311431897f57eedb26207fc.tar.bz2 gentoo-2-aec9df7f594619373311431897f57eedb26207fc.zip |
Fixes #23509.
Diffstat (limited to 'sys-devel/distcc')
-rw-r--r-- | sys-devel/distcc/ChangeLog | 11 | ||||
-rw-r--r-- | sys-devel/distcc/Manifest | 8 | ||||
-rw-r--r-- | sys-devel/distcc/distcc-2.7.1.ebuild | 124 | ||||
-rw-r--r-- | sys-devel/distcc/files/2.7.1/001_fix_tmpdir.patch.gz | bin | 0 -> 249 bytes | |||
-rw-r--r-- | sys-devel/distcc/files/2.7.1/conf | 12 | ||||
-rw-r--r-- | sys-devel/distcc/files/2.7.1/distcc-config | 322 | ||||
-rw-r--r-- | sys-devel/distcc/files/2.7.1/init | 24 | ||||
-rw-r--r-- | sys-devel/distcc/files/digest-distcc-2.7.1 | 1 |
8 files changed, 499 insertions, 3 deletions
diff --git a/sys-devel/distcc/ChangeLog b/sys-devel/distcc/ChangeLog index e13181e1b0ab..a38bbc262cd0 100644 --- a/sys-devel/distcc/ChangeLog +++ b/sys-devel/distcc/ChangeLog @@ -1,6 +1,15 @@ # ChangeLog for sys-devel/distcc # Copyright 2000-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/distcc/ChangeLog,v 1.48 2003/06/18 13:52:59 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-devel/distcc/ChangeLog,v 1.49 2003/07/01 12:06:12 karltk Exp $ + +*distcc-2.7.1 (01 Jul 2003) + + 01 Jul 2003; Karl Trygve Kalleberg <karltk@gentoo.org> + distcc-2.7.ebuild, files/2.7.1/distcc-config, files/2.7.1/conf, + files/2.7.1/init, files/2.7.1/001_fix_tmpdir.patch.gz: + New upstream version. Ebuild submitted by Lisa Marie <lisa@thedoh.com>. + This version is self-contained, so previous versions may be nuked at + whim. *distcc-2.7 (16 Jun 2003) diff --git a/sys-devel/distcc/Manifest b/sys-devel/distcc/Manifest index 3f7bd94aac8d..e5633e9bf4c4 100644 --- a/sys-devel/distcc/Manifest +++ b/sys-devel/distcc/Manifest @@ -1,4 +1,4 @@ -MD5 9ff430b9b6605c183c0cb9021554b58d ChangeLog 8503 +MD5 aaf4b5dd632bcd5c98e5bc087a28eb0d ChangeLog 8866 MD5 fb814141f7428e98792c3f0a6f9e4d46 distcc-1.2.3-r3.ebuild 2883 MD5 d4b89537053906add5a198877a19bfea distcc-2.0.1-r1.ebuild 2893 MD5 5f793536bdddf6ee72ba8777fb313294 distcc-2.0.1.ebuild 2896 @@ -8,7 +8,7 @@ MD5 38234c5ce79b03c72cc2d69d6d62cefb distcc-2.4.ebuild 2703 MD5 8a06baed9414847cb4f0ff60ca4d871c distcc-2.5-r1.ebuild 3177 MD5 ef4127d6f857ade2d39543f68db70c9b distcc-2.5.ebuild 2703 MD5 1b52e64bcd021efbd8ab5dbcd9713730 distcc-2.7.ebuild 3452 -MD5 0b38b93fa0074380cc04a903edf87ed0 distcc-2.7.1.ebuild 3635 +MD5 336a273c0f0a8e36ee2d919d468fc95e distcc-2.7.1.ebuild 3873 MD5 9bad5d7dc8c33d22ff42efcc299f1067 files/digest-distcc-1.2.3-r3 65 MD5 9a3a39b4f229559e6a855d777c6fe807 files/digest-distcc-2.0.1 65 MD5 9a3a39b4f229559e6a855d777c6fe807 files/digest-distcc-2.0.1-r1 65 @@ -21,7 +21,11 @@ MD5 5826ae3f83bd02bda94fa0e9343ef3fe files/digest-distcc-2.7 63 MD5 2c4c5f6d6980e4b17d7daea1399292d8 files/digest-distcc-2.7.1 65 MD5 34d20e7bf223ac2f2ec61c5a7a9b2e3c files/1.2/conf 314 MD5 3783a1abcbd33bc1d24e14012edeb696 files/1.2/init 484 +MD5 785e2966bd49522fd593e9f92e926c46 files/2.3/distcc-config 7389 MD5 38395190f3cea244abdbe4ef9619e59f files/1.2.3/distcc-config 6859 MD5 d4fd07d7d3d3e3952baef8c654d2715f files/1.2.3/info.patch 545 MD5 6bc82bf32667e5398497b2dae88f1033 files/1.2.3/wrapper.patch 5242 MD5 d64446b61d189643742251cdfd0bee2e files/2.7.1/001_fix_tmpdir.patch.gz 249 +MD5 e20ae373aa396d16c03ca33d11247183 files/2.7.1/distcc-config 7391 +MD5 34d20e7bf223ac2f2ec61c5a7a9b2e3c files/2.7.1/conf 314 +MD5 3783a1abcbd33bc1d24e14012edeb696 files/2.7.1/init 484 diff --git a/sys-devel/distcc/distcc-2.7.1.ebuild b/sys-devel/distcc/distcc-2.7.1.ebuild new file mode 100644 index 000000000000..9a6ffce67ac8 --- /dev/null +++ b/sys-devel/distcc/distcc-2.7.1.ebuild @@ -0,0 +1,124 @@ +# Copyright 1999-2003 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-devel/distcc/distcc-2.7.1.ebuild,v 1.1 2003/07/01 12:06:13 karltk Exp $ + +inherit eutils gcc flag-o-matic +[ `gcc-major-version` -eq 2 ] && filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE + +HOMEPAGE="http://distcc.samba.org/" +SRC_URI="http://distcc.samba.org/ftp/distcc/distcc-${PV}.tar.bz2" +DESCRIPTION="a program to distribute compilation of C code across several machines on a network" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~x86 ~ppc ~sparc ~alpha ~hppa ~mips ~arm" +IUSE="gnome" + +DEPEND=">=sys-apps/portage-2.0.46-r11 + >=sys-devel/gcc-config-1.3.1 + sys-apps/shadow + dev-libs/popt" + +RDEPEND="gnome? ( >=gnome-base/libgnomeui-2.2.0.1 )" + +src_unpack() { + unpack ${A} + + #this patch fixes the problem with portage reassigning $TMPDIR + #and rendering the monitor programs useless, unless a rather + #icky hack is used. now sudo -u portage distccmon-{gnome,text} + #will work. - Lisa + cd ${S}/src + epatch ${FILESDIR}/${PV}/001_fix_tmpdir.patch.gz +} + +src_compile() { + local myconf + use gnome && myconf="--enable-gnome" + + econf ${myconf} || die "econf ${myconf} failed" + emake || die "emake failed" +} + +src_install() { + make DESTDIR="${D%/}" install + + insinto /usr/share/doc/${PN} + doins "${S}/survey.txt" + + exeinto /usr/bin + doexe "${FILESDIR}/${PV}/distcc-config" + + insinto /etc/conf.d + newins "${FILESDIR}/${PV}/conf" distccd + + exeinto /etc/init.d + newexe "${FILESDIR}/${PV}/init" distccd + + # create and keep the symlink dir + dodir /usr/lib/distcc/bin + keepdir /usr/lib/distcc/bin + + # create the distccd pid directory + dodir /var/run/distccd + keepdir /var/run/distccd +} + +pkg_preinst() { + # non-/ installs don't require us to do anything here + [ "${ROOT}" != "/" ] && return 0 + + # stop daemon since script is being updated + [ -n "$(pidof distccd)" -a -x /etc/init.d/distccd ] && \ + /etc/init.d/distccd stop + + # moved user creation and permissions to distcc-config script + # because of ROOT install requirements +} + +pkg_postinst() { + # handle DISTCC_HOSTS upgrade better + local ENVFILE + ENVFILE="${ROOT}etc/env.d/02distcc" + [ ! -f "${ENVFILE}" ] && \ + ENVFILE="${ROOT}etc/env.d/04distcc" + if [ -f "${ENVFILE}" ] + then + # save hosts to new file + ROOT="${ROOT}" ${ROOT}usr/bin/distcc-config --set-hosts \ + $(egrep '^DISTCC_HOSTS' "${ENVFILE}" | sed 's,[^=]*=,,') + # now remove from the file + grep -v 'DISTCC_HOSTS' "${ENVFILE}" > "${ENVFILE}.new" + mv "${ENVFILE}.new" "${ENVFILE}" + fi + + if [ "${ROOT}" = "/" ]; then + einfo "Installing links to native compilers..." + /usr/bin/distcc-config --install-user + /usr/bin/distcc-config --install-links + /usr/bin/distcc-config --install-links "${CHOST}" + else + # distcc-config can *almost* handle ROOT installs itself + # but for now, but user must finsh things off + ewarn "*** Installation is not complete ***" + ewarn "You must run the following as root:" + ewarn " /usr/bin/distcc-config --install" + ewarn "after booting or chrooting into ${ROOT}" + fi + einfo "To use distcc with **non-Portage** C compiling, add" + einfo "/usr/lib/distcc/bin to your path before /usr/bin. If you're" + einfo "combining this with ccache, put the ccache path BEFORE distcc." + einfo "Portage 2.0.46-r11+ will take advantage of distcc if you put" + einfo "distcc into the FEATURES setting in make.conf and use" + einfo "distcc-config --set-hosts. Do NOT set CC=distcc or similar." + echo "" + einfo "To use the distccmon programs with Gentoo you should use this command:" + einfo " sudo -H -u portage distccmon-text OR sudo -H -u portage distccmon-gnome" + ewarn "See \"http://wiki.dev.gentoo.org/gentoo/moin.cgi/UsingDistcc\" for information." +} + +#pkg_prerm() { +# # ztw - not sure if this is the right place +# distcc-config --remove-links "${CHOST}" +# distcc-config --remove-links +#} diff --git a/sys-devel/distcc/files/2.7.1/001_fix_tmpdir.patch.gz b/sys-devel/distcc/files/2.7.1/001_fix_tmpdir.patch.gz Binary files differnew file mode 100644 index 000000000000..b166eb1e9c1c --- /dev/null +++ b/sys-devel/distcc/files/2.7.1/001_fix_tmpdir.patch.gz diff --git a/sys-devel/distcc/files/2.7.1/conf b/sys-devel/distcc/files/2.7.1/conf new file mode 100644 index 000000000000..b775d7d09940 --- /dev/null +++ b/sys-devel/distcc/files/2.7.1/conf @@ -0,0 +1,12 @@ +# Copyright 2003 Gentoo Technologies, Inc +# distccd configuration file + +# this is the distccd executable +DISTCCD_EXEC=/usr/bin/distccd + +# this is where distccd will store its pid file +DISTCCD_PIDFILE=/var/run/distccd/distccd.pid + +# set this option to run distccd with extra parameters +# DISTCCD_OPTS="--nice 20" + diff --git a/sys-devel/distcc/files/2.7.1/distcc-config b/sys-devel/distcc/files/2.7.1/distcc-config new file mode 100644 index 000000000000..9f3070bade61 --- /dev/null +++ b/sys-devel/distcc/files/2.7.1/distcc-config @@ -0,0 +1,322 @@ +#!/bin/bash +# +# distcc-config - helper script for distcc and distccd +# +# Copyright 2003 Superlucidity Services, LLC +# This program licensed under the GNU GPL version 2. +# +# This script developed by Zachary T Welch at Superlucidity Services, LLC +# based on ideas from irc discussion and the clear need for this support +# +# $Header: /var/cvsroot/gentoo-x86/sys-devel/distcc/files/2.7.1/distcc-config,v 1.1 2003/07/01 12:06:13 karltk Exp $ + + +[ -z "${ROOT}" ] && ROOT=/ + +# distcc-config manges the DISTCC_{HOSTS,LOG,VERBOSE} settings here +# moved to accomodate 02ccache and leave 0[14]* free +DCCC_ENV_FILE="${ROOT}etc/env.d/02distcc" +DCCC_OLD_ENV="${ROOT}etc/env.d/04distcc" + +is_super_user() { + [ "$(id -u)" = 0 ] +} +# this should be getopt'd someday (override with DCCC_QUIET) +DCCC_VERBOSE=1 + +source /sbin/functions.sh + +dccc_echo() { + [ -z "${DCCC_QUIET}" -a -n "${DCCC_VERBOSE}" ] && echo "$*" +} +dccc_exit() { + dccc_echo "$*" + exit 1 +} + +# create the appropriate configuration directory +is_super_user && \ + DCCC_HOSTS_FILE="${ROOT}etc/distcc/hosts" || \ + DCCC_HOSTS_FILE="${ROOT}${HOME#/}/.distcc/hosts" +mkdir -p $(dirname ${DCCC_HOSTS_FILE}) || \ + dccc_exit "unable to create configuration directory" + + +### +# the following functions manage the distcc symlinks +# they allow the user or other scripts (namely gcc-config) to +# automatically update distcc's links when upgrading toolchains +# +dccc_remove_link() { + local t="${ROOT}usr/lib/distcc/bin/${1}" + if [ -L ${t} ]; then + dccc_echo "Removing ${t}..." + rm -f "${t}" + fi +} +dccc_install_link() { + # Search the PATH for the specified compiler + # then create shadow link in ${ROOT}usr/lib/distcc/bin to distcc + # note: this `type' doesn't do the right thing if ROOT != / + if [ -n "$(type -p ${1})" ]; then + # first be sure any old link is removed + DCCC_QUIET=1 dccc_remove_link "${1}" + + # then create the new link + local t="${ROOT}usr/lib/distcc/bin/${1}" + dccc_echo "Creating distcc shadow link: ${t}..." + ln -s /usr/bin/distcc "${t}" + fi +} +dccc_links() { + local a + for a in gcc cc c++ g++ ; do + [ -n "${2}" ] && a="${2}-${a}" + eval "dccc_${1}_link" "${a}" + done +} + +dccc_install_user() { + # update or create, depending on whether user already exists + einfo "Updating or creating distcc user..." + local USERFIX + id distcc >/dev/null 2>&1 && USERFIX=usermod || USERFIX=useradd + USERFIX="/usr/sbin/${USERFIX}" + if [ -x "${USERFIX}" ] + then + if ! ${USERFIX} -g daemon -s /bin/false -d /dev/null \ + -c "distccd" distcc + then + dccc_exit "unable to create or modify user" + fi + elif [ "${USERFIX}" = "/usr/sbin/useradd" ] + then + ewarn "${USERFIX} not found: You need to add the distcc user" + ewarn "to /etc/passwd by hand. Add the following line:\n" + ewarn " distcc:x:240:2:distccd:/dev/null:/bin/false\n" + ewarn "and then run 'distcc-config --install' again root." + dccc_exit "Unable to create distcc user!" + fi + + for d in ${ROOT}usr/lib/distcc/bin ${ROOT}var/run/distccd ; do + einfo "Configuring $d..." + chown distcc:daemon $d && chmod 0755 $d || \ + dccc_exit "Unable to configure ${d}!" + done +} + +dccc_guess_chost() { + echo "$(grep CHOST /etc/make.conf | \ + grep -v '^#' | sed 's,^.*=\"\(.*\)\",\1,')" + +} + +###### +# routines for manipulating ${DCCC_ENV_FILE} + +dccc_install_env() { + [ -f ${DCCC_OLD_ENV} ] && mv ${DCCC_OLD_ENV} ${DCCC_ENV_FILE} + [ -f ${DCCC_ENV_FILE} ] && return + einfo "Creating ${DCCC_ENV_FILE}..." + cat <<_EOF_ > ${DCCC_ENV_FILE} || \ + dccc_exit "Unable to create ${DCCC_ENV_FILE}..." +# This file is managed by distcc-config; use it to change these settings. +DISTCC_HOSTS="localhost" +# DISTCC_VERBOSE is not set +# DISTCC_LOG is not set +# DCCC_PATH is not set +_EOF_ +} + +dccc_show_env() { + grep -v '^#' ${DCCC_ENV_FILE} | sed -e 's,^,export ,' +} + +dccc_test_env() { + dccc_show_env | grep "$1" | tail -1 | sed -e "s,${1}=,," +} + +dccc_load_defaults() { + rm -f ${DCCC_ENV_FILE} + dccc_install_env +} + +dccc_set_env() { + local xxENV="${1}" + shift + dccc_install_env + mv -f ${DCCC_ENV_FILE} ${DCCC_ENV_FILE}.tmp + if [ -n "${*}" ]; then + einfo "Setting ${xxENV}=\"${*}\"" + else + einfo "Clearing ${xxENV}" + fi + # redirect the following block to create new file + { + egrep -v "${xxENV}[= ]" ${DCCC_ENV_FILE}.tmp + if [ -n "${*}" ]; then + echo "${xxENV}=\"${*}\"" + else + echo "# ${xxENV} is not set" + fi + } >> ${DCCC_ENV_FILE} + rm -f ${DCCC_ENV_FILE}.tmp +} +dccc_regen_env() { + env-update + if [ -z "${DCCC_NO_WARN}" ]; then + einfo "If you want to use these new settings in an existing shell," + einfo "you need to 'source /etc/profile' to get the changes." + fi +} + +dccc_get_env() { + if [ -f ${DCCC_ENV_FILE} ]; then + local xxENV="$(grep ${1} ${DCCC_ENV_FILE} | \ + grep -v '^#' | tail -1)" + echo ${xxENV#*=} | sed -e 's,^",,;s,"$,,' + elif [ -n "${2}" ]; then + echo "${2}" + fi +} + +dccc_set_hosts() { + echo "${*}" > $DCCC_HOSTS_FILE +} +dccc_get_hosts() { + cat $DCCC_HOSTS_FILE +} + +dccc_set_verbose() { + dccc_set_env DISTCC_VERBOSE ${1} + dccc_regen_env +} +dccc_get_verbose() { + dccc_get_env DISTCC_VERBOSE +} + +dccc_set_log() { + dccc_set_env DISTCC_LOG ${1} + dccc_regen_env +} +dccc_get_log() { + dccc_get_env DISTCC_LOG +} + +dccc_set_j() { + local j="$(echo ${1} | sed -e 's,[^0-9],,g')" + [ -z "${j}" ] && \ + dccc_exit "$0: invalid -j option (must be a number)" + dccc_set_env MAKEOPTS "-j${j}" + dccc_regen_env +} +dccc_get_j() { + dccc_get_env MAKEOPTS +} + +#### +# main install routine + +dccc_install() { + local xxCHOST + dccc_install_user + dccc_links install "" + for f in make.conf make.globals make.profile/make.defaults + do + xxCHOST="$(dccc_guess_chost /etc/${f})" + if [ -n "${xxCHOST}" ]; then + dccc_links install "${xxCHOST}" + break + fi + done + + dccc_install_env +} + + +### +# main routine + +# helper checks that user has privs +must_be_root() { + if ! is_super_user + then + [ -n "${1}" -a "${1}" = "${2}" ] && return + dccc_exit "$0 $1 must be run by root" + fi +} + + +# The --no-profile-warning option is meant to be used with +# the following helper function (add to ~/.bashrc) +# +# distcc-config() { +# command distcc-config --no-profile-warning "$@" && \ +# source /etc/profile +# } + +if [ "${1}" = "--no-profile-warning" ]; then + DCCC_NO_WARN=1 + shift +fi + +case "${1}" in + --get-* ) + eval "dccc_$(echo ${1} | sed -e 's/^--//;s/-/_/g')" + ;; + --set-* ) + must_be_root "--set-hosts" "${1}" + SET_FUNC="$(echo ${1} | sed -e 's/^--//;s/-/_/g')" + shift + [ "${#}" -eq 0 ] && dccc_exit "argument required" + eval "dccc_${SET_FUNC} ${*}" + ;; + --has-path ) + dccc_test_env DCCC_PATH + ;; + --add-path ) + must_be_root + dccc_set_env DCCC_PATH "/usr/lib/distcc/bin" + dccc_regen_env + if [ -z "${DCCC_NO_WARN}" ]; then + einfo "You must then set PATH=\"${DCCC_PATH}/\${PATH}\"" + fi + ;; + --no-path ) + must_be_root + dccc_set_env DCCC_PATH "" + dccc_regen_env + ;; + --show-env ) + dccc_show_env + ;; + --load-defaults ) + must_be_root + dccc_load_defaults + ;; + --install ) + must_be_root + dccc_install + ;; + --install-user ) + must_be_root + dccc_install_user + ;; + --install-links ) + must_be_root + dccc_links install "${2}" + ;; + --remove-links ) + must_be_root + dccc_links remove "${2}" + ;; + * ) + echo "usage: ${0} --set-hosts DISTCC_HOSTS | --get-hosts" + echo " ${0} --set-verbose { 0 | 1 } | --get-verbose" + echo " ${0} --set-log FILE | --get-log" + echo " ${0} --add-path | --no-path" +# echo " ${0} --install-links | --remove-links } [ CHOST ]" + exit 1 + ;; +esac + diff --git a/sys-devel/distcc/files/2.7.1/init b/sys-devel/distcc/files/2.7.1/init new file mode 100644 index 000000000000..c183d62648ab --- /dev/null +++ b/sys-devel/distcc/files/2.7.1/init @@ -0,0 +1,24 @@ +#!/sbin/runscript + +depend() { + need net +} + +start() { + rm -f ${DISTCCD_PIDFILE} + ebegin "Starting distccd" + PATH="$(gcc-config --get-bin-path):${PATH}" \ + /sbin/start-stop-daemon --start --quiet \ + --startas ${DISTCCD_EXEC} \ + -c distcc --pidfile ${DISTCCD_PIDFILE} \ + -- --pid-file ${DISTCCD_PIDFILE} ${DISTCCD_OPTS} + eend $? +} + +stop() { + ebegin "Stopping distccd" + start-stop-daemon --stop --quiet --pidfile "${DISTCCD_PIDFILE}" + rm -f "${DISTCCD_PIDFILE}" + eend $? +} + diff --git a/sys-devel/distcc/files/digest-distcc-2.7.1 b/sys-devel/distcc/files/digest-distcc-2.7.1 new file mode 100644 index 000000000000..808cda1c9a3c --- /dev/null +++ b/sys-devel/distcc/files/digest-distcc-2.7.1 @@ -0,0 +1 @@ +MD5 31c2547c9c5c042abd112d8ced5e3313 distcc-2.7.1.tar.bz2 234747 |