diff options
author | Jeremy Huddleston <eradicator@gentoo.org> | 2005-02-02 06:41:45 +0000 |
---|---|---|
committer | Jeremy Huddleston <eradicator@gentoo.org> | 2005-02-02 06:41:45 +0000 |
commit | 189f9cd5ca30195eb7d6d75d5849a103b2f4d839 (patch) | |
tree | 52afe31fc69140c3457686b9c0ad55faf0086642 /sys-devel/distcc | |
parent | Version bump to x86 glibc. This uses 2.3.4.20041102 with CFLAGS=-march="i686... (diff) | |
download | historical-189f9cd5ca30195eb7d6d75d5849a103b2f4d839.tar.gz historical-189f9cd5ca30195eb7d6d75d5849a103b2f4d839.tar.bz2 historical-189f9cd5ca30195eb7d6d75d5849a103b2f4d839.zip |
Let command line arguments override those set by . See bug #78652.
Package-Manager: portage-2.0.51-r15
Diffstat (limited to 'sys-devel/distcc')
-rw-r--r-- | sys-devel/distcc/ChangeLog | 8 | ||||
-rw-r--r-- | sys-devel/distcc/Manifest | 21 | ||||
-rw-r--r-- | sys-devel/distcc/distcc-2.18.3-r3.ebuild | 160 | ||||
-rw-r--r-- | sys-devel/distcc/files/digest-distcc-2.18.3-r3 | 1 | ||||
-rw-r--r-- | sys-devel/distcc/files/distcc-gentoo-multilib-r1.patch | 146 |
5 files changed, 326 insertions, 10 deletions
diff --git a/sys-devel/distcc/ChangeLog b/sys-devel/distcc/ChangeLog index 4be1527b3ae9..a7eacb1b671d 100644 --- a/sys-devel/distcc/ChangeLog +++ b/sys-devel/distcc/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for sys-devel/distcc # Copyright 2000-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/distcc/ChangeLog,v 1.135 2005/01/18 09:22:01 eradicator Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-devel/distcc/ChangeLog,v 1.136 2005/02/02 06:41:45 eradicator Exp $ + +*distcc-2.18.3-r3 (30 Jan 2005) + + 30 Jan 2005; Jeremy Huddleston <eradicator@gentoo.org> + +files/distcc-gentoo-multilib-r1.patch, +distcc-2.18.3-r3.ebuild: + Let command line arguments override those set by ${ABI}. See bug #78652. *distcc-2.18.3-r2 (18 Jan 2005) diff --git a/sys-devel/distcc/Manifest b/sys-devel/distcc/Manifest index 287b9bf8024e..665206f6e4f4 100644 --- a/sys-devel/distcc/Manifest +++ b/sys-devel/distcc/Manifest @@ -1,22 +1,25 @@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 -MD5 7816d730510b428ee8ce6bf4d5d128ca ChangeLog 24681 +MD5 8cbfe6845aa6eacead07d129bf01d44f ChangeLog 24916 MD5 226fbaefb55345566d2a38d00f6dc160 distcc-2.16-r2.ebuild 4844 -MD5 c04441917ccb5e5f9790642545c1f469 metadata.xml 375 MD5 2f7d9eaca2df59be318eb50fc2f2e2f5 distcc-2.18.3-r2.ebuild 4791 +MD5 c04441917ccb5e5f9790642545c1f469 metadata.xml 375 +MD5 fd08841e0a314575e7b1fa21ac5363ee distcc-2.18.3-r3.ebuild 4795 MD5 c462167d99c154e9f8b9f94022ed2a71 files/digest-distcc-2.16-r2 64 -MD5 687a622f11f457581b267ce5fb3c2721 files/distcc-gentoo-multilib.patch 3784 -MD5 fec77b3be8d8bd8f2d6e5a708cb35717 files/distcc-config 4874 MD5 fa3f7ab9f7829ba28b454f624b11da53 files/digest-distcc-2.18.3-r2 66 -MD5 bb53a18e009ef62f4402a23f83bfda20 files/2.18/conf 1384 -MD5 739ebfc62fe125b76021cf7987a158f7 files/2.18/init 733 +MD5 fec77b3be8d8bd8f2d6e5a708cb35717 files/distcc-config 4874 +MD5 687a622f11f457581b267ce5fb3c2721 files/distcc-gentoo-multilib.patch 3784 +MD5 426c3b233a54fd1d6af3d56ab30a522d files/distcc-gentoo-multilib-r1.patch 4203 +MD5 fa3f7ab9f7829ba28b454f624b11da53 files/digest-distcc-2.18.3-r3 66 MD5 69a089566bd18a1bfba2da639964c19e files/2.17/conf 1317 MD5 1161999a5d25185f95a8c284bd7307d1 files/2.17/init 733 +MD5 bb53a18e009ef62f4402a23f83bfda20 files/2.18/conf 1384 +MD5 739ebfc62fe125b76021cf7987a158f7 files/2.18/init 733 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) -iD8DBQFB7NXPArHZZzCEUG0RAul2AJwIQi48Rc/waTlNq+H8gVw0QJ6q3QCfa1U8 -rovzJo9j7muTxeD1GOxSh68= -=9eB/ +iD8DBQFCAHY0ArHZZzCEUG0RAsJ9AJ9jsb2DTedaewu7PVZtoOqAOeUBTQCeMUAT +WexmSgJsjhkiVeWpkkZrM7g= +=V4k3 -----END PGP SIGNATURE----- diff --git a/sys-devel/distcc/distcc-2.18.3-r3.ebuild b/sys-devel/distcc/distcc-2.18.3-r3.ebuild new file mode 100644 index 000000000000..d9f0c384e6ac --- /dev/null +++ b/sys-devel/distcc/distcc-2.18.3-r3.ebuild @@ -0,0 +1,160 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-devel/distcc/distcc-2.18.3-r3.ebuild,v 1.1 2005/02/02 06:41:45 eradicator Exp $ + +# If you change this in any way please email lisa@gentoo.org and make an +# entry in the ChangeLog (this means you spanky :P). (2004-04-11) Lisa Seelye + +inherit eutils gcc flag-o-matic gnuconfig + +PATCHLEVEL="2.18" + +DESCRIPTION="a program to distribute compilation of C code across several machines on a network" +HOMEPAGE="http://distcc.samba.org/" +SRC_URI="http://distcc.samba.org/ftp/distcc/distcc-${PV}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~x86 ~ppc ~sparc ~mips ~alpha ~arm ~hppa ~ia64 ~amd64 ~s390" + +IUSE="gnome gtk selinux ipv6" + +DEPEND=">=sys-apps/portage-2.0.49-r6 + >=sys-devel/gcc-config-1.3.1 + sys-apps/shadow + gnome? ( + dev-util/pkgconfig + ) + gtk? ( + dev-util/pkgconfig + )" +RDEPEND=" + gnome? ( + >=x11-libs/gtk+-2.0.0 + >=gnome-base/libgnome-2.0.0 + >=gnome-base/libgnomeui-2.0.0.0 + >=gnome-base/libglade-2.0.0 + x11-libs/pango + >=gnome-base/gconf-2.0.0 + ) + gtk? ( + >=x11-libs/gtk+-2.0.0 + x11-libs/pango + ) + selinux? ( sec-policy/selinux-distcc )" + +src_unpack() { + unpack ${A} + cd ${S} + + # lisa's note: included for testing. if you wish to use this + # please put distcc in your package.unmask file. + # See bug #75420 for more multilib stuff + epatch ${FILESDIR}/distcc-gentoo-multilib-r1.patch + einfo "Please report to bug #75420 success or failure of this patch." + gnuconfig_update +} + +src_compile() { + local myconf="--with-included-popt " + #Here we use the built in parse-options package. saves a dependancy + + #not taking any chances here, guessing which takes precedence in the + #configure script, so we'll just make the distinction here: + #gnome takes precedence over gtk if both are specified (gnome pulls + #in gtk anyways...) + use gtk && ! use gnome && myconf="${myconf} --with-gtk" + use gtk && use gnome && myconf="${myconf} --with-gnome" + + [ `gcc-major-version` -eq 2 ] && filter-lfs-flags + + if use ipv6; then + ewarn "To use IPV6 you must have IPV6 compiled into your kernel" + ewarn "either via a module or compiled code" + ewarn "You can recompile without ipv6 with: USE='-ipv6' emerge distcc" + myconf=" ${myconf} --enable-rfc2553 " + epause 5 + fi + 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}/distcc-config" + + insinto /etc/conf.d + newins "${FILESDIR}/${PATCHLEVEL}/conf" distccd + + exeinto /etc/init.d + newexe "${FILESDIR}/${PATCHLEVEL}/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 +} + +pkg_postinst() { + enewuser distcc 240 + # 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}" + HOSTS=$(egrep '^DISTCC_HOSTS' "${ENVFILE}" | sed 's,[^=]*=,,') + [ ${HOSTS} ] && ${ROOT}usr/bin/distcc-config --set-hosts ${HOSTS} + # 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 + 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 "Setting permissions on ${ROOT}var/run/distccd" + chown -R distcc:daemon ${ROOT}var/run/distccd + echo "" + + einfo "Tips on using distcc with Gentoo can be found at" + einfo "http://www.gentoo.org/doc/en/distcc.xml" + echo "" + einfo "To use the distccmon programs with Gentoo you should use this command:" + einfo " DISTCC_DIR=/var/tmp/portage/.distcc distccmon-text N" + use gnome || use gtk && einfo "Or: DISTCC_DIR=/var/tmp/portage/.distcc distccmon-gnome" + + ewarn "***SECURITY NOTICE***" + ewarn "If you are upgrading distcc please make sure to run etc-update to" + ewarn "update your /etc/conf.d/distccd and /etc/init.d/distccd files with" + ewarn "added security precautions (the --listen and --allow directives)" + ebeep 5 +} diff --git a/sys-devel/distcc/files/digest-distcc-2.18.3-r3 b/sys-devel/distcc/files/digest-distcc-2.18.3-r3 new file mode 100644 index 000000000000..7f1ca5e12714 --- /dev/null +++ b/sys-devel/distcc/files/digest-distcc-2.18.3-r3 @@ -0,0 +1 @@ +MD5 0d6b80a1efc3a3d816c4f4175f63eaa2 distcc-2.18.3.tar.bz2 341601 diff --git a/sys-devel/distcc/files/distcc-gentoo-multilib-r1.patch b/sys-devel/distcc/files/distcc-gentoo-multilib-r1.patch new file mode 100644 index 000000000000..9ded9e0e43c8 --- /dev/null +++ b/sys-devel/distcc/files/distcc-gentoo-multilib-r1.patch @@ -0,0 +1,146 @@ +diff -Naurp distcc-2.18.3.orig/src/distcc.c distcc-2.18.3/src/distcc.c +--- distcc-2.18.3.orig/src/distcc.c 2004-10-01 17:47:07.000000000 -0700 ++++ distcc-2.18.3/src/distcc.c 2005-01-30 22:15:43.883870942 -0800 +@@ -135,7 +135,106 @@ static void dcc_client_catch_signals(voi + signal(SIGHUP, &dcc_client_signalled); + } + ++#define MAXNEWFLAGS 32 ++#define MAXFLAGLEN 127 + ++static char **getNewArgv(char **argv, const char *newflagsStr) { ++ char **newargv; ++ char newflags[MAXNEWFLAGS][MAXFLAGLEN + 1]; ++ unsigned newflagsCount = 0; ++ unsigned argc; ++ unsigned i; ++ char **p; ++ ++ unsigned s, f; /* start/finish of each flag. f points to ++ * the char AFTER the end (ie the space/\0 ++ */ ++ ++ /* Tokenize the flag list */ ++ for(s=0; s < strlen(newflagsStr); s=f+1) { ++ /* Put s at the start of the next flag */ ++ while(newflagsStr[s] == ' ' || ++ newflagsStr[s] == '\t') ++ s++; ++ if(s == strlen(newflagsStr)) ++ break; ++ ++ f = s + 1; ++ while(newflagsStr[f] != ' ' && ++ newflagsStr[f] != '\t' && ++ newflagsStr[f] != '\0') ++ f++; ++ ++ /* Detect overrun */ ++ if(MAXFLAGLEN < f - s || MAXNEWFLAGS == newflagsCount) ++ return NULL; ++ ++ strncpy(newflags[newflagsCount], newflagsStr + s, f - s); ++ newflags[newflagsCount][f - s]='\0'; ++ newflagsCount++; ++ } ++ ++ /* Calculate original argc and see if it contains -m{abi,32,64} */ ++ for(argc=0, p=argv; *p; p++, argc++) { ++ if(newflagsCount && (strncmp(*p, "-m32", 4) == 0 || ++ strncmp(*p, "-m64", 4) == 0 || ++ strncmp(*p, "-mabi", 5) == 0)) { ++ /* Our command line sets the ABI, warn the user about this and ignore ++ newArgs by setting newflagsCount to 0. ++ */ ++ newflagsCount = 0; ++ fprintf(stderr, "%s: %s detected on the command line overrides implicit %s added by the wrapper.\n", argv[0], *p, newflagsStr); ++ } ++ } ++ ++ /* Allocate our array */ ++ newargv = (char **)malloc(sizeof(char *) * (argc + newflagsCount + 1)); ++ ++ /* Make room for the original, new ones, and the NULL terminator */ ++ if(!newargv) ++ return NULL; ++ ++ /* Build argv */ ++ newargv[0] = argv[0]; ++ ++ /* The newFlags come first since we want the environment to override them. */ ++ for(i=1; i - 1 < newflagsCount; i++) { ++ newargv[i] = newflags[i - 1]; ++ } ++ ++ /* We just use the existing argv[i] as the start. */ ++ for(; i - newflagsCount < argc; i++) { ++ newargv[i] = argv[i - newflagsCount]; ++ } ++ ++ /* And now cap it off... */ ++ newargv[i] = NULL; ++ ++ return newargv; ++} ++ ++static char **getNewArgvFromEnv(char **argv) { ++ char **newargv = argv; ++ ++ if(getenv("ABI")) { ++ char *envar = (char *)malloc(sizeof(char) * (strlen("CFLAGS_") + strlen(getenv("ABI")) + 1 )); ++ ++ if(!envar) ++ return NULL; ++ ++ /* We use CFLAGS_${ABI} for gcc, g++, g77, etc as they are ++ * the same no matter which compiler we are using. ++ */ ++ sprintf(envar, "CFLAGS_%s", getenv("ABI")); ++ ++ if(getenv(envar)) ++ newargv = getNewArgv(argv, getenv(envar)); ++ ++ free(envar); ++ } ++ ++ return newargv; ++} + + /** + * distcc client entry point. +@@ -150,6 +249,7 @@ int main(int argc, char **argv) + int status, sg_level, tweaked_path = 0; + char **compiler_args; + char *compiler_name; ++ char **newargv; + int ret; + + dcc_client_catch_signals(); +@@ -183,7 +283,12 @@ int main(int argc, char **argv) + goto out; + } + +- dcc_find_compiler(argv, &compiler_args); ++ if(!(newargv = getNewArgvFromEnv(argv))) { ++ ret = EXIT_OUT_OF_MEMORY; ++ goto out; ++ } ++ dcc_find_compiler(newargv, &compiler_args); ++ free(newargv); + /* compiler_args is now respectively either "cc -c hello.c" or + * "gcc -c hello.c" */ + +@@ -200,7 +305,12 @@ int main(int argc, char **argv) + &tweaked_path)) != 0) + goto out; + +- dcc_copy_argv(argv, &compiler_args, 0); ++ if(!(newargv = getNewArgvFromEnv(argv))) { ++ ret = EXIT_OUT_OF_MEMORY; ++ goto out; ++ } ++ dcc_copy_argv(newargv, &compiler_args, 0); ++ free(newargv); + compiler_args[0] = compiler_name; + } + |