SwingURM opened a new pull request, #60752:
URL: https://github.com/apache/doris/pull/60752
### What problem does this PR solve?
Issue Number: close #xxx
Related PR: #xxx
Problem Summary:
When compiling hyperscan, the container's behavior is to give up compiling
hscollider because it cannot find pcre.
```
[ ~]# pkg-config --exists libpcre && echo "success"
[ ~]# env | grep PKG
PKG_CONFIG_PATH=/root/doris/thirdparty/installed/lib64/pkgconfig
```
On my local machine, PKG_CONFIG_PATH (which is set in the script) does not
prevent pkg-config from searching system libs. Thus, CMake's pkg_check_modules
finds pcre and tries to compile hscollider, but fails due to mixing system's
libc (linker errors).
```
~/ldb_toolchain/bin via v3.14.2
❯ ./pkg-config --exists libpcre && echo "find pcre"
find pcre
~/ldb_toolchain/bin via v3.14.2
❯ env | grep PKG
PKG_CONFIG_PATH=/home/iamswing/doris/thirdparty/installed/lib64/pkgconfig
```
However, on my local machine,
Error:
```
src/hyperscan-5.4.2/doris_build on master [!?] via v15.2.1-gcc via
v4.2.3
❯ /home/iamswing/ldb_toolchain/bin/clang++ -D_HAS_AUTO_PTR_ETC=0 -O2
-std=c++11 -Wall -Wextra -Wshadow -Wswitch -Wreturn-type -Wcast-qual
-Wno-deprecated -Wnon-virtual-dtor -fno-strict-aliasing -DNDEBUG
-fno-omit-frame-pointer -fvisibility=hidden -Wvla -Wpointer-arith
-Wno-self-assign -Wno-unused-const-variable -Wno-unused-but-set-variable
-Wno-bitwise-instead-of-logical -Wno-ignored-attributes -Wno-redundant-move
-Wweak-vtables -Wmissing-declarations -g -DNDEBUG
tools/hscollider/CMakeFiles/hscollider.dir/Corpora.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/FileCorpora.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/ColliderCorporaParser.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/NfaGeneratedCorpora.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/GraphTruth.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/GroundTruth.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/UltimateTruth.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/args.cpp.o tools/hscollider/CMakeFil
es/hscollider.dir/limit.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/pcre_util.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/sig.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/Thread.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/main.cpp.o -o bin/hscollider
lib/libhs.a -L/usr/lib -lpcre lib/libdatabaseutil.a lib/libexpressionutil.a
lib/libcorpusomatic.a lib/libcrosscompileutil.a -lpthread -rdynamic -v
clang version 20.1.7
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /home/iamswing/ldb_toolchain/tmp/gentoo/llvm/bin
System configuration file directory:
/home/iamswing/ldb_toolchain/bin/../etc/clang
User configuration file directory: /home/iamswing/.config/clang
Selected GCC installation:
/home/iamswing/ldb_toolchain/bin/../lib/gcc/x86_64-pc-linux-gnu/15
Candidate multilib: .;@m64
Selected multilib: .;@m64
"/home/iamswing/ldb_toolchain/bin/x86_64-pc-linux-gnu-ld"
--sysroot=/home/iamswing/ldb_toolchain/bin/.. --hash-style=gnu --eh-frame-hdr
-m elf_x86_64 -export-dynamic -pie -dynamic-linker /lib64/ld-linux-x86-64.so.2
-o bin/hscollider /home/iamswing/ldb_toolchain/bin/../usr/lib/Scrt1.o
/home/iamswing/ldb_toolchain/bin/../usr/lib/crti.o
/home/iamswing/ldb_toolchain/bin/../lib/gcc/x86_64-pc-linux-gnu/15/crtbeginS.o
-L/usr/lib -L/home/iamswing/ldb_toolchain/bin/../lib/gcc/x86_64-pc-linux-gnu/15
-L/home/iamswing/ldb_toolchain/bin/../lib
-L/home/iamswing/ldb_toolchain/bin/../usr/lib
tools/hscollider/CMakeFiles/hscollider.dir/Corpora.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/FileCorpora.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/ColliderCorporaParser.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/NfaGeneratedCorpora.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/GraphTruth.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/GroundTruth.cpp.o
tools/hscollider/CMakeFiles/hsc
ollider.dir/UltimateTruth.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/args.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/limit.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/pcre_util.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/sig.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/Thread.cpp.o
tools/hscollider/CMakeFiles/hscollider.dir/main.cpp.o lib/libhs.a -lpcre
lib/libdatabaseutil.a lib/libexpressionutil.a lib/libcorpusomatic.a
lib/libcrosscompileutil.a -lpthread -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s
-lgcc
/home/iamswing/ldb_toolchain/bin/../lib/gcc/x86_64-pc-linux-gnu/15/crtendS.o
/home/iamswing/ldb_toolchain/bin/../usr/lib/crtn.o
x86_64-pc-linux-gnu-ld: error: undefined symbol: __libc_csu_fini
>>> referenced by
/home/iamswing/ldb_toolchain/bin/../usr/lib/Scrt1.o:(_start)
x86_64-pc-linux-gnu-ld: error: undefined symbol: __libc_csu_init
>>> referenced by
/home/iamswing/ldb_toolchain/bin/../usr/lib/Scrt1.o:(_start)
clang++: error: linker command failed with exit code 1 (use -v to see
invocation)
```
Solution
Use PKG_CONFIG_LIBDIR instead of PKG_CONFIG_PATH. PKG_CONFIG_PATH appends to
the default search path, causing CMake to find the system's pcre. Using
PKG_CONFIG_LIBDIR overrides the default search path and only searches in the
specified directory. All relevant .pc files are present in this path.
Modifying CMake's related variables may also solve this problem.
### Release note
None
### Check List (For Author)
- Test <!-- At least one of them must be included. -->
- [ ] Regression test
- [ ] Unit Test
- [☑️] Manual test (add detailed scripts or steps below)
- [ ] No need to test or manual test. Explain why:
- [ ] This is a refactor/code format and no logic has been changed.
- [ ] Previous test can cover this change.
- [ ] No code files have been changed.
- [ ] Other reason <!-- Add your reason? -->
- Behavior changed:
- [☑️] No.
- [ ] Yes. <!-- Explain the behavior change -->
- Does this need documentation?
- [☑️] No.
- [ ] Yes. <!-- Add document PR link here. eg:
https://github.com/apache/doris-website/pull/1214 -->
### Check List (For Reviewer who merge this PR)
- [ ] Confirm the release note
- [ ] Confirm test cases
- [ ] Confirm document
- [ ] Add branch pick label <!-- Add branch pick label that this PR should
merge into -->
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]