diff options
Diffstat (limited to 'yocto-poky/meta/recipes-devtools/distcc')
7 files changed, 290 insertions, 0 deletions
diff --git a/yocto-poky/meta/recipes-devtools/distcc/distcc_3.1.bb b/yocto-poky/meta/recipes-devtools/distcc/distcc_3.1.bb new file mode 100644 index 000000000..f8879c87c --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/distcc/distcc_3.1.bb @@ -0,0 +1,74 @@ +SUMMARY = "A parallel build system" +DESCRIPTION = "distcc is a parallel build system that distributes \ +compilation of C/C++/ObjC code across machines on a network." +SECTION = "devel" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f" + +DEPENDS = "avahi" + +GTKCONFIG = "gtk" +GTKCONFIG_libc-uclibc = "" + +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${GTKCONFIG}', '', d)} popt" +PACKAGECONFIG[gtk] = "--with-gtk,--without-gtk --without-gnome,gtk+" +# use system popt by default +PACKAGECONFIG[popt] = "--without-included-popt,--with-included-popt,popt" + +RRECOMMENDS_${PN} = "avahi-daemon" + +SRC_URI = "git://github.com/distcc/distcc.git \ + file://separatebuilddir.patch \ + file://0001-zeroconf-Include-fcntl.h.patch \ + file://default \ + file://distccmon-gnome.desktop \ + file://distcc \ + file://distcc.service" +SRCREV = "9a172d3d20042754a30c0cd9a5d63fd1a8120c31" +S = "${WORKDIR}/git" + +inherit autotools pkgconfig update-rc.d useradd systemd + +EXTRA_OECONF += "--disable-Werror PYTHON=/dev/null" + +USERADD_PACKAGES = "${PN}" +USERADD_PARAM_${PN} = "--system \ + --home /dev/null \ + --no-create-home \ + --gid nogroup \ + distcc" + +INITSCRIPT_NAME = "distcc" + +SYSTEMD_PACKAGES = "${PN}" +SYSTEMD_SERVICE_${PN} = "distcc.service" + +do_install_append() { + install -d ${D}${sysconfdir}/init.d/ + install -d ${D}${sysconfdir}/default + install -m 0755 ${WORKDIR}/distcc ${D}${sysconfdir}/init.d/ + install -m 0755 ${WORKDIR}/default ${D}${sysconfdir}/default/distcc + install -d ${D}${systemd_unitdir}/system/ + install -m 0644 ${WORKDIR}/distcc.service ${D}${systemd_unitdir}/system + sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_unitdir}/system/distcc.service + ${DESKTOPINSTALL} +} +DESKTOPINSTALL = "" +DESKTOPINSTALL_libc-glibc () { + install -d ${D}${datadir}/distcc/ + install -m 0644 ${WORKDIR}/distccmon-gnome.desktop ${D}${datadir}/distcc/ +} +PACKAGES += "distcc-distmon-gnome" + +FILES_${PN} = " ${sysconfdir} \ + ${bindir}/distcc \ + ${bindir}/lsdistcc \ + ${bindir}/distccd \ + ${bindir}/distccmon-text \ + ${systemd_unitdir}/system/distcc.service" +FILES_distcc-distmon-gnome = " ${bindir}/distccmon-gnome \ + ${datadir}/distcc" + +pkg_postrm_${PN} () { + deluser distcc || true +} diff --git a/yocto-poky/meta/recipes-devtools/distcc/files/0001-zeroconf-Include-fcntl.h.patch b/yocto-poky/meta/recipes-devtools/distcc/files/0001-zeroconf-Include-fcntl.h.patch new file mode 100644 index 000000000..b17ec9c95 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/distcc/files/0001-zeroconf-Include-fcntl.h.patch @@ -0,0 +1,29 @@ +From 8331fc4759d809512f404e7a27f817ad6d616450 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Mon, 13 Apr 2015 18:00:33 -0700 +Subject: [PATCH] zeroconf: Include fcntl.h + +We need it for getting deinitions for O_* e.g. O_CREAT + +Upstream-Status: Pending + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/zeroconf.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/zeroconf.c b/src/zeroconf.c +index 414ddc4..31bd33f 100644 +--- a/src/zeroconf.c ++++ b/src/zeroconf.c +@@ -33,6 +33,7 @@ + #include <unistd.h> + #include <stdlib.h> + #include <limits.h> ++#include <fcntl.h> + + #include <avahi-common/domain.h> + #include <avahi-common/error.h> +-- +2.1.4 + diff --git a/yocto-poky/meta/recipes-devtools/distcc/files/default b/yocto-poky/meta/recipes-devtools/distcc/files/default new file mode 100644 index 000000000..63c4159b9 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/distcc/files/default @@ -0,0 +1,24 @@ +# Defaults for distcc initscript +# sourced by /etc/init.d/distcc + +# +# should distcc be started on boot? +# +# STARTDISTCC="true" + +STARTDISTCC="true" + +# +# Which networks/hosts should be allowed to connect to the daemon? +# You can list multiple hosts/networks separated by spaces. +# Networks have to be in CIDR notation, f.e. 192.168.1.0/24 +# Hosts are represented by a single IP Adress +# +# ALLOWEDNETS="127.0.0.1" + +ALLOWEDNETS="192.168.7.0/24" + +# +# OPTIONS is used for the systemd service file +# +OPTIONS="--allow 192.168.7.0/24" diff --git a/yocto-poky/meta/recipes-devtools/distcc/files/distcc b/yocto-poky/meta/recipes-devtools/distcc/files/distcc new file mode 100755 index 000000000..e36f0fa69 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/distcc/files/distcc @@ -0,0 +1,119 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: distcc +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 1 +# Short-Description: simple distributed compiler client and server +### END INIT INFO +# +# distccd Debian init.d script contributed by Jason Thomas. (Debian #161136) +# +# skeleton example file to build /etc/init.d/ scripts. +# This file should be used to construct scripts for /etc/init.d. +# +# Written by Miquel van Smoorenburg <miquels@cistron.nl>. +# Modified for Debian GNU/Linux +# by Ian Murdock <imurdock@gnu.ai.mit.edu>. +# +# Version: @(#)skeleton 1.9.1 08-Apr-2002 miquels@cistron.nl +# + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/bin/distccd +NAME=distcc +DESC="Distributed Compiler Daemon" +DAEMON_ARGS="--pid-file=/var/run/$NAME.pid --daemon" +# please change those variables by overriding them in /etc/defaults/distcc +ALLOWEDNETS="127.0.0.1" + +# Reads config file (will override defaults above) +[ -r /etc/default/distcc ] && . /etc/default/distcc + +test -x $DAEMON || exit 0 + +set -e + +# Source function library. +. /etc/init.d/functions + +# construct access list +ALLOW="" +for net in $ALLOWEDNETS +do + ALLOW="$ALLOW --allow $net" +done + +should_start() { + if [ "$STARTDISTCC" != "true" ] && [ "$STARTDISTCC" != "YES" ]; then + echo "STARTDISTCC is set to false in /etc/default/distcc" + echo "$DAEMON not starting" + exit 0 + fi + # we need permission to write to the pid file + touch /var/run/$NAME.pid + chown distcc /var/run/$NAME.pid +} + +case "$1" in + start) + should_start + echo -n "Starting $DESC: $NAME" + start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ + --exec $DAEMON -- $DAEMON_ARGS $ALLOW || + { + code=$? + echo "$0: start failed with error code $code" >&2 + exit $code + } + echo "." + ;; + stop) + echo -n "Stopping $DESC: $NAME" + start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ + --exec $DAEMON || + { + code=$? + echo "$0: stop failed with error code $code" >&2 + exit $code + } + rm -f /var/run/$NAME.pid >/dev/null 2>&1 + echo "." + ;; + restart|force-reload) + # + # If the "reload" option is implemented, move the "force-reload" + # option to the "reload" entry above. If not, "force-reload" is + # just the same as "restart". + # + echo -n "Restarting $DESC: $NAME" + start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ + --exec $DAEMON + sleep 1 + should_start + start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ + --exec $DAEMON -- $DAEMON_ARGS $ALLOW || + { + code=$? + rm -f /var/run/$NAME.pid >/dev/null 2>&1 + echo "$0: restart failed with error code $code" >&2 + exit $code + } + echo "." + ;; + + status) + status $DAEMON + exit $? + ;; + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart|force-reload|status}" >&2 + exit 1 + ;; +esac + +exit 0 + + diff --git a/yocto-poky/meta/recipes-devtools/distcc/files/distcc.service b/yocto-poky/meta/recipes-devtools/distcc/files/distcc.service new file mode 100644 index 000000000..0253ddf52 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/distcc/files/distcc.service @@ -0,0 +1,11 @@ +[Unit] +Description=Distccd A Distributed Compilation Server +After=network.target + +[Service] +User=distcc +EnvironmentFile=-/etc/default/distcc +ExecStart=@BINDIR@/distccd --verbose --no-detach --daemon $OPTIONS + +[Install] +WantedBy=multi-user.target diff --git a/yocto-poky/meta/recipes-devtools/distcc/files/distccmon-gnome.desktop b/yocto-poky/meta/recipes-devtools/distcc/files/distccmon-gnome.desktop new file mode 100644 index 000000000..7b5d85ce4 --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/distcc/files/distccmon-gnome.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=0.9.4 +Exec=distccmon-gnome +Name=distcc monitor +GenericName=Distributed Compile Monitor +Comment=Graphical view of distributed compile tasks +Icon=distccmon-gnome-icon +TryExec=distccmon-gnome +Terminal=false +Type=Application +Categories=GNOME;Development; +StartupNotify=true diff --git a/yocto-poky/meta/recipes-devtools/distcc/files/separatebuilddir.patch b/yocto-poky/meta/recipes-devtools/distcc/files/separatebuilddir.patch new file mode 100644 index 000000000..b9e3e42dd --- /dev/null +++ b/yocto-poky/meta/recipes-devtools/distcc/files/separatebuilddir.patch @@ -0,0 +1,21 @@ +When building with a separate build directory, make install fails, +unable to find the gnome_data files. This patch corrects the +patch and ensures the build works in this case. + +RP 2013/3/8 + +Upstream-Status: Pending + +Index: distcc-3.1/Makefile.in +=================================================================== +--- distcc-3.1.orig/Makefile.in 2008-12-02 21:50:31.000000000 +0000 ++++ distcc-3.1/Makefile.in 2013-03-08 10:49:24.224400937 +0000 +@@ -1088,7 +1088,7 @@ + install-gnome-data: $(gnome_data) + $(mkinstalldirs) "$(DESTDIR)$(pkgdatadir)" + for p in $(gnome_data); do \ +- $(INSTALL_DATA) "$$p" "$(DESTDIR)$(pkgdatadir)" || exit 1; \ ++ $(INSTALL_DATA) "$(srcdir)/$$p" "$(DESTDIR)$(pkgdatadir)" || exit 1; \ + done + + install-conf: $(conf_files) $(default_files) |