From 4d3212de3cb634b1511341d7b82ac85c9b3c5933 Mon Sep 17 00:00:00 2001 From: Julio Merino Date: Tue, 7 Jan 2025 19:39:43 -0800 Subject: [PATCH] Error out on fetch operations on CVS/Git mismatch Now that we support two SCMs, make sure we don't use the wrong one on an existing copy of the src and xsrc checkouts. This will avoid some user errors. --- sysbuild.sh | 33 +++++++++++++++++++--- sysbuild_test.sh | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+), 4 deletions(-) diff --git a/sysbuild.sh b/sysbuild.sh index 1dd45ff..46ed510 100644 --- a/sysbuild.sh +++ b/sysbuild.sh @@ -309,28 +309,53 @@ sysbuild_fetch() { cvs) local cvsroot="$(shtk_config_get CVSROOT)" + local srcdir="$(shtk_config_get SRCDIR)" + if [ -d "${srcdir}" -a -e "${srcdir}/.git" ]; then + shtk_cli_error "SCM=${scm} but ${srcdir} looks" \ + "like a Git repo" + fi + shtk_cli_info "Updating base source tree" shtk_cvs_fetch "${cvsroot}" src "$(shtk_config_get_default CVSTAG '')" \ - "$(shtk_config_get SRCDIR)" + "${srcdir}" if shtk_config_has XSRCDIR; then + local xsrcdir="$(shtk_config_get XSRCDIR)" + if [ -d "${xsrcdir}" -a -e "${xsrcdir}/.git" ]; then + shtk_cli_error "SCM=${scm} but ${xsrcdir} looks" \ + "like a Git repo" + fi + shtk_cli_info "Updating X11 source tree" shtk_cvs_fetch "${cvsroot}" xsrc \ - "$(shtk_config_get_default CVSTAG '')" "$(shtk_config_get XSRCDIR)" + "$(shtk_config_get_default CVSTAG '')" "${xsrcdir}" fi ;; git) local srcrepo="$(shtk_config_get GIT_SRC_REPO)" local srcbranch="$(shtk_config_get GIT_SRC_BRANCH)" + + local srcdir="$(shtk_config_get SRCDIR)" + if [ -d "${srcdir}" -a -e "${srcdir}/CVS" ]; then + shtk_cli_error "SCM=${scm} but ${srcdir} looks" \ + "like a CVS checkout" + fi + shtk_cli_info "Updating base source tree" - shtk_git_fetch "${srcrepo}" "${srcbranch}" "$(shtk_config_get SRCDIR)" + shtk_git_fetch "${srcrepo}" "${srcbranch}" "${srcdir}" if shtk_config_has XSRCDIR; then + local xsrcdir="$(shtk_config_get XSRCDIR)" + if [ -d "${xsrcdir}" -a -e "${xsrcdir}/CVS" ]; then + shtk_cli_error "SCM=${scm} but ${xsrcdir} looks" \ + "like a CVS checkout" + fi + local xsrcrepo="$(shtk_config_get GIT_XSRC_REPO)" local xsrcbranch="$(shtk_config_get GIT_XSRC_BRANCH)" shtk_cli_info "Updating X11 source tree" - shtk_git_fetch "${xsrcrepo}" "${xsrcbranch}" "$(shtk_config_get XSRCDIR)" + shtk_git_fetch "${xsrcrepo}" "${xsrcbranch}" "${xsrcdir}" fi ;; diff --git a/sysbuild_test.sh b/sysbuild_test.sh index 290f228..151a727 100644 --- a/sysbuild_test.sh +++ b/sysbuild_test.sh @@ -1147,6 +1147,78 @@ EOF } +shtk_unittest_add_test fetch__cvs__update__src_is_git +fetch__cvs__update__src_is_git_test() { + mkdir -p checkout/src/.git + cat >test.conf <experr <test.conf <test.conf <experr <test.conf <