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 <