From c3b5693736aea7798df87b10de48239ef7e43de7 Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Thu, 12 Nov 2020 14:03:26 +0530 Subject: [PATCH] cerbero: Never use cached cerbero git repo Sometimes the git repo cached on the docker image gets corrupted on Windows, in which case there is no way to clean things and resolve that error. For example: https://gitlab.freedesktop.org/bilboed/gst-plugins-bad/-/jobs/5517037 ``` ++ cp -a C:/cerbero/.git . cp: cannot create regular file `./.git/objects/pack/pack-cbdde9dc4dd07bff6761e6715e20d7c0abe62b9e.idx': Permission denied cp: cannot create regular file `./.git/objects/pack/pack-cbdde9dc4dd07bff6761e6715e20d7c0abe62b9e.pack': Permission denied ``` Always delete the cached git repo and copy a pristine copy from the image. This will also avoid accumulation of garbage in the git repo. Part-of: --- gitlab/cerbero_setup.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/gitlab/cerbero_setup.sh b/gitlab/cerbero_setup.sh index d752ce7..ce593b8 100644 --- a/gitlab/cerbero_setup.sh +++ b/gitlab/cerbero_setup.sh @@ -86,7 +86,15 @@ cerbero_before_script() { pwd ls -lha - # Copy cerbero git repo stored on the image + # Copy cerbero git repo stored on the image, delete an existing checkout if + # it exists. Sometimes the git dir gets corrupted on the Windows runner, + # and there's no way to clean it up because gitlab will keep trying to + # reuse the cached image. + if ! [[ -d ${CERBERO_HOST_DIR}/.git ]]; then + mv "${CERBERO_HOST_DIR}/.git" "${CERBERO_HOST_DIR}/.git-old" + # rm -rf is very slow on Windows, so do it in the background + rm -rf "${CERBERO_HOST_DIR}/.git-old" & + fi cp -a "${CERBERO_HOST_DIR}/.git" . git checkout . git status @@ -114,6 +122,9 @@ cerbero_before_script() { # a dirty builddir, or tarballs/pkg files, leftover files from an old # cerbero commit, etc. Skip the things we actually need to keep. time git clean -xdff -e cerbero_setup.sh -e manifest.xml -e localconf.cbc -e "${CERBERO_SOURCES}" + + # Wait for the rm -rf from above if needed + [[ -n $(jobs -p) ]] && fg } cerbero_script() { -- 2.7.4