rizsotto / Bear

Bear is a tool that generates a compilation database for clang tooling.
GNU General Public License v3.0
4.79k stars 314 forks source link

Bear 3.0.13 From Homebrew generates empty compile_commands.json #401

Closed MCMocoder closed 3 years ago

MCMocoder commented 3 years ago

Bear 3.0.13 From Homebrew generates empty compile_commands.json when making Nginx 1.21.1.

This bug can be reproduced by executing bear -- make -n

It is expected to generate a not empty compile_commands.json

Environment: macOS Big Sur 11.0.1 x86_64 Bear 3.0.13 from Homebrew(USTC Mirror)

rizsotto commented 3 years ago

Hey @MCMocoder , thanks for the report.

I have no macOS machine, therefore can't reproduce it. The empty compilation database can be result of many things, I need more input in order to help you...

On macOS the intercept command of Bear project will use compiler wrappers to capture the compiler executions. The compiler wrappers has to be interposed into the build process. This only works if the make file allows to replace the compiler. Usually the make files are respecting the CC and CXX environment variables, and take those as compilers. (Bear sets these environment variables in order to interpose the compiler wrappers.) Please check if Nginx project build files reads the environment variables.

Other common mistake is to build the project without Bear, then with Bear. This case the build won't execute the compilers, so Bear can't see the relevant commands. (make clean command might remove the generated object files, so next run of make will call the compilers.) Please run bear --verbose -- make -n and attach the output to this ticket.

MCMocoder commented 3 years ago

bear --verbose -- make -n output:

[22:43:43.640073, br, 91917] bear: 3.0.13
[22:43:43.640916, br, 91917] arguments: ["bear", "--verbose", "--", "make", "-n"]
[22:43:43.640945, br, 91917] environment: ["__CFBundleIdentifier=com.apple.Terminal", "TMPDIR=/var/folders/fr/qvhwsw9x6b5b3qbr2kn8w99m0000gn/T/", "XPC_FLAGS=0x0", "LaunchInstanceID=1F6A61C3-5435-49AF-8B0C-944EB62CE5D0", "TERM=xterm-256color", "SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.MTm2R5xHj9/Listeners", "SECURITYSESSIONID=186a6", "XPC_SERVICE_NAME=0", "TERM_PROGRAM=Apple_Terminal", "TERM_PROGRAM_VERSION=440", "TERM_SESSION_ID=958BEB66-7413-4E30-AA25-1DB992245768", "SHELL=/bin/zsh", "HOME=/Users/zheng", "LOGNAME=zheng", "USER=zheng", "PATH=/usr/local/opt/llvm/bin:/Volumes/Transcend/gradle/bin:/usr/local/opt/openssl@1.1/bin:/Users/zheng/bin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin", "SHLVL=1", "PWD=/Volumes/Transcend/nginx-1.21.1", "OLDPWD=/Users/zheng", "DISPLAY=:0", "GOPATH=/Users/zheng/.go", "MAVEN_REPOSITORY=/Users/zheng/.m2/repository", "ZSH=/Users/zheng/.oh-my-zsh", "PAGER=less", "LESS=-R", "LSCOLORS=Gxfxcxdxbxegedabagacad", "JAVA_HOME=/Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home", "GRADLE_HOME=/Volumes/Transcend/gradle", "GRADLE_USER_HOME=/Volumes/Transcend/gradle/.gradle", "CC=/usr/local/bin/clang", "CXX=/usr/local/bin/clang++", "HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles/bottles", "LANG=en_US.UTF-8", "LC_ALL=en_US.UTF-8", "LC_CTYPE=UTF-8", "_=/usr/local/bin/bear"]
[22:43:43.641067, br, 91917] sysname: Darwin
[22:43:43.641073, br, 91917] release: 20.1.0
[22:43:43.641076, br, 91917] version: Darwin Kernel Version 20.1.0: Sat Oct 31 00:07:11 PDT 2020; root:xnu-7195.50.7~2/RELEASE_X86_64
[22:43:43.641079, br, 91917] machine: x86_64
[22:43:43.641123, br, 91917] arguments parsed: {program: bear, arguments: [{--: [make, -n]}, {--citnames: [/usr/local/Cellar/bear/3.0.13_2/bin/citnames]}, {--interceptor: [/usr/local/Cellar/bear/3.0.13_2/bin/intercept]}, {--library: [/usr/local/Cellar/bear/3.0.13_2/libexec/bear/libexec.dylib]}, {--output: [compile_commands.json]}, {--verbose: []}, {--wrapper: [/usr/local/Cellar/bear/3.0.13_2/libexec/bear/wrapper]}, {--wrapper-dir: [/usr/local/Cellar/bear/3.0.13_2/libexec/bear/wrapper.d]}]}
[22:43:43.647063, br, 91917] Process spawned. [pid: 91918, command: [/usr/local/Cellar/bear/3.0.13_2/bin/intercept, --library, /usr/local/Cellar/bear/3.0.13_2/libexec/bear/libexec.dylib, --wrapper, /usr/local/Cellar/bear/3.0.13_2/libexec/bear/wrapper, --wrapper-dir, /usr/local/Cellar/bear/3.0.13_2/libexec/bear/wrapper.d, --output, compile_commands.db, --verbose, --, make, -n]]
[22:43:43.647136, br, 91917] Process wait requested. [pid: 91918]
[22:43:43.716864, ic, 91918] intercept: 3.0.13
[22:43:43.717579, ic, 91918] arguments: ["/usr/local/Cellar/bear/3.0.13_2/bin/intercept", "--library", "/usr/local/Cellar/bear/3.0.13_2/libexec/bear/libexec.dylib", "--wrapper", "/usr/local/Cellar/bear/3.0.13_2/libexec/bear/wrapper", "--wrapper-dir", "/usr/local/Cellar/bear/3.0.13_2/libexec/bear/wrapper.d", "--output", "compile_commands.db", "--verbose", "--", "make", "-n"]
[22:43:43.717621, ic, 91918] environment: ["CC=/usr/local/bin/clang", "CXX=/usr/local/bin/clang++", "DISPLAY=:0", "GOPATH=/Users/zheng/.go", "GRADLE_HOME=/Volumes/Transcend/gradle", "GRADLE_USER_HOME=/Volumes/Transcend/gradle/.gradle", "HOME=/Users/zheng", "HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles/bottles", "JAVA_HOME=/Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home", "LANG=en_US.UTF-8", "LC_ALL=en_US.UTF-8", "LC_CTYPE=UTF-8", "LESS=-R", "LOGNAME=zheng", "LSCOLORS=Gxfxcxdxbxegedabagacad", "LaunchInstanceID=1F6A61C3-5435-49AF-8B0C-944EB62CE5D0", "MAVEN_REPOSITORY=/Users/zheng/.m2/repository", "OLDPWD=/Users/zheng", "PAGER=less", "PATH=/usr/local/opt/llvm/bin:/Volumes/Transcend/gradle/bin:/usr/local/opt/openssl@1.1/bin:/Users/zheng/bin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin", "PWD=/Volumes/Transcend/nginx-1.21.1", "SECURITYSESSIONID=186a6", "SHELL=/bin/zsh", "SHLVL=1", "SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.MTm2R5xHj9/Listeners", "TERM=xterm-256color", "TERM_PROGRAM=Apple_Terminal", "TERM_PROGRAM_VERSION=440", "TERM_SESSION_ID=958BEB66-7413-4E30-AA25-1DB992245768", "TMPDIR=/var/folders/fr/qvhwsw9x6b5b3qbr2kn8w99m0000gn/T/", "USER=zheng", "XPC_FLAGS=0x0", "XPC_SERVICE_NAME=0", "ZSH=/Users/zheng/.oh-my-zsh", "_=/usr/local/bin/bear", "__CFBundleIdentifier=com.apple.Terminal"]
[22:43:43.717750, ic, 91918] sysname: Darwin
[22:43:43.717757, ic, 91918] release: 20.1.0
[22:43:43.717761, ic, 91918] version: Darwin Kernel Version 20.1.0: Sat Oct 31 00:07:11 PDT 2020; root:xnu-7195.50.7~2/RELEASE_X86_64
[22:43:43.717765, ic, 91918] machine: x86_64
[22:43:43.717795, ic, 91918] arguments parsed: {program: /usr/local/Cellar/bear/3.0.13_2/bin/intercept, arguments: [{--: [make, -n]}, {--library: [/usr/local/Cellar/bear/3.0.13_2/libexec/bear/libexec.dylib]}, {--output: [compile_commands.db]}, {--verbose: []}, {--wrapper: [/usr/local/Cellar/bear/3.0.13_2/libexec/bear/wrapper]}, {--wrapper-dir: [/usr/local/Cellar/bear/3.0.13_2/libexec/bear/wrapper.d]}]}
[22:43:43.758608, ic, 91918] session initialized with: wrapper_dir: /usr/local/Cellar/bear/3.0.13_2/libexec/bear/wrapper.d
[22:43:43.758648, ic, 91918] session initialized with: mapping: [{ "ar": "/usr/bin/ar" }, { "as": "/usr/bin/as" }, { "bison": "/usr/bin/bison" }, { "c++": "/usr/local/bin/clang++" }, { "cc": "/usr/local/bin/clang" }, { "clang": "/usr/local/bin/clang" }, { "clang++": "/usr/local/bin/clang++" }, { "cpp": "/usr/bin/cpp" }, { "flex": "/usr/bin/flex" }, { "g++": "/usr/bin/g++" }, { "gcc": "/usr/bin/gcc" }, { "ld": "/usr/bin/ld" }, { "lex": "/usr/bin/lex" }, { "makeinfo": "/usr/bin/makeinfo" }, { "nm": "/usr/bin/nm" }, { "objdump": "/usr/bin/objdump" }, { "ranlib": "/usr/bin/ranlib" }, { "strip": "/usr/bin/strip" }, { "yacc": "/usr/bin/yacc" }]
[22:43:43.758655, ic, 91918] session initialized with: override: [{ "CC": "cc" }, { "CXX": "c++" }]
[22:43:43.760264, ic, 91918] Running gRPC server. 127.0.0.1:62330
[22:43:43.765870, ic, 91918] Process spawned. [pid: 91919, command: [make, -n]]
[22:43:43.766098, ic, 91918] Process wait requested. [pid: 91919]
/Library/Developer/CommandLineTools/usr/bin/make -f objs/Makefile
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs \
        -o objs/src/os/unix/ngx_darwin_init.o \
        src/os/unix/ngx_darwin_init.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs \
        -o objs/src/event/modules/ngx_kqueue_module.o \
        src/event/modules/ngx_kqueue_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs \
        -o objs/src/os/unix/ngx_darwin_sendfile_chain.o \
        src/os/unix/ngx_darwin_sendfile_chain.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs \
        -o objs/src/core/ngx_regex.o \
        src/core/ngx_regex.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http.o \
        src/http/ngx_http.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http_core_module.o \
        src/http/ngx_http_core_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http_special_response.o \
        src/http/ngx_http_special_response.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http_request.o \
        src/http/ngx_http_request.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http_parse.o \
        src/http/ngx_http_parse.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_log_module.o \
        src/http/modules/ngx_http_log_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http_request_body.o \
        src/http/ngx_http_request_body.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http_variables.o \
        src/http/ngx_http_variables.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http_script.o \
        src/http/ngx_http_script.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http_upstream.o \
        src/http/ngx_http_upstream.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http_upstream_round_robin.o \
        src/http/ngx_http_upstream_round_robin.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http_file_cache.o \
        src/http/ngx_http_file_cache.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http_write_filter_module.o \
        src/http/ngx_http_write_filter_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http_header_filter_module.o \
        src/http/ngx_http_header_filter_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_chunked_filter_module.o \
        src/http/modules/ngx_http_chunked_filter_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_range_filter_module.o \
        src/http/modules/ngx_http_range_filter_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_gzip_filter_module.o \
        src/http/modules/ngx_http_gzip_filter_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http_postpone_filter_module.o \
        src/http/ngx_http_postpone_filter_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_ssi_filter_module.o \
        src/http/modules/ngx_http_ssi_filter_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_charset_filter_module.o \
        src/http/modules/ngx_http_charset_filter_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_userid_filter_module.o \
        src/http/modules/ngx_http_userid_filter_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_headers_filter_module.o \
        src/http/modules/ngx_http_headers_filter_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/ngx_http_copy_filter_module.o \
        src/http/ngx_http_copy_filter_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_not_modified_filter_module.o \
        src/http/modules/ngx_http_not_modified_filter_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_static_module.o \
        src/http/modules/ngx_http_static_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_autoindex_module.o \
        src/http/modules/ngx_http_autoindex_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_index_module.o \
        src/http/modules/ngx_http_index_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_mirror_module.o \
        src/http/modules/ngx_http_mirror_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_try_files_module.o \
        src/http/modules/ngx_http_try_files_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_auth_basic_module.o \
        src/http/modules/ngx_http_auth_basic_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_access_module.o \
        src/http/modules/ngx_http_access_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_limit_conn_module.o \
        src/http/modules/ngx_http_limit_conn_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_limit_req_module.o \
        src/http/modules/ngx_http_limit_req_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_geo_module.o \
        src/http/modules/ngx_http_geo_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_map_module.o \
        src/http/modules/ngx_http_map_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_split_clients_module.o \
        src/http/modules/ngx_http_split_clients_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_referer_module.o \
        src/http/modules/ngx_http_referer_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_rewrite_module.o \
        src/http/modules/ngx_http_rewrite_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_proxy_module.o \
        src/http/modules/ngx_http_proxy_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_fastcgi_module.o \
        src/http/modules/ngx_http_fastcgi_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_uwsgi_module.o \
        src/http/modules/ngx_http_uwsgi_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_scgi_module.o \
        src/http/modules/ngx_http_scgi_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_memcached_module.o \
        src/http/modules/ngx_http_memcached_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_empty_gif_module.o \
        src/http/modules/ngx_http_empty_gif_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_browser_module.o \
        src/http/modules/ngx_http_browser_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_upstream_hash_module.o \
        src/http/modules/ngx_http_upstream_hash_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_upstream_ip_hash_module.o \
        src/http/modules/ngx_http_upstream_ip_hash_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_upstream_least_conn_module.o \
        src/http/modules/ngx_http_upstream_least_conn_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_upstream_random_module.o \
        src/http/modules/ngx_http_upstream_random_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_upstream_keepalive_module.o \
        src/http/modules/ngx_http_upstream_keepalive_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs -I src/http -I src/http/modules \
        -o objs/src/http/modules/ngx_http_upstream_zone_module.o \
        src/http/modules/ngx_http_upstream_zone_module.c
/usr/local/bin/clang -c -pipe  -O -Wall -Wextra -Wpointer-arith -Wconditional-uninitialized -Wno-unused-parameter -Wno-deprecated-declarations -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I /usr/local/include -I objs \
        -o objs/ngx_modules.o \
        objs/ngx_modules.c
/usr/local/bin/clang -o objs/nginx \
    objs/src/core/nginx.o \
    objs/src/core/ngx_log.o \
    objs/src/core/ngx_palloc.o \
    objs/src/core/ngx_array.o \
    objs/src/core/ngx_list.o \
    objs/src/core/ngx_hash.o \
    objs/src/core/ngx_buf.o \
    objs/src/core/ngx_queue.o \
    objs/src/core/ngx_output_chain.o \
    objs/src/core/ngx_string.o \
    objs/src/core/ngx_parse.o \
    objs/src/core/ngx_parse_time.o \
    objs/src/core/ngx_inet.o \
    objs/src/core/ngx_file.o \
    objs/src/core/ngx_crc32.o \
    objs/src/core/ngx_murmurhash.o \
    objs/src/core/ngx_md5.o \
    objs/src/core/ngx_sha1.o \
    objs/src/core/ngx_rbtree.o \
    objs/src/core/ngx_radix_tree.o \
    objs/src/core/ngx_slab.o \
    objs/src/core/ngx_times.o \
    objs/src/core/ngx_shmtx.o \
    objs/src/core/ngx_connection.o \
    objs/src/core/ngx_cycle.o \
    objs/src/core/ngx_spinlock.o \
    objs/src/core/ngx_rwlock.o \
    objs/src/core/ngx_cpuinfo.o \
    objs/src/core/ngx_conf_file.o \
    objs/src/core/ngx_module.o \
    objs/src/core/ngx_resolver.o \
    objs/src/core/ngx_open_file_cache.o \
    objs/src/core/ngx_crypt.o \
    objs/src/core/ngx_proxy_protocol.o \
    objs/src/core/ngx_syslog.o \
    objs/src/event/ngx_event.o \
    objs/src/event/ngx_event_timer.o \
    objs/src/event/ngx_event_posted.o \
    objs/src/event/ngx_event_accept.o \
    objs/src/event/ngx_event_udp.o \
    objs/src/event/ngx_event_connect.o \
    objs/src/event/ngx_event_pipe.o \
    objs/src/os/unix/ngx_time.o \
    objs/src/os/unix/ngx_errno.o \
    objs/src/os/unix/ngx_alloc.o \
    objs/src/os/unix/ngx_files.o \
    objs/src/os/unix/ngx_socket.o \
    objs/src/os/unix/ngx_recv.o \
    objs/src/os/unix/ngx_readv_chain.o \
    objs/src/os/unix/ngx_udp_recv.o \
    objs/src/os/unix/ngx_send.o \
    objs/src/os/unix/ngx_writev_chain.o \
    objs/src/os/unix/ngx_udp_send.o \
    objs/src/os/unix/ngx_udp_sendmsg_chain.o \
    objs/src/os/unix/ngx_channel.o \
    objs/src/os/unix/ngx_shmem.o \
    objs/src/os/unix/ngx_process.o \
    objs/src/os/unix/ngx_daemon.o \
    objs/src/os/unix/ngx_setaffinity.o \
    objs/src/os/unix/ngx_setproctitle.o \
    objs/src/os/unix/ngx_posix_init.o \
    objs/src/os/unix/ngx_user.o \
    objs/src/os/unix/ngx_dlopen.o \
    objs/src/os/unix/ngx_process_cycle.o \
    objs/src/os/unix/ngx_darwin_init.o \
    objs/src/event/modules/ngx_kqueue_module.o \
    objs/src/os/unix/ngx_darwin_sendfile_chain.o \
    objs/src/core/ngx_regex.o \
    objs/src/http/ngx_http.o \
    objs/src/http/ngx_http_core_module.o \
    objs/src/http/ngx_http_special_response.o \
    objs/src/http/ngx_http_request.o \
    objs/src/http/ngx_http_parse.o \
    objs/src/http/modules/ngx_http_log_module.o \
    objs/src/http/ngx_http_request_body.o \
    objs/src/http/ngx_http_variables.o \
    objs/src/http/ngx_http_script.o \
    objs/src/http/ngx_http_upstream.o \
    objs/src/http/ngx_http_upstream_round_robin.o \
    objs/src/http/ngx_http_file_cache.o \
    objs/src/http/ngx_http_write_filter_module.o \
    objs/src/http/ngx_http_header_filter_module.o \
    objs/src/http/modules/ngx_http_chunked_filter_module.o \
    objs/src/http/modules/ngx_http_range_filter_module.o \
    objs/src/http/modules/ngx_http_gzip_filter_module.o \
    objs/src/http/ngx_http_postpone_filter_module.o \
    objs/src/http/modules/ngx_http_ssi_filter_module.o \
    objs/src/http/modules/ngx_http_charset_filter_module.o \
    objs/src/http/modules/ngx_http_userid_filter_module.o \
    objs/src/http/modules/ngx_http_headers_filter_module.o \
    objs/src/http/ngx_http_copy_filter_module.o \
    objs/src/http/modules/ngx_http_not_modified_filter_module.o \
    objs/src/http/modules/ngx_http_static_module.o \
    objs/src/http/modules/ngx_http_autoindex_module.o \
    objs/src/http/modules/ngx_http_index_module.o \
    objs/src/http/modules/ngx_http_mirror_module.o \
    objs/src/http/modules/ngx_http_try_files_module.o \
    objs/src/http/modules/ngx_http_auth_basic_module.o \
    objs/src/http/modules/ngx_http_access_module.o \
    objs/src/http/modules/ngx_http_limit_conn_module.o \
    objs/src/http/modules/ngx_http_limit_req_module.o \
    objs/src/http/modules/ngx_http_geo_module.o \
    objs/src/http/modules/ngx_http_map_module.o \
    objs/src/http/modules/ngx_http_split_clients_module.o \
    objs/src/http/modules/ngx_http_referer_module.o \
    objs/src/http/modules/ngx_http_rewrite_module.o \
    objs/src/http/modules/ngx_http_proxy_module.o \
    objs/src/http/modules/ngx_http_fastcgi_module.o \
    objs/src/http/modules/ngx_http_uwsgi_module.o \
    objs/src/http/modules/ngx_http_scgi_module.o \
    objs/src/http/modules/ngx_http_memcached_module.o \
    objs/src/http/modules/ngx_http_empty_gif_module.o \
    objs/src/http/modules/ngx_http_browser_module.o \
    objs/src/http/modules/ngx_http_upstream_hash_module.o \
    objs/src/http/modules/ngx_http_upstream_ip_hash_module.o \
    objs/src/http/modules/ngx_http_upstream_least_conn_module.o \
    objs/src/http/modules/ngx_http_upstream_random_module.o \
    objs/src/http/modules/ngx_http_upstream_keepalive_module.o \
    objs/src/http/modules/ngx_http_upstream_zone_module.o \
    objs/ngx_modules.o \
    -L/usr/local/lib -lpcre -lz
sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
        -e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
        -e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
        -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
        < man/nginx.8 > objs/nginx.8
[22:43:43.844449, ic, 91918] Process wait request: done. [pid: 91919]
[22:43:43.845516, ic, 91918] Running command. [Exited with 0]
[22:43:43.845540, ic, 91918] Stopping gRPC server.
[22:43:43.846140, ic, 91918] succeeded with: 0
[22:43:43.847112, br, 91917] Process wait request: done. [pid: 91918]
[22:43:43.847154, br, 91917] Running intercept finished. [Exited with 0]
[22:43:43.850651, br, 91917] Process spawned. [pid: 91921, command: [/usr/local/Cellar/bear/3.0.13_2/bin/citnames, --input, compile_commands.db, --output, compile_commands.json, --run-checks, --verbose]]
[22:43:43.850716, br, 91917] Process wait requested. [pid: 91921]
[22:43:43.880000, cs, 91921] citnames: 3.0.13
[22:43:43.880444, cs, 91921] arguments: ["/usr/local/Cellar/bear/3.0.13_2/bin/citnames", "--input", "compile_commands.db", "--output", "compile_commands.json", "--run-checks", "--verbose"]
[22:43:43.880487, cs, 91921] environment: ["CC=/usr/local/bin/clang", "CXX=/usr/local/bin/clang++", "DISPLAY=:0", "GOPATH=/Users/zheng/.go", "GRADLE_HOME=/Volumes/Transcend/gradle", "GRADLE_USER_HOME=/Volumes/Transcend/gradle/.gradle", "HOME=/Users/zheng", "HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles/bottles", "JAVA_HOME=/Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home", "LANG=en_US.UTF-8", "LC_ALL=en_US.UTF-8", "LC_CTYPE=UTF-8", "LESS=-R", "LOGNAME=zheng", "LSCOLORS=Gxfxcxdxbxegedabagacad", "LaunchInstanceID=1F6A61C3-5435-49AF-8B0C-944EB62CE5D0", "MAVEN_REPOSITORY=/Users/zheng/.m2/repository", "OLDPWD=/Users/zheng", "PAGER=less", "PATH=/usr/local/opt/llvm/bin:/Volumes/Transcend/gradle/bin:/usr/local/opt/openssl@1.1/bin:/Users/zheng/bin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin", "PWD=/Volumes/Transcend/nginx-1.21.1", "SECURITYSESSIONID=186a6", "SHELL=/bin/zsh", "SHLVL=1", "SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.MTm2R5xHj9/Listeners", "TERM=xterm-256color", "TERM_PROGRAM=Apple_Terminal", "TERM_PROGRAM_VERSION=440", "TERM_SESSION_ID=958BEB66-7413-4E30-AA25-1DB992245768", "TMPDIR=/var/folders/fr/qvhwsw9x6b5b3qbr2kn8w99m0000gn/T/", "USER=zheng", "XPC_FLAGS=0x0", "XPC_SERVICE_NAME=0", "ZSH=/Users/zheng/.oh-my-zsh", "_=/usr/local/bin/bear", "__CFBundleIdentifier=com.apple.Terminal"]
[22:43:43.880652, cs, 91921] sysname: Darwin
[22:43:43.880660, cs, 91921] release: 20.1.0
[22:43:43.880662, cs, 91921] version: Darwin Kernel Version 20.1.0: Sat Oct 31 00:07:11 PDT 2020; root:xnu-7195.50.7~2/RELEASE_X86_64
[22:43:43.880665, cs, 91921] machine: x86_64
[22:43:43.880684, cs, 91921] arguments parsed: {program: /usr/local/Cellar/bear/3.0.13_2/bin/citnames, arguments: [{--input: [compile_commands.db]}, {--output: [compile_commands.json]}, {--run-checks: []}, {--verbose: []}]}
[22:43:43.882188, cs, 91921] Configuration: {"compilation":{"compilers_to_recognize":[{"executable":"/usr/local/bin/clang"},{"executable":"/usr/local/bin/clang++"}]},"output":{"content":{"include_only_existing_source":true},"format":{"command_as_array":true,"drop_output_field":false}}}
[22:43:43.882380, cs, 91921] compilation entries created. [size: 0]
[22:43:43.882394, cs, 91921] compilation entries to output. [size: 0]
[22:43:43.882897, cs, 91921] compilation entries written. [size: 0]
[22:43:43.882952, cs, 91921] succeeded with: 0
[22:43:43.884252, br, 91917] Process wait request: done. [pid: 91921]
[22:43:43.884320, br, 91917] Running citnames finished. [Exited with 0]
[22:43:43.884479, br, 91917] succeeded with: 0

intercept -- make -n will generate empty events.db

CC=/usr/local/bin/clang
CXX=/usr/local/bin/clang++

Clang Version:12.0.1

rizsotto commented 3 years ago

Thanks @MCMocoder to come back... From the logs it clear that the intercept does not capture the compiler calls. Does Nginx project have a configure step? If yes, run that step with Bear too. (The configure step is when the build system determine which compiler it will use, so we need to influence that. During the make run, it will use the compilers it recognized from the configure step and ignore the CC, CXX environments.)

MCMocoder commented 3 years ago

It successfully generated compile_commands.json when executing bear -- make after executing bear -- ./configure. But it failed to generate compile_commands.json when executing bear -- make -n

rizsotto commented 3 years ago

This is from linux's man make:

  -n, --just-print, --dry-run, --recon
     Print the commands that would be executed, but do not execute them (except in certain circumstances).

Bear can only create the compilation database, if the build executes the compiler. This limitation of Bear is documented in the intercept man page.

I'm closing this ticket now.