Сценарий настройки для Git 2.27.0 не находит libpcre2 автоматически - PullRequest
1 голос
/ 19 июня 2020

Я пытаюсь собрать Git 2.27.0 из исходников с поддержкой PCRE2 (для --perl-regexp вариант от до git log). Однако сценарий настройки для Git не находит файлы из libpcre2, если я не укажу ему путь явно. Кто-нибудь может сказать почему? Есть ли что-то, что я должен изменить, чтобы сценарий configure мог автоматически определять libpcre2? Я выполнил следующие команды, показанные с частичным выводом:

$ git clone https://github.com/git/git.git git-from-source
...
$ cd git-from-source
...
$ git checkout v2.27.0
...
HEAD is now at b3d7a52fac Git 2.27
$ make configure
GIT_VERSION = 2.27.0
    GEN configure
$ ./configure --help
...
  --with-libpcre2         support Perl-compatible regexes via libpcre2
                          (default is NO)
                          ARG can be also prefix for libpcre library and
                          headers
...
$ ./configure --with-libpcre2 | grep -i pcre
checking for pcre2_config_8 in -lpcre2-8... no
$ make -j $(nproc)
...
$ ( cd t; sh t4202-log.sh | grep -i pcre )
...
ok 32 # skip log -F -E --perl-regexp --grep=<pcre> uses PCRE (missing PCRE)
$ bin-wrappers/git log --perl-regexp --grep '^\w' -n 1
fatal: cannot use Perl-compatible regexes when not compiled with USE_LIBPCRE

Насколько я могу судить, моя среда настроена таким образом, что Git должен найти libpcre2:

$ pkg-config --cflags libpcre2-8
-I/custom_path/usr/include  
$ pcre2-config --cflags
-I/custom_path/usr/include  
$ pkg-config --libs libpcre2-8
-L/custom_path/usr/lib -lpcre2-8
$ pcre2-config --libs8
-L/custom_path/usr/lib -lpcre2-8
$ pcre2-config --version
10.35
$ ls -1 /custom_path/usr/include/*pcre*
/custom_path/usr/include/pcre2.h
/custom_path/usr/include/pcre2posix.h
$ ls -1 /custom_path/usr/lib/*pcre*
/custom_path/usr/lib/libpcre2-8.a
/custom_path/usr/lib/libpcre2-8.la
/custom_path/usr/lib/libpcre2-8.so
/custom_path/usr/lib/libpcre2-8.so.0
/custom_path/usr/lib/libpcre2-8.so.0.10.0
/custom_path/usr/lib/libpcre2-posix.a
/custom_path/usr/lib/libpcre2-posix.la
/custom_path/usr/lib/libpcre2-posix.so
/custom_path/usr/lib/libpcre2-posix.so.2
/custom_path/usr/lib/libpcre2-posix.so.2.0.3

(custom_path обозначает совершенно нормальный, но нестандартный каталог, точный путь которого я скрыл из соображений конфиденциальности)

Подробности: обнаружение вручную

Если я полностью очищаю каталог сборки и повторяю описанную выше процедуру, за исключением того, что я передаю путь к libpcre2 в качестве аргумента для --with-pcre2, тогда все работает нормально:

$ git clean -xdf .
...
$ make configure
GIT_VERSION = 2.27.0
    GEN configure
$ ./configure --with-libpcre2=/custom_path/usr | grep -i pcre
checking for pcre2_config_8 in -lpcre2-8... yes
$ make -j $(nproc)
...
$ ( cd t; sh t4202-log.sh | grep -i pcre )
...
ok 32 - log -F -E --perl-regexp --grep=<pcre> uses PCRE
$ bin-wrappers/git log --perl-regexp --grep '^\w' -n 1
commit b3d7a52fac39193503a0b6728771d1bf6a161464 (HEAD, tag: v2.27.0)
Author: Junio C Hamano <gitster@pobox.com>
Date:   Sun May 31 23:03:57 2020

    Git 2.27

    Signed-off-by: Junio C Hamano <gitster@pobox.com>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...