# git rev-parse -q --verify 44028378399f0b16ba5158dc7645cd577b89455d^{commit} 44028378399f0b16ba5158dc7645cd577b89455d already have revision, skipping fetch # git checkout -q -f -B kisskb 44028378399f0b16ba5158dc7645cd577b89455d # git clean -qxdf # < git log -1 # commit 44028378399f0b16ba5158dc7645cd577b89455d # Author: Jialu Xu # Date: Sun Dec 10 15:05:34 2023 +0800 # # gen_compile_commands.py: fix path resolve with symlinks in it # # When a path contains relative symbolic links, os.path.abspath() might # not follow the symlinks and instead return the absolute path with just # the relative paths resolved, resulting in an incorrect path. # # 1. Say "drivers/hdf/" has some symlinks: # # # ls -l drivers/hdf/ # total 364 # drwxrwxr-x 2 ... 4096 ... evdev # lrwxrwxrwx 1 ... 44 ... framework -> ../../../../../../drivers/hdf_core/framework # -rw-rw-r-- 1 ... 359010 ... hdf_macro_test.h # lrwxrwxrwx 1 ... 55 ... inner_api -> ../../../../../../drivers/hdf_core/interfaces/inner_api # lrwxrwxrwx 1 ... 53 ... khdf -> ../../../../../../drivers/hdf_core/adapter/khdf/linux # -rw-r--r-- 1 ... 74 ... Makefile # drwxrwxr-x 3 ... 4096 ... wifi # # 2. One .cmd file records that: # # # head -1 ./framework/core/manager/src/.devmgr_service.o.cmd # cmd_drivers/hdf/khdf/manager/../../../../framework/core/manager/src/devmgr_service.o := ... \ # /path/to/src/drivers/hdf/khdf/manager/../../../../framework/core/manager/src/devmgr_service.c # # 3. os.path.abspath returns "/path/to/src/framework/core/manager/src/devmgr_service.c", not correct: # # # ./scripts/clang-tools/gen_compile_commands.py # INFO: Could not add line from ./framework/core/manager/src/.devmgr_service.o.cmd: File \ # /path/to/src/framework/core/manager/src/devmgr_service.c not found # # Use os.path.realpath(), which resolves the symlinks and normalizes the paths correctly. # # # cat compile_commands.json # ... # { # "command": ... # "directory": ... # "file": "/path/to/bla/drivers/hdf_core/framework/core/manager/src/devmgr_service.c" # }, # ... # # Also fix it in parse_arguments(). # # Signed-off-by: Jialu Xu # Signed-off-by: Masahiro Yamada # < /opt/cross/kisskb/korg/gcc-13.1.0-nolibc/x86_64-linux/bin/x86_64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-13.1.0-nolibc/x86_64-linux/bin/x86_64-linux-ld --version # < git log --format=%s --max-count=1 44028378399f0b16ba5158dc7645cd577b89455d # make -s -j 24 ARCH=x86 O=/kisskb/build/kbuild_allmodconfig_x86_64-gcc13 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-13.1.0-nolibc/x86_64-linux/bin/x86_64-linux- allmodconfig # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # Added to kconfig CONFIG_SAMPLES=n # Added to kconfig CONFIG_GCC_PLUGINS=n # Added to kconfig # < make -s -j 24 ARCH=x86 O=/kisskb/build/kbuild_allmodconfig_x86_64-gcc13 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-13.1.0-nolibc/x86_64-linux/bin/x86_64-linux- help # make -s -j 24 ARCH=x86 O=/kisskb/build/kbuild_allmodconfig_x86_64-gcc13 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-13.1.0-nolibc/x86_64-linux/bin/x86_64-linux- olddefconfig # make -s -j 24 ARCH=x86 O=/kisskb/build/kbuild_allmodconfig_x86_64-gcc13 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-13.1.0-nolibc/x86_64-linux/bin/x86_64-linux- Completed OK # rm -rf /kisskb/build/kbuild_allmodconfig_x86_64-gcc13 # Build took: 1:04:28.308402