summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Huddleston <eradicator@gentoo.org>2005-02-02 06:41:45 +0000
committerJeremy Huddleston <eradicator@gentoo.org>2005-02-02 06:41:45 +0000
commitfa796cf144bacb440f89252d4b4a430f7e215b1c (patch)
tree12814e2bfdedf31e9c5c5b17e4a408b2c1b4bc0a /sys-devel
parentVersion bump to x86 glibc. This uses 2.3.4.20041102 with CFLAGS=-march="i686... (diff)
downloadgentoo-2-fa796cf144bacb440f89252d4b4a430f7e215b1c.tar.gz
gentoo-2-fa796cf144bacb440f89252d4b4a430f7e215b1c.tar.bz2
gentoo-2-fa796cf144bacb440f89252d4b4a430f7e215b1c.zip
Let command line arguments override those set by . See bug #78652.
(Portage version: 2.0.51-r15)
Diffstat (limited to 'sys-devel')
-rw-r--r--sys-devel/distcc/ChangeLog8
-rw-r--r--sys-devel/distcc/Manifest23
-rw-r--r--sys-devel/distcc/distcc-2.18.3-r3.ebuild160
-rw-r--r--sys-devel/distcc/files/digest-distcc-2.18.3-r31
-rw-r--r--sys-devel/distcc/files/distcc-gentoo-multilib-r1.patch146
5 files changed, 322 insertions, 16 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..101331be6f56 100644
--- a/sys-devel/distcc/Manifest
+++ b/sys-devel/distcc/Manifest
@@ -1,22 +1,15 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
MD5 7816d730510b428ee8ce6bf4d5d128ca ChangeLog 24681
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 aa2345469943d9fc0ce72f7b57b40865 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 dacaa8abd48be8da13ffca951eae6114 files/distcc-gentoo-multilib-r1.patch 4110
+MD5 fa3f7ab9f7829ba28b454f624b11da53 files/digest-distcc-2.18.3-r3 66
MD5 69a089566bd18a1bfba2da639964c19e files/2.17/conf 1317
MD5 1161999a5d25185f95a8c284bd7307d1 files/2.17/init 733
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.0 (GNU/Linux)
-
-iD8DBQFB7NXPArHZZzCEUG0RAul2AJwIQi48Rc/waTlNq+H8gVw0QJ6q3QCfa1U8
-rovzJo9j7muTxeD1GOxSh68=
-=9eB/
------END PGP SIGNATURE-----
+MD5 bb53a18e009ef62f4402a23f83bfda20 files/2.18/conf 1384
+MD5 739ebfc62fe125b76021cf7987a158f7 files/2.18/init 733
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;
+ }
+