distributed builds for C, C++ and Objective C

Related tags

Compilers distcc
Overview

distcc -- a free distributed C/C++ compiler system

Build Status

by Martin Pool

Current Documents: https://distcc.github.io/ Formally http://distcc.org/

"pump" functionality added by Fergus Henderson, Nils Klarlund, Manos Renieris, and Craig Silverstein (Google Inc.)

distcc is a program to distribute compilation of C or C++ code across several machines on a network. distcc should always generate the same results as a local compile, is simple to install and use, and is often two or more times faster than a local compile.

Unlike other distributed build systems, distcc does not require all machines to share a filesystem, have synchronized clocks, or to have the same libraries or header files installed. Machines can be running different operating systems, as long as they have compatible binary formats or cross-compilers.

By default, distcc sends the complete preprocessed source code across the network for each job, so all it requires of the volunteer machines is that they be running the distccd daemon, and that they have an appropriate compiler installed.

The distcc "pump" functionality, added in distcc 3.0, improves on distcc by distributing not only compilation but also preprocessing to distcc servers. This requires that the server and client have the same system headers (the client takes responsibility for transmitting application-specific headers). Given that, distcc in pump mode yields the same results that distcc would in non-pump mode, but faster, since the preprocessor no longer runs locally. For more details on the pump functionality, see README.pump.

distcc is not itself a compiler, but rather a front-end to the GNU C/C++ compiler (gcc), or another compiler of your choice. All the regular gcc options and features work as normal.

distcc is designed to be used with GNU make's parallel-build feature (-j). Shipping files across the network takes time, but few cycles on the client machine. Any files that can be built remotely are essentially "for free" in terms of client CPU. This is even more true in "pump" mode, where the client does not even have to take time to preprocess the source files. distcc has been successfully used in environments with hundreds of distcc servers, supporting dozens of simultaneous compiles.

distcc is now reasonably stable and can successfully compile the Linux kernel, rsync, KDE, GNOME (via GARNOME), Samba and Ethereal. distcc is nearly linearly scalable for small numbers of machines: for a typical case, three machines are 2.6 times faster than one.

Licence

distcc is distributed under the GNU General Public Licence v2.

Resources

Issues
  • distcc-mon-gnome displays multiple rows for same host/slot

    distcc-mon-gnome displays multiple rows for same host/slot

    Answering the following questions is a big help:
    
    1. What version of distcc are you using (e.g. "2.7.1")?  You can run
    "distcc --version" to see.  If you got distcc from a distribution package
    rather than building from source, please say which one.
    
    distcc 3.0 i686-pc-linux-gnu
      (protocols 1, 2 and 3) (default port 3632)
      built Dec 18 2008 21:34:13
    
    Built from source using Gentoo package sys-devel/distcc-3.0-r4.
    
    2. What platform are you running on (e.g. "Red Hat 8.0", "HP-UX 11.11")? 
    What compilare are you using ("gcc 3.3")?  Run "uname -a" and "cc
    --version" to see.
    
    Linux tidal 2.6.23-gentoo-r9 #2 SMP Tue Aug 26 20:20:08 PDT 2008 i686
    Intel(R) Core(TM)2 Duo CPU E4600 @ 2.40GHz GenuineIntel GNU/Linux
    
    gcc (GCC) 4.1.2 (Gentoo 4.1.2 p1.1)
    
    3. What were you trying to do (e.g. "install distcc", "build Mozilla")?
    
    Compile almost anything with distcc.
    
    4. What went wrong?  Did you get an error message, did it hang, did it
    build a program that didn't work, did it not distribute compilation to
    machines that ought to get it?
    
    distcc-mon-gnome displays multiple rows for the same host/slot combination.
    This appears to occur only for remote hosts. See attached screenshot.
    
    5. If you have an example of a compiler invocation that failed, quote it,
    in full e.g.:
       distcc gcc -DHAVE_CONFIG_H -D_GNU_SOURCE -I./src \
    "-DSYSCONFDIR=\"/etc/\"" -I./lzo -g -O2 -W -Wall -W \ -Wimplicit -Wshadow
    -Wpointer-arith -Wcast-align \ -Wwrite-strings -Waggregate-return
    -Wstrict-prototypes \ -Wmissing-prototypes -Wnested-externs -o src/clirpc.o
    \ -c src/clirpc.c
    
    Compiling works fine.
    
    6. What error logging do you get?  Turn on client and server error logging.
     On the client, set these environment variables, and try to reproduce the
    problem: =export DISTCC_VERBOSE=1 DISTCC_LOG=/tmp/distcc.log=.  Start the
    server with the --verbose option. If the problem is intermittent, leave
    logging enabled and then pull out the lines from the log file when the
    problem recurs.
    
    No error messages.
    
    7. If you got an error message on stderr, quote that error exactly. Find
    the lines in the log files pertaining to the compile, and include all of
    them in your report, by looking at the process ID in square brackets. If
    you can't work that out, quote the last few hundred lines leading up to the
    failure. 
    
    No error messages.
    
    

    Original issue reported on code.google.com by [email protected] on 25 Jan 2009 at 7:37

    Attachments:

    auto-migrated 
    opened by GoogleCodeExporter 27
  • Move the home page to GitHub Pages

    Move the home page to GitHub Pages

    https://pages.github.com/

    i.e. https://distcc.github.io

    The current workaround* looks silly, and the old domains seems to be pointing to github project for now... (http://distcc.samba.org, distcc.org). Would be nice to gather all the old pages under a real web site again

    https://cdn.rawgit.com/distcc/distcc/9a09372bd3f420cdd7021e52eda14fa536a3c10e/doc/web/index.html

    opened by afbjorklund 20
  • Building Kernel >=5.2.0 fails to distribute out but 5.1.x builds fine

    Building Kernel >=5.2.0 fails to distribute out but 5.1.x builds fine

    Has anyone else noticed that compiling linux kernel 5.1.16 works fine with distcc but >=5.2.0 fails to distribute jobs? I'm thinking there is something in the upstream code that isn't honoring the old definitions?

    Example trying to compile 5.2.0:

    ...
    distcc[22629] (dcc_readx) ERROR: unexpected eof on fd5
    distcc[22629] (dcc_r_token_int) ERROR: read failed while waiting for token "DONE"
    distcc[22629] (dcc_r_result_header) ERROR: server provided no answer. Is the server configured to allow access from your IP address? Is the server performing authentication and your client isn't? Does the server have the compiler installed? Is the server configured to access the compiler?
    distcc[22629] Warning: failed to distribute scripts/mod/devicetable-offsets.c to 10.1.1.102/5, running locally instead
    distcc[22635] (dcc_readx) ERROR: unexpected eof on fd5
    distcc[22635] (dcc_r_token_int) ERROR: read failed while waiting for token "DONE"
    distcc[22635] (dcc_r_result_header) ERROR: server provided no answer. Is the server configured to allow access from your IP address? Is the server performing authentication and your client isn't? Does the server have the compiler installed? Is the server configured to access the compiler?
    distcc[22635] Warning: failed to distribute scripts/mod/empty.c to 10.1.1.102/5, running locally instead
    ...
    

    Whatever is causing this breakage, it has not been backported to the 4.19-lts series. I can build 4.19.61 with distcc working just fine. I found an older discussion on lkml about similar but the date of this being 8+ months ago doesn't seem right.

    My systems are running Arch Linux.

    • distcc 3.3.2
    • compiler 9.1.0
    opened by graysky2 19
  • Zeroconf fails if avahi supports IPv6

    Zeroconf fails if avahi supports IPv6

    I am running distcc 3.0 i686-pc-linux-gnu on a gentoo system with GCC
    4.1.2.  On any compile, or running 'distcc --show-hosts' I get an "ERROR:
    invalid tcp port specification in "<ipv6 address here>""
    
    Because of this, distcc fails to work with zeroconf on my network (or any
    network where zeroconf reports IPv6 adresses).
    
    The best solution is to either fix the address parsing so that zeroconf's
    IPv6 addresses parse correctly, or to force avahi to give only IPv4 addresses.
    

    Original issue reported on code.google.com by [email protected] on 13 Jan 2009 at 9:54

    Priority-Medium Type-Defect auto-migrated Usability 
    opened by GoogleCodeExporter 19
  • Handle 64-bit time_t on OpenBSD

    Handle 64-bit time_t on OpenBSD

    On OpenBSD, time_t is defined as a 64-bit type. So adjust the format string accordingly and make sure this gets casted correctly for other systems too.

    opened by jasperla 17
  • does distcc support android 10/11 compiling?

    does distcc support android 10/11 compiling?

    i noticed that distcc can warp C/C++ compile tools to make compile faster.

    in android 10 , it switches the compile tool to clang/clang++ and use ninjia to call them via -c:-S:-E and -o options.

    i did some tests use distcc to compile failed, but i can not send the log from internel net .

    i tried so many days, i want to know does this can work from the begining

    opened by modoojunko 16
  • Tag 3.2rc1

    Tag 3.2rc1

    distcc 3.2rc1 was released on Google Code in 2011, but the latest tag in this github repository is version 3.1 from 2008. Can you please tag 3.2rc1 here in this repository, and upload the corresponding tarball here using the github releases service? Thanks.

    bug Usability 
    opened by ryandesign 16
  • distcc --show-hosts fails when using Avahi with IPv6 support and +zeroconf for distcc.

    distcc --show-hosts fails when using Avahi with IPv6 support and +zeroconf for distcc.

    Answering the following questions is a big help:
    
    1. distcc 3.0 i686-pc-linux-gnu
      (protocols 1, 2 and 3) (default port 3632)
      built Mar 11 2009 14:16:41
    Copyright (C) 2002, 2003, 2004 by Martin Pool.
    Includes miniLZO (C) 1996-2002 by Markus Franz Xaver Johannes Oberhumer.
    Portions Copyright (C) 2007-2008 Google.
    
    distcc comes with ABSOLUTELY NO WARRANTY.  distcc is free software, and
    you may use, modify and redistribute it under the terms of the GNU 
    General Public License version 2 or later.
    
    Built with Zeroconf support.
    
    
    2. Linux localhost.localdomain 2.6.25-gentoo-r9 #2 SMP Fri Nov 14 09:35:46
    GMT 2008 i686 Intel(R) Xeon(TM) CPU 2.40GHz GenuineIntel GNU/Linux
    
    gcc (GCC) 4.1.2 (Gentoo 4.1.2 p1.1)
    Copyright (C) 2006 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    3. Compile any software package. Also  distcc --show-hosts
    
    4. Error Message unable to parse the host file.
    cat .distcc/zeroconf/hosts
    10.0.0.179:3632/16
    10.0.0.135:3632/8
    fe80::2c0:9fff:fe3d:1737:3632/16
    2001:470:1f09:22e:214:22ff:fe2d:1d7f:3632/8
    
    5. distcc --show-hosts
    distcc[29525] (dcc_parse_tcp_host) ERROR: invalid tcp port specification in
    ":2c0:9fff:fe3d:1737:3632/16
    2001:470:1f09:22e:214:22ff:fe2d:1d7f:3632/8
    "
    distcc[29525] (dcc_zeroconf_add_hosts) CRITICAL! failed to parse host file.
    
    distcc[29525] (dcc_show_hosts) CRITICAL! Failed to get host list
    
    6. See 5, the IPv6 address is missing the beginning of its address should
    have fe80.
    
    7. See 5.
    

    Original issue reported on code.google.com by [email protected] on 12 Mar 2009 at 11:07

    auto-migrated 
    opened by GoogleCodeExporter 15
  • Build failure on vanilla Ubuntu 8.10

    Build failure on vanilla Ubuntu 8.10

    
    Attempting to build distcc from source.  
    
    distcc 3.1
    Ubuntu 8.10
    
    $ tar xjvf distcc-3.1.tar.bz2
    $ cd distcc-3.1
    
    Tried the simple
      ./configure && make && sudo make install
    
    Warning are treated as errors so multiple failure.  You can hack the make
    file to turn this off but other errors occur 
    
    gcc -DHAVE_CONFIG_H -D_GNU_SOURCE -DSYSCONFDIR="\"/usr/local/etc\""
    -DPKGDATADIR="\"/usr/local/share/distcc\"" -Isrc -I"./src" -I"./lzo"
    -I"./popt" -Werror -g -O2 -MD -W -Wall -Wimplicit -Wshadow -Wpointer-arith
    -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes
    -Wmissing-prototypes -Wnested-externs -Wmissing-declarations
    -Wuninitialized -pthread -o src/emaillog.o -c src/emaillog.c
    cc1: warnings being treated as errors
    src/emaillog.c: In function ‘dcc_add_file_to_log_email’:
    src/emaillog.c:92: error: ignoring return value of ‘write’, declared with
    attribute warn_unused_result
    src/emaillog.c:93: error: ignoring return value of ‘write’, declared with
    attribute warn_unused_result
    src/emaillog.c:94: error: ignoring return value of ‘write’, declared with
    attribute warn_unused_result
    src/emaillog.c:98: error: ignoring return value of ‘write’, declared with
    attribute warn_unused_result
    
    ... etc.
    
    
    Regenerating configure results in a similar set of errors but starting in a
    different file.
    
    $ sh autogen.sh
    $ ./configure
    $ make
    
    cc1: warnings being treated as errors
    src/trace.c: In function ‘rs_logger_file’:
    src/trace.c:330: error: ignoring return value of ‘write’, declared with
    attribute warn_unused_result
    make: *** [src/trace.o] Error 1
    
    
    

    Original issue reported on code.google.com by [email protected] on 3 Dec 2008 at 11:31

    Type-Defect auto-migrated 
    opened by GoogleCodeExporter 14
  • pump does not parse response files

    pump does not parse response files

    pump cannot process compiler invocations with response files as they are used 
    to shorten the command line under windows usually passed with 
    "@more_arguments.rsp"
    
    Answering the following questions is a big help:
    
    1. What version of distcc are you using (e.g. "2.7.1")?  You can run "distcc 
    --version" to see.  If you got distcc from a distribution package rather than 
    building from source, please say which one.
    distcc 3.1
    
    2. What platform are you running on (e.g. "Red Hat 8.0", "HP-UX 11.11")?  What 
    compilare are you using ("gcc 3.3")?  Run "uname -a" and "cc --version" to see.
    Linux gold 2.6.18-194.32.1.el5 #1 SMP Wed Jan 5 17:52:25 EST 2011 x86_64 x86_64 
    x86_64 GNU/Linux
    
    x86_64-w64-mingw32-g++ (GCC) 4.5.1
    Copyright (C) 2010 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    
    3. What were you trying to do (e.g. "install distcc", "build Mozilla")?
    
    We use CMake to generate Makefiles - we use a toolchain for mingw32 targets
    CMake as of version 2.8.5 uses response files to make the commandlines shorter 
    since mysys shells on windows can sometimes not support long commandlines.
    
    4. What went wrong?  Did you get an error message, did it hang, did it build a 
    program that didn't work, did it not distribute compilation to machines that 
    ought to get it?
    
    when running 'pump make', the following warning is emitted:
    
    WARNING include server: Preprocessing locally. Include server not covering: 
    Could not locate name of translation unit: 
    ['@CMakeFiles/bclexampleutil.dir/includes_CXX.rsp', 
    'example/util/example_util_implementation.cpp']. for translation unit 'unknown 
    translation unit'
    
    and the file is preprocessed locally and compiled remotely without problems.
    
    5. If you have an example of a compiler invocation that failed, quote it, in 
    full e.g.:
    
    distcc x86_64-w64-mingw32-g++ @CMakeFiles/bclexampleutil.dir/includes_CXX.rsp   
    -m32 -Wno-deprecated -fno-pretty-templates -o 
    CMakeFiles/bclexampleutil.dir/example_util_implementation.cpp.obj -c 
    example/util/example_util_implementation.cpp
    
    6. What error logging do you get?  Turn on client and server error logging.  On 
    the client, set these environment variables, and try to reproduce the problem: 
    =export DISTCC_VERBOSE=1 DISTCC_LOG=/tmp/distcc.log=.  Start the server with 
    the --verbose option. If the problem is intermittent, leave logging enabled and 
    then pull out the lines from the log file when the problem recurs.
    
    problem might be in pump component "parse_command.py"
    
    7. If you got an error message on stderr, quote that error exactly. Find the 
    lines in the log files pertaining to the compile, and include all of them in 
    your report, by looking at the process ID in square brackets. If you can't work 
    that out, quote the last few hundred lines leading up to the failure.
    
    problem might be in pump component "parse_command.py"
    
    
    I think I can track down the problem to parse_command.py:343
    It might be necessary to actually expand the content of the file given with 
    '@...rsp' since it contains additional commandline arguments (like "-Ipath1 
    ...") that the compiler would need to parse - and pump as well.
    
    Before I suggest a patch, I just want to make sure there is no other solution.
    
    Thanks 
    

    Original issue reported on code.google.com by [email protected] on 18 Sep 2011 at 11:13

    auto-migrated 
    opened by GoogleCodeExporter 13
  • 3.0 on OSX: ValueError: Expected absolute path, but got '(framework'.

    3.0 on OSX: ValueError: Expected absolute path, but got '(framework'.

    Hi all,
    
    {{{
    [email protected] ~ $ uname -a
    Darwin montero.gostai.ensta.fr 9.5.0 Darwin Kernel Version 9.5.0: Wed Sep  3 
    11:29:43 PDT 2008; root:xnu-
    1228.7.58~1/RELEASE_I386 i386
    [email protected] ~ $ g++ --version
    i686-apple-darwin9-g++-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5484)
    Copyright (C) 2005 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    [email protected] ~ $ which g++
    /usr/bin/g++
    }}}
    
    I'm using distcc as provided by the macports.
    
    I'm experiencing a bizarre error that I don't really understand.  I don't know 
    what I can do to provide more accurate 
    information, sorry.
    
    {{{
    $ cat contract.cc
    #include <iostream>
    $ DISTCC_LOG=/tmp/distcc.log DISTCC_VERBOSE=1 pump distcc g++ -c contract.cc -o 
    /tmp/foo.o
    __________Using distcc-pump from /opt/local/bin
    __________Using        4 distcc servers, of which only        3 support(s) pump 
    mode
    WARNING include server: Preprocessing locally. Include server internal error: 
    '<type 'exceptions.ValueError'>: ("Expected 
    absolute path, but got '(framework'.",)' for translation unit 'unknown 
    translation unit' ------- Include server stack trace -----
    ------
    Traceback (most recent call last):
      File "/opt/local/lib/python2.5/site-packages/include_server/include_server.py", line 379, in handle
        include_analyzer.client_root_keeper))
      File "/opt/local/lib/python2.5/site-packages/include_server/include_analyzer.py", line 254, in DoCompilationCommand
        self.timer))
      File "/opt/local/lib/python2.5/site-packages/include_server/parse_command.py", line 435, in ParseCommandArgs
        compiler_defaults.SetSystemDirsDefaults(compiler, parse_state.language, timer)
      File "/opt/local/lib/python2.5/site-packages/include_server/compiler_defaults.py", line 353, in SetSystemDirsDefaults
        self.system_links)
      File "/opt/local/lib/python2.5/site-packages/include_server/compiler_defaults.py", line 104, in 
    _MakeLinkFromMirrorToRealLocation
        raise ValueError("Expected absolute path, but got '%s'." % system_dir)
    ValueError: Expected absolute path, but got '(framework'.
    ----------------------------------------------
    }}}
    
    Thanks for the good work!
    
    
    

    Original issue reported on code.google.com by [email protected] on 15 Dec 2008 at 9:31

    Attachments:

    auto-migrated 
    opened by GoogleCodeExporter 13
  • `make install` does not work - document that python is needed?

    `make install` does not work - document that python is needed?

    In a 20.04 bare docker container, the install target seems to be broken:

    # make install
    'make install' will install distcc as follows:
      man pages            /usr/local/share/man/man1
      documents            /usr/local/share/doc/distcc
      programs             /usr/local/bin
      sbin programs        /usr/local/sbin
      system configuration /usr/local/etc
      icon file            /usr/local/share/pixmaps
      application file     /usr/local/share/applications
    /bin/bash ./mkinstalldirs "/usr/local/share/doc/distcc"
    for p in AUTHORS COPYING NEWS README README.pump INSTALL TODO doc/protocol-1.txt doc/status-1.txt doc/protocol-2.txt doc/protocol-3.txt doc/protocol-3-impl.txt doc/protocol-gssapi.txt doc/reporting-bugs.txt survey.txt; do \
      /usr/bin/install -c -m 644 "./$p" "/usr/local/share/doc/distcc" || exit 1; \
    done
    /bin/bash ./mkinstalldirs "/usr/local/share/man/man1"
    for p in man/distcc.1 man/distccd.1 man/distccmon-text.1 man/lsdistcc.1 man/pump.1 man/include_server.1; do \
      if gzip --help >/dev/null 2>&1; then \
        mkdir -p "`dirname $p`"; \
        if [ -e "/usr/local/share/man/man1$p" ]; then rm -fv "/usr/local/share/man/man1$p"; fi; \
        gzip < "./$p" > "$p.gz"; \
        /usr/bin/install -c -m 644 "$p.gz" "/usr/local/share/man/man1" || exit 1; \
      else \
        echo "Warning: no working gzip, installing man pages uncompressed" 1>&2; \
        if [ -e "/usr/local/share/man/man1$p.gz" ]; then rm -fv "/usr/local/share/man/man1$p.gz"; fi; \
        /usr/bin/install -c -m 644 "./$p" "/usr/local/share/man/man1" || exit 1; \
      fi; \
    done
    /bin/bash ./mkinstalldirs "/usr/local/bin"
    /bin/bash ./mkinstalldirs "/usr/local/sbin"
    for p in distcc distccd distccmon-text lsdistcc ; do \
      /usr/bin/install -c  "$p" "/usr/local/bin" || exit 1; \
    done
    for p in update-distcc-symlinks; do \
      /usr/bin/install -c  "$p" "/usr/local/sbin" || exit 1; \
    done
    if test -z ":"; then	\
      echo "Not building include-server: No suitable python found"; \
    else						\
      mkdir -p "./_include_server" &&      \
      DISTCC_VERSION="3.4"			\
      SRCDIR="."                            \
      CFLAGS="-g -O2 -MD -W -Wall -Wimplicit -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wmissing-declarations -Wuninitialized -pthread -Wp,-U_FORTIFY_SOURCE -Wno-missing-prototypes -Wno-missing-declarations -Wno-write-strings"           \
      CPPFLAGS="-DMINILZO_HAVE_CONFIG_H -DHAVE_CONFIG_H -D_GNU_SOURCE -DLIBDIR="\"/usr/local/lib\"" -DSYSCONFDIR="\"/usr/local/etc\"" -DICONDIR="\"/usr/local/share/pixmaps\"" -Isrc -I"./src" -I"./lzo" -I"./popt""                        \
      : "./include_server/setup.py" \
          build 					\
            --build-base="./_include_server"  \
            --build-temp="./_include_server"; \
    fi
    if test -z ":"; then	\
      echo "Not building install-include-server: No suitable python found"; \
    else						\
      mkdir -p "./_include_server" &&      \
      DESTDIR=`cd "/" && pwd` &&            \
      DISTCC_VERSION="3.4"			\
      SRCDIR="."                            \
      CFLAGS="-g -O2 -MD -W -Wall -Wimplicit -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wmissing-declarations -Wuninitialized -pthread -Wp,-U_FORTIFY_SOURCE -Wno-missing-prototypes -Wno-missing-declarations -Wno-write-strings"           \
      CPPFLAGS="-DMINILZO_HAVE_CONFIG_H -DHAVE_CONFIG_H -D_GNU_SOURCE -DLIBDIR="\"/usr/local/lib\"" -DSYSCONFDIR="\"/usr/local/etc\"" -DICONDIR="\"/usr/local/share/pixmaps\"" -Isrc -I"./src" -I"./lzo" -I"./popt""                        \
      : "./include_server/setup.py" \
          build 					\
            --build-base="./_include_server" \
            --build-temp="./_include_server" \
          install 					\
             --prefix="/usr/local" 			\
             --record="./_include_server/install.log.pre" \
             --root="$DESTDIR"                     \
        || exit 1; \
      sed -e '/^[^\/]/ s,^,/,' \
          -e 's/\r$//' \
          "./_include_server/install.log.pre" \
          > "./_include_server/install.log"; \
      if test -n ""; then \
        cp -f "./_include_server/install.log" ""; \
      fi; \
      /bin/bash ./mkinstalldirs "/usr/local/bin" && \
      INCLUDE_SERVER=`grep '/include_server.py$' "./_include_server/install.log"` && \
      sed "s,^include_server='',include_server='$INCLUDE_SERVER'," \
        pump > "./_include_server/pump" && \
      /usr/bin/install -c "./_include_server/pump" "/usr/local/bin"; \
    fi
    sed: can't read ./_include_server/install.log.pre: No such file or directory
    make: *** [Makefile:1073: install-include-server] Error 1
    
    opened by themightyoarfish 1
  • Out of tree build instructions don't work

    Out of tree build instructions don't work

    https://github.com/distcc/distcc/blob/d983bcaa3061c55e8f246d8af84f1f3b8b94a82b/INSTALL#L142

    This does not actually work with current master:

    # cd obj/
    [email protected]:/distcc/obj# ../autogen.sh
    ../autogen.sh: running aclocal
    ../autogen.sh: running autoheader
    /usr/bin/m4:aclocal.m4:270: cannot open `m4/ax_pthread.m4': No such file or directory
    /usr/bin/m4:aclocal.m4:271: cannot open `m4/pkg.m4': No such file or directory
    autom4te: /usr/bin/m4 failed with exit status: 1
    autoheader: '/usr/bin/autom4te' failed with exit status: 1
    
    opened by themightyoarfish 3
  • Compile files with .incbin assembler directive locally

    Compile files with .incbin assembler directive locally

    A preprocessed source with .incbin assembler directive can not be compiled remotely. As a result of remote compilation failure distcc marks the build node as unreliable (for no good reason). This increases the build time, especially when there are only a few (2 -- 3) build nodes. With this patch distcc checks for the .incbin directive and compiles such files locally.

    opened by asheplyakov 0
  • Fix tests in pump mode

    Fix tests in pump mode

    make check is also running tests for the pump mode (pump-maintainer-check target) but they were all falling back to the usual preprocessor mode as the include server was not started.

    This is solved by prepending pump to the distcc invocations and also some trivially failing tests are fixed or disabled when they make no sense in pump mode.

    opened by rmatev 0
  • Support `-f*-prefix-map` compiler options

    Support `-f*-prefix-map` compiler options

    In pump mode, distcc rewrites the debug info on the server before returning the result (see dcc_fix_debug_info). However, when -ffile-prefix-map or similar compiler options are passed, the compiler is unable to perform the substitution since the path on the server is different. The rewriting of distcc still kicks in, and the net result on the client side is that the -prefix-map option is not respected.

    This is fixed by simply treating the -f*-prefix-map options analogously to the include arguments.

    opened by rmatev 1
  • [Question] Can multiple distcc-pump combined as one startup service?

    [Question] Can multiple distcc-pump combined as one startup service?

    Given

    Terminal 1:

    eval "$(pump --startup)"
    
    make
    

    Terminal 2:

    eval "$(pump --startup)"
    
    make
    

    Question

    1. Can above two pump combined into one service?
    pump --startup > source.sh
    

    Terminal 1:

    make
    

    Terminal 2:

    make
    
    1. If so, any limitation? If not, why?

    Thanks.

    opened by loynoir 0
Releases(v3.4)
  • v3.4(May 11, 2021)

    • distccmon-gnome ported from gtk2 to gtk3

    • Remove debug lag in spawning new threads. (better multi-core performance)

    • Bug fixes.

    (Packagers: The .tar.gz file is to make it easier to build from source, as it doesn't require autoconf. It is hand-made so please use the autogenerated from git version instead.)

    Source code(tar.gz)
    Source code(zip)
    distcc-3.4.tar.gz(1.18 MB)
  • v3.3.5(Jan 4, 2021)

    Bugfix release.

    -Fix build on OSX -Fix build when using optional features AND those optional libraries decided to build against libsystemd (not sure which one, but it doesn't matter). -Python 3.8 compatibility issues

    (Packagers: The .tar.gz file is to make it easier to build from source, as it doesn't require autoconf. It is hand-made so please use the autogenerated from git version instead.)

    Source code(tar.gz)
    Source code(zip)
    distcc-3.3.5.tar.gz(1.14 MB)
  • v3.3.3(Aug 14, 2019)

    • small fixes, such as fixing the build on some non-Linux systems

    Remember, for those upgrading from pre-3.3: you must run update-distcc-symlinks on every server machine, and add manually (see MASQUERADING of distcc(1)) those compilers it does not detect.

    Source code(tar.gz)
    Source code(zip)
    distcc-3.3.3.tar.gz(1.14 MB)
  • v3.3.2(Jul 26, 2018)

    • Fixes a regression where ssh mode did not work in most circumstances. Bug #291

    • Misc smaller fixes

    Remember, for those upgrading from pre-3.3: you must run update-distcc-symlinks on every server machine, and add manually (see MASQUERADING of distcc(1)) those compilers it does not detect.

    Source code(tar.gz)
    Source code(zip)
    distcc-3.3.2.tar.gz(985.29 KB)
  • v3.3(Mar 7, 2018)

    • Use masquerade as compiler white-list. Bug #155 d849ca2. (Shawn Landden)

    • New --allow-private (the default) which allows non-global IP and IPv6 addresses. PR #240 (Shawn Landden)

    • Cross-compilation support. PR #244. (Shawn Landden)

    • Fix parsing of IPv6 addresses. PR #175 (Bing Sun)

    • Python 3, not python 2.

    • Can build without python (and without pump mode or tests).

    For those upgrading: you must run update-distcc-symlinks on every server machine, and add manually (see MASQUERADING of distcc(1)) those compilers it does not detect.

    Source code(tar.gz)
    Source code(zip)
    distcc-3.3.tar.gz(1.11 MB)
  • v3.2rc1.2(Feb 26, 2018)

  • v3.2rc1(Nov 10, 2016)

    Tagged based on the notes in issue #159

    distcc 3.2rc1 was the last release candidate issued on the old Google Code site in 2011.


    Changelog was updated as follows:

    2011-10-26 02:49 Fergus Henderson [email protected]

    • Makefile.in:

      After my change to gzip the man pages before installing them, I had to make a couple more changes to get "make distcheck" to pass.

      Reviewed by Craig Silverstein. 2011-10-25 01:49 Fergus Henderson [email protected]

      • Makefile.in, man:

        Gzip the man pages before installing them.

      This is required by the Debian policy manual http://www.debian.org/doc/debian-policy/ch-docs.html and is also assumed by our packaging/RedHat/rpm.spec file which we use for building both RPM and Debian packages.

      Also some whitespaces changes; only the first of the four segments in this patch has non-whitespace changes.

    2011-10-25 00:42 Fergus Henderson [email protected] * ChangeLog, NEWS, configure.ac:

    Update the NEWS and ChangeLog files, and set the version number to 3.2rc1, in preparation for releasing distcc version 3.2.

    Reviewed by Craig Silverstein.

    Source code(tar.gz)
    Source code(zip)
    distcc-3.2rc1.tar.bz2(595.60 KB)
    distcc-3.2rc1.tar.gz(914.63 KB)
  • distcc-3.1(Nov 10, 2016)

  • distcc-3.0(Nov 10, 2016)

  • distcc-3.0rc3(Nov 10, 2016)

  • distcc-3.0rc2(Nov 10, 2016)

  • distcc-3.0-rc1(Nov 10, 2016)

Owner
distcc
Developers of distcc. Mailing list at https://lists.samba.org/mailman/listinfo/distcc.
distcc
Przemyslaw Skibinski 556 Aug 4, 2022
Compile and execute C "scripts" in one go!

c "There isn't much that's special about C. That's one of the reasons why it's fast." I love C for its raw speed (although it does have its drawbacks)

Ryan Jacobs 2k Jul 29, 2022
Roaring bitmaps in C (and C++)

CRoaring Portable Roaring bitmaps in C (and C++) with full support for your favorite compiler (GNU GCC, LLVM's clang, Visual Studio). Included in the

Roaring bitmaps: A better compressed bitset 1k Aug 5, 2022
New generation entropy codecs : Finite State Entropy and Huff0

New Generation Entropy coders This library proposes two high speed entropy coders : Huff0, a Huffman codec designed for modern CPU, featuring OoO (Out

Yann Collet 1.1k Jul 24, 2022
Compression abstraction library and utilities

Squash - Compresion Abstraction Library

null 364 Jul 31, 2022
Multi-format archive and compression library

Welcome to libarchive! The libarchive project develops a portable, efficient C library that can read and write streaming archives in a variety of form

null 1.8k Jul 27, 2022
Easing the task of comparing code generated by cc65, vbcc, and 6502-gcc

6502 C compilers benchmark Easing the way to compare code generated by cc65, 6502-gcc, vbcc, and KickC. This repository contains scripts to: Compile t

Sylvain Gadrat 16 Dec 15, 2021
Secure ECC-based DID intersection in Go, Java and C.

SecureUnionID Secure ECC-based DID intersection. ABSTRACT This project is used to protect device ID using Elliptic Curve Cryptography algorithm. The d

Volcengine 19 Jul 22, 2022
nanoc is a tiny subset of C and a tiny compiler that targets 32-bit x86 machines.

nanoc is a tiny subset of C and a tiny compiler that targets 32-bit x86 machines. Tiny? The only types are: int (32-bit signed integer) char (8-

Ajay Tatachar 16 Feb 13, 2022
Smaller C is a simple and small single-pass C compiler

Smaller C is a simple and small single-pass C compiler, currently supporting most of the C language common between C89/ANSI C and C99 (minus some C89 and plus some C99 features).

Alexey Frunze 1.1k Aug 9, 2022
Microvm is a virtual machine and compiler

The aim of this project is to create a stack based language and virtual machine for microcontrollers. A mix of approaches is used. Separate memory is used for program and variable space (Harvard architecture). An interpreter, virtual machine and compiler are available. A demostration of the interpreter in action is presented below.

null 11 Jun 21, 2022
Pre-configured LLVM and ANTLR4 for C++

LLVM + ANTLR4 Starter Project Starter project for ANTLR4 and LLVM C++ project. Prerequisite LLVM 12 Java (for ANTLR4) git Install prerequisite librari

Nathanael Demacon 11 Jul 10, 2022
Aheui JIT compiler for PC and web

아희짓 개요 아희짓은 아희 언어를 위한 JIT (Just in Time) 컴파일러입니다. 어셈블러와 유틸 라이브러리외에 외부 라이브러리에 전혀 의존하지 않고 JIT을 바닥부터 구현합니다. 지원 환경 64비트 windows, mac, linux (x86 아키텍쳐) 웹어셈

Sunho Kim 27 Jan 2, 2022
Interpreter and miner for the LODA language written in C++

LODA Interpreter and Miner (C++) LODA is an assembly language, a computational model and a tool for mining integer sequences. You can use it to search

LODA Language 12 Jul 8, 2022
is a c++20 compile and runtime Struct Reflections header only library.

is a c++20 compile and runtime Struct Reflections header only library. It allows you to iterate over aggregate type's member variables.

RedSkittleFox 4 Apr 18, 2022
C++ python bytecode disassembler and decompiler

C++ python bytecode disassembler and decompiler

Michael Hansen 1.4k Aug 6, 2022
🌳 A compressed rank/select dictionary exploiting approximate linearity and repetitiveness.

The block-ε tree is a compressed rank/select dictionary that achieves new space-time trade-offs by exploiting the approximate linearity and the repeti

Giorgio Vinciguerra 10 Jun 5, 2022
A LLVM and Clang compiler toolchain built for kernel development

Cosmic-Clang Toolchain This is a LLVM and Clang compiler toolchain built for kernel development. Builds are always made from the latest LLVM sources r

Ǥђ๏ຮ₮⌁Ⲙครtє࿐ 0 Apr 12, 2022
Distributed, Encrypted, Fractured File System - A custom distributed file system written in C with FUSE

A custom FUSE-based filesystem that distributes encrypted shards of data across machines on a local network, allowing those files to be accessible from any machine.

Charles Averill 14 May 18, 2022
Kunlun distributed DBMS is a NewSQL OLTP relational distributed database management system

Kunlun distributed DBMS is a NewSQL OLTP relational distributed database management system. Application developers can use Kunlun to build IT systems that handles terabytes of data, without any effort on their part to implement data sharding, distributed transaction processing, distributed query processing, crash safety, high availability, strong consistency, horizontal scalability. All these powerful features are provided by Kunlun.

zettadb 105 Aug 3, 2022
A static analyzer for Java, C, C++, and Objective-C

Infer Infer is a static analysis tool for Java, C++, Objective-C, and C. Infer is written in OCaml. Installation Read our Getting Started page for det

Facebook 13.4k Aug 9, 2022
The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)

gRPC - An RPC library and framework gRPC is a modern, open source, high-performance remote procedure call (RPC) framework that can run anywhere. gRPC

grpc 35.2k Aug 8, 2022
Card game with Objective-C using Allegro 4/5

Card game with Objective-C using Allegro 4/5 , This is an alternative of the real game for personal reasons .

Cerbah Kamel 3 Nov 7, 2021
Binary Ninja plugin & workflow to help analyze Objective-C code

Objective Ninja Objective Ninja is a Binary Ninja plugin to assist in reverse engineering Objective-C code. Beware, Objective Ninja is still in very e

Jon Palmisciano 79 Jul 25, 2022
Macro magic for declaring/calling Objective-C APIs from C11 or C++. Preloads selectors, chooses the correct objc_msgSend to call per method/platform.

OC - Easily Declare/Invoke Objective-C APIs from C11 or C++11 Usage // Call class and instance methods: NSWindow* const nswindow = oc_cls(NSWindow,new

Garett Bass 46 May 31, 2022
Tundra is a code build system that tries to be accurate and fast for incremental builds

Tundra, a build system Tundra is a high-performance code build system designed to give the best possible incremental build times even for very large s

Andreas Fredriksson 372 Jul 17, 2022
BTCU Wallet is the original Bitcoin Ultimatum client and it builds the backbone of the network.

The concept of BTCU is similar to the concept of the second cryptocurrency by capitalization - Ethereum.

Bitcoin Ultimatum (BTCU) 31 Jul 1, 2022
Parses existing Chia plotter log files and builds a .csv file containing all the important details

Chia Log Analysis Parses through Chia plotter log files and plops all the juicy details into a CSV file! Build See below for instructions if you prefe

Drew M Johnson 45 May 10, 2022
Builds and runs an exported image classification impulse on ESP32 Cam

ESP32 Cam and Edge Impulse How to run custom inference on a ESP32 cam using Edge Impulse. Material This code has been tested the AI Thinker ESP32 Cam

Edge Impulse 51 Jul 16, 2022