{"thread":{"id":"62698","subject":"[PATCH 0/3] t: fix tests with NO_GITWEB=YesPlease","startedAt":"2024-12-27T12:10:53Z","lastAt":"2024-12-27T12:10:55Z","messageCount":4,"participants":["Patrick Steinhardt"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"509603","messageId":"20241227-b4-pks-meson-wo-gitweb-v1-0-14ca8515bb3b@pks.im","threadId":"62698","inReplyTo":null,"subject":"[PATCH 0/3] t: fix tests with NO_GITWEB=YesPlease","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2024-12-27T12:10:16Z","receivedAt":"2024-12-27T12:10:53Z","isPatch":true,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"Hi,\n\nthis small patch series fixes an issue in case tests are executed for a\nGit distribution built with NO_GITWEB=YesPlease. The issue exists for a\nlong time already, but I discovered it due to an issue with Meson where\nwe accidentally didn't build gitweb when its availability is being\nauto-discovered.\n\nThanks!\n\nPatrick\n\n---\nPatrick Steinhardt (3):\n      GIT-BUILD-OPTIONS: sort variables alphabetically\n      GIT-BUILD-OPTIONS: wire up NO_GITWEB option\n      meson: enable auto-discovered \"gitweb\"\n\n GIT-BUILD-OPTIONS.in                | 71 +++++++++++++++++++------------------\n Makefile                            | 71 +++++++++++++++++++------------------\n contrib/buildsystems/CMakeLists.txt | 71 +++++++++++++++++++------------------\n meson.build                         | 63 ++++++++++++++++----------------\n t/lib-gitweb.sh                     |  5 +++\n t/test-lib.sh                       |  1 +\n 6 files changed, 147 insertions(+), 135 deletions(-)\n\n\n---\nbase-commit: 76cf4f61c87855ebf0784b88aaf737d6b09f504b\nchange-id: 20241227-b4-pks-meson-wo-gitweb-b0e27379dcc6\n\n"},{"id":"509604","messageId":"20241227-b4-pks-meson-wo-gitweb-v1-2-14ca8515bb3b@pks.im","threadId":"62698","inReplyTo":"20241227-b4-pks-meson-wo-gitweb-v1-0-14ca8515bb3b@pks.im","subject":"[PATCH 2/3] GIT-BUILD-OPTIONS: wire up NO_GITWEB option","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2024-12-27T12:10:18Z","receivedAt":"2024-12-27T12:10:54Z","isPatch":true,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"Building our \"gitweb\" interface is optional in our Makefile and in Meson\nand not wired up at all with CMake, but disabling it causes a couple of\ntests in the t950* range that pull in \"t/lib-gitweb.sh\". This is because\nthe test library knows to execute gitweb-tests based on whether or not\nPerl is available, but we may have Perl available and still end up not\nbuilding gitweb e.g. with `make test NO_GITWEB=YesPlease`.\n\nFix this issue by wiring up a new \"NO_GITWEB\" build option so that we\ncan skip these tests in case gitweb is not built.\n\nNote that this new build option requires us to move the configuration of\nGIT-BUILD-OPTIONS to a later point in our Meson build instructions. But\nas that file is only consumed by our tests at runtime this change does\nnot cause any issues.\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\n---\n GIT-BUILD-OPTIONS.in                |  1 +\n Makefile                            |  1 +\n contrib/buildsystems/CMakeLists.txt |  1 +\n meson.build                         | 59 +++++++++++++++++++------------------\n t/lib-gitweb.sh                     |  5 ++++\n t/test-lib.sh                       |  1 +\n 6 files changed, 40 insertions(+), 28 deletions(-)\n\ndiff --git a/GIT-BUILD-OPTIONS.in b/GIT-BUILD-OPTIONS.in\nindex 162cc391903c911383fb0fb358589b4cee4b64aa..edff75ae16be90e21a0e9fc5df16a6605439f907 100644\n--- a/GIT-BUILD-OPTIONS.in\n+++ b/GIT-BUILD-OPTIONS.in\n@@ -24,6 +24,7 @@ LOCALEDIR=@LOCALEDIR@\n NO_CURL=@NO_CURL@\n NO_EXPAT=@NO_EXPAT@\n NO_GETTEXT=@NO_GETTEXT@\n+NO_GITWEB=@NO_GITWEB@\n NO_ICONV=@NO_ICONV@\n NO_PERL=@NO_PERL@\n NO_PERL_CPAN_FALLBACKS=@NO_PERL_CPAN_FALLBACKS@\ndiff --git a/Makefile b/Makefile\nindex f80e70702fcd8df884c7634344cc4ae23d2cb605..97e8385b6643b963c54affb3ae621fc93fad28b5 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -3171,6 +3171,7 @@ GIT-BUILD-OPTIONS: FORCE\n \t\t-e \"s|@NO_CURL@|\\'$(NO_CURL)\\'|\" \\\n \t\t-e \"s|@NO_EXPAT@|\\'$(NO_EXPAT)\\'|\" \\\n \t\t-e \"s|@NO_GETTEXT@|\\'$(NO_GETTEXT)\\'|\" \\\n+\t\t-e \"s|@NO_GITWEB@|\\'$(NO_GITWEB)\\'|\" \\\n \t\t-e \"s|@NO_ICONV@|\\'$(NO_ICONV)\\'|\" \\\n \t\t-e \"s|@NO_PERL@|\\'$(NO_PERL)\\'|\" \\\n \t\t-e \"s|@NO_PERL_CPAN_FALLBACKS@|\\'$(NO_PERL_CPAN_FALLBACKS_SQ)\\'|\" \\\ndiff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt\nindex f45407b060221bf900fd0a19a315f0d0dce23147..10dc54fdcb647bbeeffb4eff6f18d10337b49873 100644\n--- a/contrib/buildsystems/CMakeLists.txt\n+++ b/contrib/buildsystems/CMakeLists.txt\n@@ -1184,6 +1184,7 @@ string(REPLACE \"@LOCALEDIR@\" \"'${LOCALEDIR}'\" git_build_options \"${git_build_opt\n string(REPLACE \"@NO_CURL@\" \"${NO_CURL}\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@NO_EXPAT@\" \"${NO_EXPAT}\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@NO_GETTEXT@\" \"${NO_GETTEXT}\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@NO_GITWEB@\" \"1\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@NO_ICONV@\" \"${NO_ICONV}\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@NO_PERL@\" \"${NO_PERL}\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@NO_PERL_CPAN_FALLBACKS@\" \"\" git_build_options \"${git_build_options}\")\ndiff --git a/meson.build b/meson.build\nindex a0654a3f244adc19db434e01ca6b3709fb8ff8af..3e57793862e5fc15685b5f0fac7f7223af7bef1f 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1456,34 +1456,6 @@ else\n   build_options_config.set('RUNTIME_PREFIX', 'false')\n endif\n \n-foreach key, value : {\n-  'DIFF': diff.full_path(),\n-  'GIT_TEST_CMP': diff.full_path() + ' -u',\n-  'GIT_TEST_GITPERLLIB': meson.project_build_root() / 'perl',\n-  'GIT_TEST_MERGE_TOOLS_DIR': meson.project_source_root() / 'mergetools',\n-  'GIT_TEST_POPATH': meson.project_source_root() / 'po',\n-  'GIT_TEST_TEMPLATE_DIR': meson.project_build_root() / 'templates',\n-  'GIT_TEST_TEXTDOMAINDIR': meson.project_build_root() / 'po',\n-  'PAGER_ENV': get_option('pager_environment'),\n-  'PERL_PATH': perl.found() ? perl.full_path() : '',\n-  'PYTHON_PATH': python.found () ? python.full_path() : '',\n-  'SHELL_PATH': shell.full_path(),\n-  'TAR': tar.full_path(),\n-  'TEST_OUTPUT_DIRECTORY': test_output_directory,\n-  'TEST_SHELL_PATH': shell.full_path(),\n-}\n-  if value != '' and cygpath.found()\n-    value = run_command(cygpath, value, check: true).stdout().strip()\n-  endif\n-  build_options_config.set_quoted(key, value)\n-endforeach\n-\n-configure_file(\n-  input: 'GIT-BUILD-OPTIONS.in',\n-  output: 'GIT-BUILD-OPTIONS',\n-  configuration: build_options_config,\n-)\n-\n git_version_file = custom_target(\n   command: [\n     shell,\n@@ -1893,6 +1865,9 @@ subdir('contrib')\n gitweb_option = get_option('gitweb').disable_auto_if(not perl.found())\n if gitweb_option.enabled()\n   subdir('gitweb')\n+  build_options_config.set('NO_GITWEB', '')\n+else\n+  build_options_config.set('NO_GITWEB', '1')\n endif\n \n subdir('templates')\n@@ -1909,6 +1884,34 @@ if get_option('docs') != []\n   subdir('Documentation')\n endif\n \n+foreach key, value : {\n+  'DIFF': diff.full_path(),\n+  'GIT_TEST_CMP': diff.full_path() + ' -u',\n+  'GIT_TEST_GITPERLLIB': meson.project_build_root() / 'perl',\n+  'GIT_TEST_MERGE_TOOLS_DIR': meson.project_source_root() / 'mergetools',\n+  'GIT_TEST_POPATH': meson.project_source_root() / 'po',\n+  'GIT_TEST_TEMPLATE_DIR': meson.project_build_root() / 'templates',\n+  'GIT_TEST_TEXTDOMAINDIR': meson.project_build_root() / 'po',\n+  'PAGER_ENV': get_option('pager_environment'),\n+  'PERL_PATH': perl.found() ? perl.full_path() : '',\n+  'PYTHON_PATH': python.found () ? python.full_path() : '',\n+  'SHELL_PATH': shell.full_path(),\n+  'TAR': tar.full_path(),\n+  'TEST_OUTPUT_DIRECTORY': test_output_directory,\n+  'TEST_SHELL_PATH': shell.full_path(),\n+}\n+  if value != '' and cygpath.found()\n+    value = run_command(cygpath, value, check: true).stdout().strip()\n+  endif\n+  build_options_config.set_quoted(key, value)\n+endforeach\n+\n+configure_file(\n+  input: 'GIT-BUILD-OPTIONS.in',\n+  output: 'GIT-BUILD-OPTIONS',\n+  configuration: build_options_config,\n+)\n+\n summary({\n   'curl': curl.found(),\n   'expat': expat.found(),\ndiff --git a/t/lib-gitweb.sh b/t/lib-gitweb.sh\nindex 7f9808ec2024d62edc3a3f1c01fb255d0fd37cb2..a6e3dd11b3552a477c84c974db29d902fd87183f 100644\n--- a/t/lib-gitweb.sh\n+++ b/t/lib-gitweb.sh\n@@ -105,6 +105,11 @@ if ! test_have_prereq PERL; then\n \ttest_done\n fi\n \n+if ! test_have_prereq GITWEB; then\n+\tskip_all='skipping gitweb tests, gitweb not available'\n+\ttest_done\n+fi\n+\n perl -MEncode -e '$e=\"\";decode_utf8($e, Encode::FB_CROAK)' >/dev/null 2>&1 || {\n \tskip_all='skipping gitweb tests, perl version is too old'\n \ttest_done\ndiff --git a/t/test-lib.sh b/t/test-lib.sh\nindex 62dfcc4aaf959d0cf066d07663d939e14f92485c..1a67adb20764d60a70ebfde6df52a0fbd3bf72ee 100644\n--- a/t/test-lib.sh\n+++ b/t/test-lib.sh\n@@ -1687,6 +1687,7 @@ esac\n \n ( COLUMNS=1 && test $COLUMNS = 1 ) && test_set_prereq COLUMNS_CAN_BE_1\n test -z \"$NO_CURL\" && test_set_prereq LIBCURL\n+test -z \"$NO_GITWEB\" && test_set_prereq GITWEB\n test -z \"$NO_ICONV\" && test_set_prereq ICONV\n test -z \"$NO_PERL\" && test_set_prereq PERL\n test -z \"$NO_PTHREADS\" && test_set_prereq PTHREADS\n\n-- \n2.48.0.rc0.311.gb6c66824c1.dirty\n\n"},{"id":"509606","messageId":"20241227-b4-pks-meson-wo-gitweb-v1-1-14ca8515bb3b@pks.im","threadId":"62698","inReplyTo":"20241227-b4-pks-meson-wo-gitweb-v1-0-14ca8515bb3b@pks.im","subject":"[PATCH 1/3] GIT-BUILD-OPTIONS: sort variables alphabetically","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2024-12-27T12:10:17Z","receivedAt":"2024-12-27T12:10:54Z","isPatch":true,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"The variables declared and substituted in GIT-BUILD-OPTIONS are not\nordered in any obvious way. Sort them alphabetically so that it becomes\nobvious where new variables should go.\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\n---\n GIT-BUILD-OPTIONS.in                | 70 ++++++++++++++++++-------------------\n Makefile                            | 70 ++++++++++++++++++-------------------\n contrib/buildsystems/CMakeLists.txt | 70 ++++++++++++++++++-------------------\n 3 files changed, 105 insertions(+), 105 deletions(-)\n\ndiff --git a/GIT-BUILD-OPTIONS.in b/GIT-BUILD-OPTIONS.in\nindex f651116102ae2977622dccd12b199fe7ad65af99..162cc391903c911383fb0fb358589b4cee4b64aa 100644\n--- a/GIT-BUILD-OPTIONS.in\n+++ b/GIT-BUILD-OPTIONS.in\n@@ -1,47 +1,47 @@\n-SHELL_PATH=@SHELL_PATH@\n-TEST_SHELL_PATH=@TEST_SHELL_PATH@\n-PERL_PATH=@PERL_PATH@\n-PERL_LOCALEDIR=@PERL_LOCALEDIR@\n-NO_PERL_CPAN_FALLBACKS=@NO_PERL_CPAN_FALLBACKS@\n+BROKEN_PATH_FIX=@BROKEN_PATH_FIX@\n DIFF=@DIFF@\n-PYTHON_PATH=@PYTHON_PATH@\n-TAR=@TAR@\n+FSMONITOR_DAEMON_BACKEND=@FSMONITOR_DAEMON_BACKEND@\n+FSMONITOR_OS_SETTINGS=@FSMONITOR_OS_SETTINGS@\n+GITWEBDIR=@GITWEBDIR@\n+GIT_INTEROP_MAKE_OPTS=@GIT_INTEROP_MAKE_OPTS@\n+GIT_PERF_LARGE_REPO=@GIT_PERF_LARGE_REPO@\n+GIT_PERF_MAKE_COMMAND=@GIT_PERF_MAKE_COMMAND@\n+GIT_PERF_MAKE_OPTS=@GIT_PERF_MAKE_OPTS@\n+GIT_PERF_REPEAT_COUNT=@GIT_PERF_REPEAT_COUNT@\n+GIT_PERF_REPO=@GIT_PERF_REPO@\n+GIT_TEST_CMP=@GIT_TEST_CMP@\n+GIT_TEST_CMP_USE_COPIED_CONTEXT=@GIT_TEST_CMP_USE_COPIED_CONTEXT@\n+GIT_TEST_GITPERLLIB=@GIT_TEST_GITPERLLIB@\n+GIT_TEST_INDEX_VERSION=@GIT_TEST_INDEX_VERSION@\n+GIT_TEST_MERGE_TOOLS_DIR=@GIT_TEST_MERGE_TOOLS_DIR@\n+GIT_TEST_OPTS=@GIT_TEST_OPTS@\n+GIT_TEST_PERL_FATAL_WARNINGS=@GIT_TEST_PERL_FATAL_WARNINGS@\n+GIT_TEST_POPATH=@GIT_TEST_POPATH@\n+GIT_TEST_TEMPLATE_DIR=@GIT_TEST_TEMPLATE_DIR@\n+GIT_TEST_TEXTDOMAINDIR=@GIT_TEST_TEXTDOMAINDIR@\n+GIT_TEST_UTF8_LOCALE=@GIT_TEST_UTF8_LOCALE@\n+LOCALEDIR=@LOCALEDIR@\n NO_CURL=@NO_CURL@\n-NO_ICONV=@NO_ICONV@\n NO_EXPAT=@NO_EXPAT@\n-USE_LIBPCRE2=@USE_LIBPCRE2@\n+NO_GETTEXT=@NO_GETTEXT@\n+NO_ICONV=@NO_ICONV@\n NO_PERL=@NO_PERL@\n+NO_PERL_CPAN_FALLBACKS=@NO_PERL_CPAN_FALLBACKS@\n NO_PTHREADS=@NO_PTHREADS@\n NO_PYTHON=@NO_PYTHON@\n NO_REGEX=@NO_REGEX@\n NO_UNIX_SOCKETS=@NO_UNIX_SOCKETS@\n PAGER_ENV=@PAGER_ENV@\n-SANITIZE_LEAK=@SANITIZE_LEAK@\n+PERL_LOCALEDIR=@PERL_LOCALEDIR@\n+PERL_PATH=@PERL_PATH@\n+PYTHON_PATH=@PYTHON_PATH@\n+RUNTIME_PREFIX=@RUNTIME_PREFIX@\n SANITIZE_ADDRESS=@SANITIZE_ADDRESS@\n-X=@X@\n-FSMONITOR_DAEMON_BACKEND=@FSMONITOR_DAEMON_BACKEND@\n-FSMONITOR_OS_SETTINGS=@FSMONITOR_OS_SETTINGS@\n+SANITIZE_LEAK=@SANITIZE_LEAK@\n+SHELL_PATH=@SHELL_PATH@\n+TAR=@TAR@\n TEST_OUTPUT_DIRECTORY=@TEST_OUTPUT_DIRECTORY@\n-GIT_TEST_OPTS=@GIT_TEST_OPTS@\n-GIT_TEST_CMP=@GIT_TEST_CMP@\n-GIT_TEST_CMP_USE_COPIED_CONTEXT=@GIT_TEST_CMP_USE_COPIED_CONTEXT@\n-GIT_TEST_UTF8_LOCALE=@GIT_TEST_UTF8_LOCALE@\n-NO_GETTEXT=@NO_GETTEXT@\n-GIT_PERF_REPEAT_COUNT=@GIT_PERF_REPEAT_COUNT@\n-GIT_PERF_REPO=@GIT_PERF_REPO@\n-GIT_PERF_LARGE_REPO=@GIT_PERF_LARGE_REPO@\n-GIT_PERF_MAKE_OPTS=@GIT_PERF_MAKE_OPTS@\n-GIT_PERF_MAKE_COMMAND=@GIT_PERF_MAKE_COMMAND@\n-GIT_INTEROP_MAKE_OPTS=@GIT_INTEROP_MAKE_OPTS@\n-GIT_TEST_INDEX_VERSION=@GIT_TEST_INDEX_VERSION@\n-GIT_TEST_PERL_FATAL_WARNINGS=@GIT_TEST_PERL_FATAL_WARNINGS@\n-GIT_TEST_TEXTDOMAINDIR=@GIT_TEST_TEXTDOMAINDIR@\n-GIT_TEST_POPATH=@GIT_TEST_POPATH@\n-GIT_TEST_TEMPLATE_DIR=@GIT_TEST_TEMPLATE_DIR@\n-GIT_TEST_GITPERLLIB=@GIT_TEST_GITPERLLIB@\n-GIT_TEST_MERGE_TOOLS_DIR=@GIT_TEST_MERGE_TOOLS_DIR@\n-RUNTIME_PREFIX=@RUNTIME_PREFIX@\n-GITWEBDIR=@GITWEBDIR@\n+TEST_SHELL_PATH=@TEST_SHELL_PATH@\n USE_GETTEXT_SCHEME=@USE_GETTEXT_SCHEME@\n-LOCALEDIR=@LOCALEDIR@\n-BROKEN_PATH_FIX=@BROKEN_PATH_FIX@\n+USE_LIBPCRE2=@USE_LIBPCRE2@\n+X=@X@\ndiff --git a/Makefile b/Makefile\nindex 3fa4bf0d065a1299b060c22ddf716f9b502db472..f80e70702fcd8df884c7634344cc4ae23d2cb605 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -3145,53 +3145,53 @@ endif\n # and the first level quoting from the shell that runs \"echo\".\n GIT-BUILD-OPTIONS: FORCE\n \t@sed \\\n-\t\t-e \"s|@SHELL_PATH@|\\'$(SHELL_PATH_SQ)\\'|\" \\\n-\t\t-e \"s|@TEST_SHELL_PATH@|\\'$(TEST_SHELL_PATH_SQ)\\'|\" \\\n-\t\t-e \"s|@PERL_PATH@|\\'$(PERL_PATH_SQ)\\'|\" \\\n-\t\t-e \"s|@PERL_LOCALEDIR@|\\'$(perl_localedir_SQ)\\'|\" \\\n-\t\t-e \"s|@NO_PERL_CPAN_FALLBACKS@|\\'$(NO_PERL_CPAN_FALLBACKS_SQ)\\'|\" \\\n+\t\t-e \"s!@BROKEN_PATH_FIX@!\\'$(BROKEN_PATH_FIX)\\'!\" \\\n \t\t-e \"s|@DIFF@|\\'$(DIFF)\\'|\" \\\n-\t\t-e \"s|@PYTHON_PATH@|\\'$(PYTHON_PATH_SQ)\\'|\" \\\n-\t\t-e \"s|@TAR@|\\'$(TAR)\\'|\" \\\n+\t\t-e \"s|@FSMONITOR_DAEMON_BACKEND@|\\'$(FSMONITOR_DAEMON_BACKEND)\\'|\" \\\n+\t\t-e \"s|@FSMONITOR_OS_SETTINGS@|\\'$(FSMONITOR_OS_SETTINGS)\\'|\" \\\n+\t\t-e \"s|@GITWEBDIR@|\\'$(gitwebdir_SQ)\\'|\" \\\n+\t\t-e \"s|@GIT_INTEROP_MAKE_OPTS@|\\'$(GIT_INTEROP_MAKE_OPTS)\\'|\" \\\n+\t\t-e \"s|@GIT_PERF_LARGE_REPO@|\\'$(GIT_PERF_LARGE_REPO)\\'|\" \\\n+\t\t-e \"s|@GIT_PERF_MAKE_COMMAND@|\\'$(GIT_PERF_MAKE_COMMAND)\\'|\" \\\n+\t\t-e \"s|@GIT_PERF_MAKE_OPTS@|\\'$(GIT_PERF_MAKE_OPTS)\\'|\" \\\n+\t\t-e \"s|@GIT_PERF_REPEAT_COUNT@|\\'$(GIT_PERF_REPEAT_COUNT)\\'|\" \\\n+\t\t-e \"s|@GIT_PERF_REPO@|\\'$(GIT_PERF_REPO)\\'|\" \\\n+\t\t-e \"s|@GIT_TEST_CMP@|\\'$(GIT_TEST_CMP)\\'|\" \\\n+\t\t-e \"s|@GIT_TEST_CMP_USE_COPIED_CONTEXT@|\\'$(GIT_TEST_CMP_USE_COPIED_CONTEXT)\\'|\" \\\n+\t\t-e \"s|@GIT_TEST_GITPERLLIB@|\\'$(shell pwd)/perl/build/lib\\'|\" \\\n+\t\t-e \"s|@GIT_TEST_INDEX_VERSION@|\\'$(GIT_TEST_INDEX_VERSION)\\'|\" \\\n+\t\t-e \"s|@GIT_TEST_MERGE_TOOLS_DIR@|\\'$(shell pwd)/mergetools\\'|\" \\\n+\t\t-e \"s|@GIT_TEST_OPTS@|\\'$(GIT_TEST_OPTS)\\'|\" \\\n+\t\t-e \"s|@GIT_TEST_PERL_FATAL_WARNINGS@|\\'$(GIT_TEST_PERL_FATAL_WARNINGS)\\'|\" \\\n+\t\t-e \"s|@GIT_TEST_POPATH@|\\'$(shell pwd)/po\\'|\" \\\n+\t\t-e \"s|@GIT_TEST_TEMPLATE_DIR@|\\'$(shell pwd)/templates/blt\\'|\" \\\n+\t\t-e \"s|@GIT_TEST_TEXTDOMAINDIR@|\\'$(shell pwd)/po/build/locale\\'|\" \\\n+\t\t-e \"s|@GIT_TEST_UTF8_LOCALE@|\\'$(GIT_TEST_UTF8_LOCALE)\\'|\" \\\n+\t\t-e \"s|@LOCALEDIR@|\\'$(localedir_SQ)\\'|\" \\\n \t\t-e \"s|@NO_CURL@|\\'$(NO_CURL)\\'|\" \\\n-\t\t-e \"s|@NO_ICONV@|\\'$(NO_ICONV)\\'|\" \\\n \t\t-e \"s|@NO_EXPAT@|\\'$(NO_EXPAT)\\'|\" \\\n-\t\t-e \"s|@USE_LIBPCRE2@|\\'$(USE_LIBPCRE2)\\'|\" \\\n+\t\t-e \"s|@NO_GETTEXT@|\\'$(NO_GETTEXT)\\'|\" \\\n+\t\t-e \"s|@NO_ICONV@|\\'$(NO_ICONV)\\'|\" \\\n \t\t-e \"s|@NO_PERL@|\\'$(NO_PERL)\\'|\" \\\n+\t\t-e \"s|@NO_PERL_CPAN_FALLBACKS@|\\'$(NO_PERL_CPAN_FALLBACKS_SQ)\\'|\" \\\n \t\t-e \"s|@NO_PTHREADS@|\\'$(NO_PTHREADS)\\'|\" \\\n \t\t-e \"s|@NO_PYTHON@|\\'$(NO_PYTHON)\\'|\" \\\n \t\t-e \"s|@NO_REGEX@|\\'$(NO_REGEX)\\'|\" \\\n \t\t-e \"s|@NO_UNIX_SOCKETS@|\\'$(NO_UNIX_SOCKETS)\\'|\" \\\n \t\t-e \"s|@PAGER_ENV@|\\'$(PAGER_ENV)\\'|\" \\\n-\t\t-e \"s|@SANITIZE_LEAK@|\\'$(SANITIZE_LEAK)\\'|\" \\\n+\t\t-e \"s|@PERL_LOCALEDIR@|\\'$(perl_localedir_SQ)\\'|\" \\\n+\t\t-e \"s|@PERL_PATH@|\\'$(PERL_PATH_SQ)\\'|\" \\\n+\t\t-e \"s|@PYTHON_PATH@|\\'$(PYTHON_PATH_SQ)\\'|\" \\\n+\t\t-e \"s|@RUNTIME_PREFIX@|\\'$(RUNTIME_PREFIX_OPTION)\\'|\" \\\n \t\t-e \"s|@SANITIZE_ADDRESS@|\\'$(SANITIZE_ADDRESS)\\'|\" \\\n-\t\t-e \"s|@X@|\\'$(X)\\'|\" \\\n-\t\t-e \"s|@FSMONITOR_DAEMON_BACKEND@|\\'$(FSMONITOR_DAEMON_BACKEND)\\'|\" \\\n-\t\t-e \"s|@FSMONITOR_OS_SETTINGS@|\\'$(FSMONITOR_OS_SETTINGS)\\'|\" \\\n+\t\t-e \"s|@SANITIZE_LEAK@|\\'$(SANITIZE_LEAK)\\'|\" \\\n+\t\t-e \"s|@SHELL_PATH@|\\'$(SHELL_PATH_SQ)\\'|\" \\\n+\t\t-e \"s|@TAR@|\\'$(TAR)\\'|\" \\\n \t\t-e \"s|@TEST_OUTPUT_DIRECTORY@|\\'$(TEST_OUTPUT_DIRECTORY)\\'|\" \\\n-\t\t-e \"s|@GIT_TEST_OPTS@|\\'$(GIT_TEST_OPTS)\\'|\" \\\n-\t\t-e \"s|@GIT_TEST_CMP@|\\'$(GIT_TEST_CMP)\\'|\" \\\n-\t\t-e \"s|@GIT_TEST_CMP_USE_COPIED_CONTEXT@|\\'$(GIT_TEST_CMP_USE_COPIED_CONTEXT)\\'|\" \\\n-\t\t-e \"s|@GIT_TEST_UTF8_LOCALE@|\\'$(GIT_TEST_UTF8_LOCALE)\\'|\" \\\n-\t\t-e \"s|@NO_GETTEXT@|\\'$(NO_GETTEXT)\\'|\" \\\n-\t\t-e \"s|@GIT_PERF_REPEAT_COUNT@|\\'$(GIT_PERF_REPEAT_COUNT)\\'|\" \\\n-\t\t-e \"s|@GIT_PERF_REPO@|\\'$(GIT_PERF_REPO)\\'|\" \\\n-\t\t-e \"s|@GIT_PERF_LARGE_REPO@|\\'$(GIT_PERF_LARGE_REPO)\\'|\" \\\n-\t\t-e \"s|@GIT_PERF_MAKE_OPTS@|\\'$(GIT_PERF_MAKE_OPTS)\\'|\" \\\n-\t\t-e \"s|@GIT_PERF_MAKE_COMMAND@|\\'$(GIT_PERF_MAKE_COMMAND)\\'|\" \\\n-\t\t-e \"s|@GIT_INTEROP_MAKE_OPTS@|\\'$(GIT_INTEROP_MAKE_OPTS)\\'|\" \\\n-\t\t-e \"s|@GIT_TEST_INDEX_VERSION@|\\'$(GIT_TEST_INDEX_VERSION)\\'|\" \\\n-\t\t-e \"s|@GIT_TEST_PERL_FATAL_WARNINGS@|\\'$(GIT_TEST_PERL_FATAL_WARNINGS)\\'|\" \\\n-\t\t-e \"s|@GIT_TEST_TEXTDOMAINDIR@|\\'$(shell pwd)/po/build/locale\\'|\" \\\n-\t\t-e \"s|@GIT_TEST_POPATH@|\\'$(shell pwd)/po\\'|\" \\\n-\t\t-e \"s|@GIT_TEST_TEMPLATE_DIR@|\\'$(shell pwd)/templates/blt\\'|\" \\\n-\t\t-e \"s|@GIT_TEST_GITPERLLIB@|\\'$(shell pwd)/perl/build/lib\\'|\" \\\n-\t\t-e \"s|@GIT_TEST_MERGE_TOOLS_DIR@|\\'$(shell pwd)/mergetools\\'|\" \\\n-\t\t-e \"s|@RUNTIME_PREFIX@|\\'$(RUNTIME_PREFIX_OPTION)\\'|\" \\\n-\t\t-e \"s|@GITWEBDIR@|\\'$(gitwebdir_SQ)\\'|\" \\\n+\t\t-e \"s|@TEST_SHELL_PATH@|\\'$(TEST_SHELL_PATH_SQ)\\'|\" \\\n \t\t-e \"s|@USE_GETTEXT_SCHEME@|\\'$(USE_GETTEXT_SCHEME)\\'|\" \\\n-\t\t-e \"s|@LOCALEDIR@|\\'$(localedir_SQ)\\'|\" \\\n-\t\t-e \"s!@BROKEN_PATH_FIX@!\\'$(BROKEN_PATH_FIX)\\'!\" \\\n+\t\t-e \"s|@USE_LIBPCRE2@|\\'$(USE_LIBPCRE2)\\'|\" \\\n+\t\t-e \"s|@X@|\\'$(X)\\'|\" \\\n \t\tGIT-BUILD-OPTIONS.in >$@+\n \t@if grep -q '^[A-Z][A-Z_]*=@.*@$$' $@+; then echo \"Unsubstituted build options in $@\" >&2 && exit 1; fi\n \t@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi\ndiff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt\nindex 802445c1eb0e8b109d79083367553f3892ce5084..f45407b060221bf900fd0a19a315f0d0dce23147 100644\n--- a/contrib/buildsystems/CMakeLists.txt\n+++ b/contrib/buildsystems/CMakeLists.txt\n@@ -1158,53 +1158,53 @@ if(NOT PYTHON_TESTS)\n endif()\n \n file(STRINGS ${CMAKE_SOURCE_DIR}/GIT-BUILD-OPTIONS.in git_build_options NEWLINE_CONSUME)\n-string(REPLACE \"@SHELL_PATH@\" \"'${SHELL_PATH}'\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@TEST_SHELL_PATH@\" \"'${TEST_SHELL_PATH}'\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@PERL_PATH@\" \"'${PERL_PATH}'\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@PERL_LOCALEDIR@\" \"'${LOCALEDIR}'\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@NO_PERL_CPAN_FALLBACKS@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@BROKEN_PATH_FIX@\" \"\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@DIFF@\" \"'${DIFF}'\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@PYTHON_PATH@\" \"'${PYTHON_PATH}'\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@TAR@\" \"'${TAR}'\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@FSMONITOR_DAEMON_BACKEND@\" \"win32\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@FSMONITOR_OS_SETTINGS@\" \"win32\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GITWEBDIR@\" \"'${GITWEBDIR}'\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_INTEROP_MAKE_OPTS@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_PERF_LARGE_REPO@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_PERF_MAKE_COMMAND@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_PERF_MAKE_OPTS@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_PERF_REPEAT_COUNT@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_PERF_REPO@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_TEST_CMP@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_TEST_CMP_USE_COPIED_CONTEXT@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_TEST_GITPERLLIB@\" \"'${CMAKE_BINARY_DIR}/perl/build/lib'\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_TEST_INDEX_VERSION@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_TEST_MERGE_TOOLS_DIR@\" \"'${CMAKE_BINARY_DIR}/mergetools'\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_TEST_OPTS@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_TEST_PERL_FATAL_WARNINGS@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_TEST_POPATH@\" \"'${CMAKE_BINARY_DIR}/po'\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_TEST_TEMPLATE_DIR@\" \"'${CMAKE_BINARY_DIR}/templates/blt'\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_TEST_TEXTDOMAINDIR@\" \"'${CMAKE_BINARY_DIR}/po/build/locale'\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@GIT_TEST_UTF8_LOCALE@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@LOCALEDIR@\" \"'${LOCALEDIR}'\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@NO_CURL@\" \"${NO_CURL}\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@NO_ICONV@\" \"${NO_ICONV}\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@NO_EXPAT@\" \"${NO_EXPAT}\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@USE_LIBPCRE2@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@NO_GETTEXT@\" \"${NO_GETTEXT}\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@NO_ICONV@\" \"${NO_ICONV}\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@NO_PERL@\" \"${NO_PERL}\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@NO_PERL_CPAN_FALLBACKS@\" \"\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@NO_PTHREADS@\" \"${NO_PTHREADS}\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@NO_PYTHON@\" \"${NO_PYTHON}\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@NO_REGEX@\" \"\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@NO_UNIX_SOCKETS@\" \"${NO_UNIX_SOCKETS}\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@PAGER_ENV@\" \"'${PAGER_ENV}'\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@SANITIZE_LEAK@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@PERL_LOCALEDIR@\" \"'${LOCALEDIR}'\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@PERL_PATH@\" \"'${PERL_PATH}'\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@PYTHON_PATH@\" \"'${PYTHON_PATH}'\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@RUNTIME_PREFIX@\" \"'${RUNTIME_PREFIX}'\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@SANITIZE_ADDRESS@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@X@\" \"${EXE_EXTENSION}\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@FSMONITOR_DAEMON_BACKEND@\" \"win32\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@FSMONITOR_OS_SETTINGS@\" \"win32\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@SANITIZE_LEAK@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@SHELL_PATH@\" \"'${SHELL_PATH}'\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@TAR@\" \"'${TAR}'\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@TEST_OUTPUT_DIRECTORY@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_TEST_OPTS@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_TEST_CMP@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_TEST_CMP_USE_COPIED_CONTEXT@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_TEST_UTF8_LOCALE@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@NO_GETTEXT@\" \"${NO_GETTEXT}\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_PERF_REPEAT_COUNT@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_PERF_REPO@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_PERF_LARGE_REPO@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_PERF_MAKE_OPTS@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_PERF_MAKE_COMMAND@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_INTEROP_MAKE_OPTS@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_TEST_INDEX_VERSION@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_TEST_PERL_FATAL_WARNINGS@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_TEST_TEXTDOMAINDIR@\" \"'${CMAKE_BINARY_DIR}/po/build/locale'\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_TEST_POPATH@\" \"'${CMAKE_BINARY_DIR}/po'\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_TEST_TEMPLATE_DIR@\" \"'${CMAKE_BINARY_DIR}/templates/blt'\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_TEST_GITPERLLIB@\" \"'${CMAKE_BINARY_DIR}/perl/build/lib'\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GIT_TEST_MERGE_TOOLS_DIR@\" \"'${CMAKE_BINARY_DIR}/mergetools'\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@RUNTIME_PREFIX@\" \"'${RUNTIME_PREFIX}'\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@GITWEBDIR@\" \"'${GITWEBDIR}'\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@TEST_SHELL_PATH@\" \"'${TEST_SHELL_PATH}'\" git_build_options \"${git_build_options}\")\n string(REPLACE \"@USE_GETTEXT_SCHEME@\" \"\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@LOCALEDIR@\" \"'${LOCALEDIR}'\" git_build_options \"${git_build_options}\")\n-string(REPLACE \"@BROKEN_PATH_FIX@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@USE_LIBPCRE2@\" \"\" git_build_options \"${git_build_options}\")\n+string(REPLACE \"@X@\" \"${EXE_EXTENSION}\" git_build_options \"${git_build_options}\")\n if(USE_VCPKG)\n \tstring(APPEND git_build_options \"PATH=\\\"$PATH:$TEST_DIRECTORY/../compat/vcbuild/vcpkg/installed/x64-windows/bin\\\"\\n\")\n endif()\n\n-- \n2.48.0.rc0.311.gb6c66824c1.dirty\n\n"},{"id":"509605","messageId":"20241227-b4-pks-meson-wo-gitweb-v1-3-14ca8515bb3b@pks.im","threadId":"62698","inReplyTo":"20241227-b4-pks-meson-wo-gitweb-v1-0-14ca8515bb3b@pks.im","subject":"[PATCH 3/3] meson: enable auto-discovered \"gitweb\"","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2024-12-27T12:10:19Z","receivedAt":"2024-12-27T12:10:55Z","isPatch":true,"sender":{"key":"ps@pks.im","avatar":"https://avatars.githubusercontent.com/u/4056630?v=4"},"body":"In 7d549fe317 (meson: skip gitweb build when Perl is disabled,\n2024-12-20) we have started to conditionally enable \"gitweb\" based on\nwhether or not Perl is enabled. By accident though that change causes us\nto not build gitweb in case its feature flag is set to \"auto\" even if\nautoconfiguration determines that it could be built. This is because we\nuse \"gitweb_option.enabled()\", which only checks whether the feature has\nbeen explicitly enabled.\n\nFix the issue by using `gitweb_option.allowed()` instead, which returns\ntrue in case it is either explicitly enabled or set to \"auto\". This also\nworks for the case where the feature becomes auto-disabled due to Perl\nnot being present because we use `disable_auto_if(not perl.found())`.\n\nSigned-off-by: Patrick Steinhardt <ps@pks.im>\n---\n meson.build | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/meson.build b/meson.build\nindex 3e57793862e5fc15685b5f0fac7f7223af7bef1f..0064eb64f546a6349a8694ce251bd352febda6fe 100644\n--- a/meson.build\n+++ b/meson.build\n@@ -1863,7 +1863,7 @@ subdir('contrib')\n # We make sure further up that Perl is required in case the gitweb option is\n # enabled.\n gitweb_option = get_option('gitweb').disable_auto_if(not perl.found())\n-if gitweb_option.enabled()\n+if gitweb_option.allowed()\n   subdir('gitweb')\n   build_options_config.set('NO_GITWEB', '')\n else\n@@ -1916,7 +1916,7 @@ summary({\n   'curl': curl.found(),\n   'expat': expat.found(),\n   'gettext': intl.found(),\n-  'gitweb': gitweb_option.enabled(),\n+  'gitweb': gitweb_option.allowed(),\n   'https': https_backend,\n   'iconv': iconv.found(),\n   'pcre2': pcre2.found(),\n\n-- \n2.48.0.rc0.311.gb6c66824c1.dirty\n\n"}]}