Bug 40577 - distcc-server: не запускает ни один компилятор
Summary: distcc-server: не запускает ни один компилятор
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: distcc-server (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Vitaly Lipatov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-07-26 14:24 MSK by Alexey Sheplyakov
Modified: 2021-07-26 17:24 MSK (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey Sheplyakov 2021-07-26 14:24:28 MSK
1. Ставлю distcc и компиляторы:

sudo apt-get install -y distcc distcc-server gcc gcc-c++
sudo /usr/sbin/update-distcc-symlinks
sudo sed -i /etc/sysconfig/distccd -re 's;^OPTIONS\>[=].*$;OPTIONS="--log-file=/var/log/distccd.log --log-level=debug";'
sudo systemctl start distccd

2. Пытаюсь что-нибудь собрать:

cat > hello.c <<-EOF
#include <stdio.h>
int main(int argc, char **argv) {
        printf("Hello, world!\n");
        return 0;
}
EOF
env DISTCC_HOSTS='127.0.0.1/2' DISTCC_VERBOSE=1 DISTCC_FALLBACK=0 /usr/lib/distcc/gcc-8 -c hello.c; echo $?

Ожидаемый результат: успешная сборка hello.o, код возврата 0.

Наблюдаемый результат: код возврата 116, hello.o не собирается:

env DISTCC_VERBOSE=1 DISTCC_HOSTS='127.0.0.1/2' DISTCC_FALLBACK=0 /usr/lib/distcc/gcc-8 -o hello.o -c hello.c
distcc[4947] (dcc_trace_version) distcc 3.4 x86_64-alt-linux-gnu; built Jul 12 2021 13:09:55
distcc[4947] (dcc_recursion_safeguard) safeguard level=0
distcc[4947] (main) compiler name is "gcc-8"
distcc[4947] (dcc_support_masquerade) not modifying PATH
distcc[4947] (dcc_scan_args) scanning arguments: gcc-8 -o hello.o -c hello.c
distcc[4947] (dcc_scan_args) found object/output file "hello.o"
distcc[4947] (dcc_scan_args) found input file "hello.c"
distcc[4947] compile from hello.c to hello.o
distcc[4947] (dcc_gcc_rewrite_fqn) Re-writing call to 'gcc-8' to 'x86_64-alt-linux-gcc-8' to support cross-compilation.
distcc[4947] (dcc_get_hostlist) read hosts from environment
distcc[4947] (dcc_parse_hosts) found tcp token "127.0.0.1/2"
distcc[4947] (dcc_check_backoff) still in backoff period for 127.0.0.1/2
distcc[4947] (dcc_remove_disliked) remove 127.0.0.1/2 from list
distcc[4947] (dcc_build_somewhere) ERROR: failed to distribute and fallbacks are disabled
distcc[4947] elapsed compilation time 0.000263s
distcc[4947] (dcc_exit) exit: code 116; self: 0.002205 user 0.003307 sys; children: 0.000000 user 0.000000 sys
distcc[4947] (dcc_cleanup_tempfiles_inner) deleted 1 temporary files
116

В логе сервера вижу:

distccd[4887] (dcc_check_client) connection from 127.0.0.1:48100
distccd[4887] (check_address_inet) match client 0x100007f, value 0x200007f, mask 0xffffff
distccd[4887] (dcc_r_token_int) got DIST00000001
distccd[4887] (dcc_r_token_int) got ARGC00000005
distccd[4887] (dcc_r_argv) reading 5 arguments from job submission
distccd[4887] (dcc_r_token_int) got ARGV00000016
distccd[4887] (dcc_r_token_string) got 'x86_64-alt-linux-gcc-8'
distccd[4887] (dcc_r_argv) argv[0] = "x86_64-alt-linux-gcc-8"
distccd[4887] (dcc_r_token_int) got ARGV00000002
distccd[4887] (dcc_r_token_string) got '-o'
distccd[4887] (dcc_r_argv) argv[1] = "-o"
distccd[4887] (dcc_r_token_int) got ARGV00000007
distccd[4887] (dcc_r_token_string) got 'hello.o'
distccd[4887] (dcc_r_argv) argv[2] = "hello.o"
distccd[4887] (dcc_r_token_int) got ARGV00000002
distccd[4887] (dcc_r_token_string) got '-c'
distccd[4887] (dcc_r_argv) argv[3] = "-c"
distccd[4887] (dcc_r_token_int) got ARGV00000007
distccd[4887] (dcc_r_token_string) got 'hello.c'
distccd[4887] (dcc_r_argv) argv[4] = "hello.c"
distccd[4887] (dcc_r_argv) got arguments: x86_64-alt-linux-gcc-8 -o hello.o -c hello.c
distccd[4887] (dcc_scan_args) scanning arguments: x86_64-alt-linux-gcc-8 -o hello.o -c hello.c
distccd[4887] (dcc_scan_args) found object/output file "hello.o"
distccd[4887] (dcc_scan_args) found input file "hello.c"
distccd[4887] compile from hello.c to hello.o
distccd[4887] (dcc_run_job) output file hello.o
distccd[4887] (dcc_input_tmpnam) input file hello.c
distccd[4887] (dcc_r_token_int) got DOTI00004343
distccd[4887] (dcc_r_file) received 17219 bytes to file /tmp/distccd_bfd698f5.i
distccd[4887] (dcc_r_file_timed) 17219 bytes received in 0.000030s, rate 560514kB/s
distccd[4887] (dcc_set_input) changed input from "hello.c" to "/tmp/distccd_bfd698f5.i"
distccd[4887] (dcc_set_input) command after: x86_64-alt-linux-gcc-8 -o hello.o -c /tmp/distccd_bfd698f5.i
distccd[4887] (dcc_set_output) changed output from "hello.o" to "/tmp/distccd_bfd098f5.o"
distccd[4887] (dcc_set_output) command after: x86_64-alt-linux-gcc-8 -o /tmp/distccd_bfd098f5.o -c /tmp/distccd_bfd698f5.i
distccd[4887] (dcc_check_compiler_masq) /usr/bin/x86_64-alt-linux-gcc-8 is not a symlink
distccd[4887] (dcc_check_compiler_whitelist) CRITICAL! no /usr/lib64/distcc
distccd[4887] (dcc_cleanup_tempfiles_inner) deleted 5 temporary files
distccd[4887] (dcc_job_summary) client: 127.0.0.1:48100 OTHER exit:0 sig:0 core:0 ret:0 time:3ms

То есть, update-distcc-symlinks создаёт ссылки в /usr/lib/distcc, а distccd ожидает их в /usr/lib64.

Это похоже на https://github.com/distcc/distcc/issues/431
Comment 1 Repository Robot 2021-07-26 17:24:46 MSK
distcc-3.4-alt3 -> sisyphus:

 Mon Jul 26 2021 Alexey Sheplyakov <asheplyakov@altlinux> 3.4-alt3
 - distccd: fixed search for approved compilers (Closes: #40577)
 - update-distcc-symlinks correctly finds GCC (cross-) compilers
 - automatically run update-distcc-symlinks (Closes: #40579)