git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] ps/build follow-ups
@ 2024-12-17 17:31 Johannes Schindelin via GitGitGadget
  2024-12-17 17:31 ` [PATCH 1/5] cmake: better support for out-of-tree builds follow-up Johannes Schindelin via GitGitGadget
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Johannes Schindelin via GitGitGadget @ 2024-12-17 17:31 UTC (permalink / raw)
  To: git; +Cc: Patrick Steinhardt, Johannes Schindelin

These patches were required in the course of getting Git for Windows rebased
onto Git v2.48.0-rc0. They are based on ps/build.

Johannes Schindelin (5):
  cmake: better support for out-of-tree builds follow-up
  cmake(mergetools): better support for out-of-tree builds
  cmake: use the correct file name for the Perl header
  cmake: put the Perl modules into the correct location again
  cmake/vcxproj: stop special-casing `remote-ext`

 config.mak.uname                    |  4 ----
 contrib/buildsystems/CMakeLists.txt | 15 +++++++++++----
 2 files changed, 11 insertions(+), 8 deletions(-)


base-commit: 904339edbd80ec5676616af6e072b41804c1c8eb
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1840%2Fdscho%2Fps-build-followups-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1840/dscho/ps-build-followups-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1840
-- 
gitgitgadget

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/5] cmake: better support for out-of-tree builds follow-up
  2024-12-17 17:31 [PATCH 0/5] ps/build follow-ups Johannes Schindelin via GitGitGadget
@ 2024-12-17 17:31 ` Johannes Schindelin via GitGitGadget
  2024-12-17 17:31 ` [PATCH 2/5] cmake(mergetools): better support for out-of-tree builds Johannes Schindelin via GitGitGadget
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Johannes Schindelin via GitGitGadget @ 2024-12-17 17:31 UTC (permalink / raw)
  To: git; +Cc: Patrick Steinhardt, Johannes Schindelin, Johannes Schindelin

From: Johannes Schindelin <johannes.schindelin@gmx.de>

In 7e0730c8baa (t: better support for out-of-tree builds, 2024-12-06),
the `bin-wrappers/` strategy was changed so that it no longer hard-codes
the template directory to be `@BUILD_DIR@/templates/blt`, but instead
interpolates the `@TEMPLATE_DIR@` placeholder during the build.

However, this commit only adjusted the `Makefile`-based build.

Let's adjust the CMake-based build as well. This fixes t0000.15 which
would otherwise fail with:

  ++ echo ''\''t1234-verbose/err'\'' is not empty, it contains:'
  't1234-verbose/err' is not empty, it contains:
  ++ cat t1234-verbose/err
  warning: templates not found in @TEMPLATE_DIR@

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 contrib/buildsystems/CMakeLists.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt
index 49904ca8a93..926f0d7b86c 100644
--- a/contrib/buildsystems/CMakeLists.txt
+++ b/contrib/buildsystems/CMakeLists.txt
@@ -1087,6 +1087,7 @@ set(wrapper_test_scripts
 foreach(script ${wrapper_scripts})
 	file(STRINGS ${CMAKE_SOURCE_DIR}/bin-wrappers/wrap-for-bin.sh content NEWLINE_CONSUME)
 	string(REPLACE "@BUILD_DIR@" "${CMAKE_BINARY_DIR}" content "${content}")
+	string(REPLACE "@TEMPLATE_DIR@" "'${CMAKE_BINARY_DIR}/templates/blt'" content "${content}")
 	string(REPLACE "@PROG@" "${CMAKE_BINARY_DIR}/${script}${EXE_EXTENSION}" content "${content}")
 	file(WRITE ${CMAKE_BINARY_DIR}/bin-wrappers/${script} ${content})
 endforeach()
@@ -1094,12 +1095,14 @@ endforeach()
 foreach(script ${wrapper_test_scripts})
 	file(STRINGS ${CMAKE_SOURCE_DIR}/bin-wrappers/wrap-for-bin.sh content NEWLINE_CONSUME)
 	string(REPLACE "@BUILD_DIR@" "${CMAKE_BINARY_DIR}" content "${content}")
+	string(REPLACE "@TEMPLATE_DIR@" "'${CMAKE_BINARY_DIR}/templates/blt'" content "${content}")
 	string(REPLACE "@PROG@" "${CMAKE_BINARY_DIR}/t/helper/${script}${EXE_EXTENSION}" content "${content}")
 	file(WRITE ${CMAKE_BINARY_DIR}/bin-wrappers/${script} ${content})
 endforeach()
 
 file(STRINGS ${CMAKE_SOURCE_DIR}/bin-wrappers/wrap-for-bin.sh content NEWLINE_CONSUME)
 string(REPLACE "@BUILD_DIR@" "${CMAKE_BINARY_DIR}" content "${content}")
+string(REPLACE "@TEMPLATE_DIR@" "'${CMAKE_BINARY_DIR}/templates/blt'" content "${content}")
 string(REPLACE "@GIT_TEXTDOMAINDIR@" "${CMAKE_BINARY_DIR}/po/build/locale" content "${content}")
 string(REPLACE "@GITPERLLIB@" "${CMAKE_BINARY_DIR}/perl/build/lib" content "${content}")
 string(REPLACE "@MERGE_TOOLS_DIR@" "${CMAKE_SOURCE_DIR}/mergetools" content "${content}")
-- 
gitgitgadget


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/5] cmake(mergetools): better support for out-of-tree builds
  2024-12-17 17:31 [PATCH 0/5] ps/build follow-ups Johannes Schindelin via GitGitGadget
  2024-12-17 17:31 ` [PATCH 1/5] cmake: better support for out-of-tree builds follow-up Johannes Schindelin via GitGitGadget
@ 2024-12-17 17:31 ` Johannes Schindelin via GitGitGadget
  2024-12-17 17:31 ` [PATCH 3/5] cmake: use the correct file name for the Perl header Johannes Schindelin via GitGitGadget
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Johannes Schindelin via GitGitGadget @ 2024-12-17 17:31 UTC (permalink / raw)
  To: git; +Cc: Patrick Steinhardt, Johannes Schindelin, Johannes Schindelin

From: Johannes Schindelin <johannes.schindelin@gmx.de>

In 7e0730c8baa (t: better support for out-of-tree builds, 2024-12-06)
the strategy was changed from letting `t7609-mergetool--lib.sh`
hard-code the directory where it expects to find the merge tools to
hard-coding that value in the placeholder `@GIT_TEST_MERGE_TOOLS_DIR@`
that is replaced during the build.

However, likely due to a copy/paste mistake (and reviewers missed this,
too), the CMake-based build was adjusted incorrectly, replacing that
placeholder not with the path to the merge tools, but with a Boolean
indicating whether to use a runtime-generated path prefix or not.

Let's fix that, addressing this CMake-build's symptom:

  Initialized empty Git repository in D:/a/git/git/t/trash directory.t7609-mergetool--lib/.git/
  ++ . true/vimdiff
  ./test-lib.sh: line 1021: true/vimdiff: No such file or directory

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 contrib/buildsystems/CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt
index 926f0d7b86c..3dd6b3a130e 100644
--- a/contrib/buildsystems/CMakeLists.txt
+++ b/contrib/buildsystems/CMakeLists.txt
@@ -1195,7 +1195,7 @@ string(REPLACE "@GIT_TEST_TEXTDOMAINDIR@" "'${CMAKE_BINARY_DIR}/po/build/locale'
 string(REPLACE "@GIT_TEST_POPATH@" "'${CMAKE_BINARY_DIR}/po'" git_build_options "${git_build_options}")
 string(REPLACE "@GIT_TEST_TEMPLATE_DIR@" "'${CMAKE_BINARY_DIR}/templates/blt'" git_build_options "${git_build_options}")
 string(REPLACE "@GIT_TEST_GITPERLLIB@" "'${CMAKE_BINARY_DIR}/perl/build/lib'" git_build_options "${git_build_options}")
-string(REPLACE "@GIT_TEST_MERGE_TOOLS_DIR@" "'${RUNTIME_PREFIX}'" git_build_options "${git_build_options}")
+string(REPLACE "@GIT_TEST_MERGE_TOOLS_DIR@" "'${CMAKE_BINARY_DIR}/mergetools'" git_build_options "${git_build_options}")
 string(REPLACE "@RUNTIME_PREFIX@" "'${RUNTIME_PREFIX}'" git_build_options "${git_build_options}")
 string(REPLACE "@GITWEBDIR@" "'${GITWEBDIR}'" git_build_options "${git_build_options}")
 string(REPLACE "@USE_GETTEXT_SCHEME@" "" git_build_options "${git_build_options}")
-- 
gitgitgadget


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/5] cmake: use the correct file name for the Perl header
  2024-12-17 17:31 [PATCH 0/5] ps/build follow-ups Johannes Schindelin via GitGitGadget
  2024-12-17 17:31 ` [PATCH 1/5] cmake: better support for out-of-tree builds follow-up Johannes Schindelin via GitGitGadget
  2024-12-17 17:31 ` [PATCH 2/5] cmake(mergetools): better support for out-of-tree builds Johannes Schindelin via GitGitGadget
@ 2024-12-17 17:31 ` Johannes Schindelin via GitGitGadget
  2024-12-17 17:32 ` [PATCH 4/5] cmake: put the Perl modules into the correct location again Johannes Schindelin via GitGitGadget
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Johannes Schindelin via GitGitGadget @ 2024-12-17 17:31 UTC (permalink / raw)
  To: git; +Cc: Patrick Steinhardt, Johannes Schindelin, Johannes Schindelin

From: Johannes Schindelin <johannes.schindelin@gmx.de>

In e4b488049a5 (Makefile: extract script to massage Perl scripts,
2024-12-06), the code was refactored that is used to transform the Perl
scripts/modules to their final form.

Even the CMake-based build was adjusted, but the change used the file
name `PERL-HEADER` instead of the file name used by the Makefile-based
build (same name but with the `GIT-` prefix). Let's adjust the former to
the latter.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 contrib/buildsystems/CMakeLists.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt
index 3dd6b3a130e..6f35cd66f39 100644
--- a/contrib/buildsystems/CMakeLists.txt
+++ b/contrib/buildsystems/CMakeLists.txt
@@ -867,7 +867,7 @@ list(TRANSFORM perl_modules REPLACE "${CMAKE_SOURCE_DIR}/" "")
 file(STRINGS ${CMAKE_SOURCE_DIR}/perl/header_templates/fixed_prefix.template.pl perl_header )
 string(REPLACE "@PATHSEP@" ":" perl_header "${perl_header}")
 string(REPLACE "@INSTLIBDIR@" "${INSTLIBDIR}" perl_header "${perl_header}")
-file(WRITE ${CMAKE_BINARY_DIR}/PERL-HEADER ${perl_header})
+file(WRITE ${CMAKE_BINARY_DIR}/GIT-PERL-HEADER ${perl_header})
 
 add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/GIT-VERSION-FILE"
 	COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/GIT-VERSION-GEN"
@@ -888,7 +888,7 @@ foreach(script ${git_perl_scripts} ${perl_modules})
 		COMMAND "${SH_EXE}" "${CMAKE_SOURCE_DIR}/generate-perl.sh"
 			"${CMAKE_BINARY_DIR}/GIT-BUILD-OPTIONS"
 			"${CMAKE_BINARY_DIR}/GIT-VERSION-FILE"
-			"${CMAKE_BINARY_DIR}/PERL-HEADER"
+			"${CMAKE_BINARY_DIR}/GIT-PERL-HEADER"
 			"${CMAKE_SOURCE_DIR}/${script}"
 			"${CMAKE_BINARY_DIR}/${perl_gen_path}"
 		DEPENDS "${CMAKE_SOURCE_DIR}/generate-perl.sh"
-- 
gitgitgadget


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 4/5] cmake: put the Perl modules into the correct location again
  2024-12-17 17:31 [PATCH 0/5] ps/build follow-ups Johannes Schindelin via GitGitGadget
                   ` (2 preceding siblings ...)
  2024-12-17 17:31 ` [PATCH 3/5] cmake: use the correct file name for the Perl header Johannes Schindelin via GitGitGadget
@ 2024-12-17 17:32 ` Johannes Schindelin via GitGitGadget
  2024-12-17 17:32 ` [PATCH 5/5] cmake/vcxproj: stop special-casing `remote-ext` Johannes Schindelin via GitGitGadget
  2024-12-17 20:49 ` [PATCH 0/5] ps/build follow-ups Junio C Hamano
  5 siblings, 0 replies; 8+ messages in thread
From: Johannes Schindelin via GitGitGadget @ 2024-12-17 17:32 UTC (permalink / raw)
  To: git; +Cc: Patrick Steinhardt, Johannes Schindelin, Johannes Schindelin

From: Johannes Schindelin <johannes.schindelin@gmx.de>

In ccfba9e0c45 (Makefile: use "generate-perl.sh" to massage Perl
library, 2024-12-06), the previous strategy (which avoided spawning a
shell script to transform the files) was replaced by the same
`generate-perl.sh` invocation as for the Makefile-based build.

The only difference is that now the transformation tries to handle the
Perl modules in-place (which ends up in empty files because the same
file is used as input and output via stdin/stdout redirection), and the
Perl script cannot find them anymore because they are not in the
expected place.

Let's put them into the expected place again, i.e. into
`perl/build/lib/` instead of `perl/`.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 contrib/buildsystems/CMakeLists.txt | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt
index 6f35cd66f39..36f18ab2dd1 100644
--- a/contrib/buildsystems/CMakeLists.txt
+++ b/contrib/buildsystems/CMakeLists.txt
@@ -882,6 +882,10 @@ foreach(script ${git_perl_scripts} ${perl_modules})
 	string(REPLACE ".perl" "" perl_gen_path "${script}")
 
 	get_filename_component(perl_gen_dir "${perl_gen_path}" DIRECTORY)
+	if(script MATCHES "\.pm$")
+		string(REGEX REPLACE "^perl" "perl/build/lib" perl_gen_dir "${perl_gen_dir}")
+		string(REGEX REPLACE "^perl" "perl/build/lib" perl_gen_path "${perl_gen_path}")
+	endif()
 	file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/${perl_gen_dir}")
 
 	add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/${perl_gen_path}"
-- 
gitgitgadget


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 5/5] cmake/vcxproj: stop special-casing `remote-ext`
  2024-12-17 17:31 [PATCH 0/5] ps/build follow-ups Johannes Schindelin via GitGitGadget
                   ` (3 preceding siblings ...)
  2024-12-17 17:32 ` [PATCH 4/5] cmake: put the Perl modules into the correct location again Johannes Schindelin via GitGitGadget
@ 2024-12-17 17:32 ` Johannes Schindelin via GitGitGadget
  2024-12-17 20:49 ` [PATCH 0/5] ps/build follow-ups Junio C Hamano
  5 siblings, 0 replies; 8+ messages in thread
From: Johannes Schindelin via GitGitGadget @ 2024-12-17 17:32 UTC (permalink / raw)
  To: git; +Cc: Patrick Steinhardt, Johannes Schindelin, Johannes Schindelin

From: Johannes Schindelin <johannes.schindelin@gmx.de>

When the `vcxproj` target was introduced in `config.mak.uname` to allow
building Git with the Visual C toolchain, the `git remote-ext` command
was always executed in its dashed form. Therefore, it was impossible to
pass the test suite unless that command existed in its dashed form, and
we had to special-case this.

Later, when the `vcxproj` target got out of fashion because Visual
Studio gained native support for CMake builds, this special-casing was
copied without questioning it.

But as of 675df192c5f (transport-helper: do not run git-remote-ext etc.
in dashed form, 2020-08-26), the reason for this special-casing no
longer exists. So let's just drop it.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 config.mak.uname                    | 4 ----
 contrib/buildsystems/CMakeLists.txt | 2 +-
 2 files changed, 1 insertion(+), 5 deletions(-)

diff --git a/config.mak.uname b/config.mak.uname
index d5112168a4c..b12d4e168ae 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -819,10 +819,6 @@ vcxproj:
 	sed -i 's|\(git\)-\([-a-z]*\)\.exe"|\1.exe" \2|g' \
 		bin-wrappers/git-{receive-pack,upload-archive}
 	git add -f $(test_bindir_programs)
-	# remote-ext is a builtin, but invoked as if it were external
-	sed 's|receive-pack|remote-ext|g' \
-		<bin-wrappers/git-receive-pack >bin-wrappers/git-remote-ext
-	git add -f bin-wrappers/git-remote-ext
 
 	# Add templates
 	$(MAKE) -C templates
diff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt
index 36f18ab2dd1..802445c1eb0 100644
--- a/contrib/buildsystems/CMakeLists.txt
+++ b/contrib/buildsystems/CMakeLists.txt
@@ -1082,7 +1082,7 @@ endif()
 
 #wrapper scripts
 set(wrapper_scripts
-	git git-upload-pack git-receive-pack git-upload-archive git-shell git-remote-ext scalar)
+	git git-upload-pack git-receive-pack git-upload-archive git-shell scalar)
 
 set(wrapper_test_scripts
 	test-fake-ssh test-tool)
-- 
gitgitgadget

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 0/5] ps/build follow-ups
  2024-12-17 17:31 [PATCH 0/5] ps/build follow-ups Johannes Schindelin via GitGitGadget
                   ` (4 preceding siblings ...)
  2024-12-17 17:32 ` [PATCH 5/5] cmake/vcxproj: stop special-casing `remote-ext` Johannes Schindelin via GitGitGadget
@ 2024-12-17 20:49 ` Junio C Hamano
  2024-12-18  5:54   ` Patrick Steinhardt
  5 siblings, 1 reply; 8+ messages in thread
From: Junio C Hamano @ 2024-12-17 20:49 UTC (permalink / raw)
  To: Johannes Schindelin via GitGitGadget
  Cc: git, Patrick Steinhardt, Johannes Schindelin

"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
writes:

> These patches were required in the course of getting Git for Windows rebased
> onto Git v2.48.0-rc0. They are based on ps/build.

Thanks.  Let me mark it to be fast-tracked to 'master'.
Queued.
>
> Johannes Schindelin (5):
>   cmake: better support for out-of-tree builds follow-up
>   cmake(mergetools): better support for out-of-tree builds
>   cmake: use the correct file name for the Perl header
>   cmake: put the Perl modules into the correct location again
>   cmake/vcxproj: stop special-casing `remote-ext`
>
>  config.mak.uname                    |  4 ----
>  contrib/buildsystems/CMakeLists.txt | 15 +++++++++++----
>  2 files changed, 11 insertions(+), 8 deletions(-)
>
>
> base-commit: 904339edbd80ec5676616af6e072b41804c1c8eb
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1840%2Fdscho%2Fps-build-followups-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1840/dscho/ps-build-followups-v1
> Pull-Request: https://github.com/gitgitgadget/git/pull/1840

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 0/5] ps/build follow-ups
  2024-12-17 20:49 ` [PATCH 0/5] ps/build follow-ups Junio C Hamano
@ 2024-12-18  5:54   ` Patrick Steinhardt
  0 siblings, 0 replies; 8+ messages in thread
From: Patrick Steinhardt @ 2024-12-18  5:54 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Johannes Schindelin via GitGitGadget, git, Johannes Schindelin

On Tue, Dec 17, 2024 at 12:49:32PM -0800, Junio C Hamano wrote:
> "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
> writes:
> 
> > These patches were required in the course of getting Git for Windows rebased
> > onto Git v2.48.0-rc0. They are based on ps/build.
> 
> Thanks.  Let me mark it to be fast-tracked to 'master'.
> Queued.

Thanks for these fixups, Dscho. All of them look good to me.

Patrick

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-12-18  5:54 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-17 17:31 [PATCH 0/5] ps/build follow-ups Johannes Schindelin via GitGitGadget
2024-12-17 17:31 ` [PATCH 1/5] cmake: better support for out-of-tree builds follow-up Johannes Schindelin via GitGitGadget
2024-12-17 17:31 ` [PATCH 2/5] cmake(mergetools): better support for out-of-tree builds Johannes Schindelin via GitGitGadget
2024-12-17 17:31 ` [PATCH 3/5] cmake: use the correct file name for the Perl header Johannes Schindelin via GitGitGadget
2024-12-17 17:32 ` [PATCH 4/5] cmake: put the Perl modules into the correct location again Johannes Schindelin via GitGitGadget
2024-12-17 17:32 ` [PATCH 5/5] cmake/vcxproj: stop special-casing `remote-ext` Johannes Schindelin via GitGitGadget
2024-12-17 20:49 ` [PATCH 0/5] ps/build follow-ups Junio C Hamano
2024-12-18  5:54   ` Patrick Steinhardt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).