The local OVN repository might be shallow copy which doesn't work
well with the --local. Also the local repository might already
have up to date submodule which makes any subsequent submodule init
calls a noop. This is especially useful in offline environments
where would the submodule update fail otherwise. The copy is done
in two steps otherwise it would end up in endless recursion as the
base dir is inside the ovn_root_dir.
Fixes: 9b2645580c78 ("ci: Run system tests in upgrade scenario.")
Signed-off-by: Ales Musil <[email protected]>
---
.ci/ovn_upgrade_utils.py | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/.ci/ovn_upgrade_utils.py b/.ci/ovn_upgrade_utils.py
index c0db4977f..c5018a4b6 100755
--- a/.ci/ovn_upgrade_utils.py
+++ b/.ci/ovn_upgrade_utils.py
@@ -4,6 +4,7 @@ import os
import re
import shutil
import subprocess
+import tempfile
from datetime import datetime
from pathlib import Path
from dataclasses import dataclass
@@ -294,13 +295,12 @@ def ovn_upgrade_extract_info(config):
def ovn_upgrade_checkout_local(config, base_version):
base_dir = config.path.base_dir
git_log = config.file.git_log
- log(f"Running locally. Cloning to {base_dir}")
+ log(f"Running locally. Copying to {base_dir}")
- result = run_command(f"git clone --local --shared . {str(base_dir)} "
- f" --branch {base_version}", git_log)
- if result.returncode:
- log(f"Failed to clone to {base_dir}")
- return False
+ with tempfile.TemporaryDirectory() as tmpdir:
+ tmp_path = Path(tmpdir) / "ovn"
+ shutil.copytree(config.path.ovn_root_dir, tmp_path)
+ shutil.copytree(tmp_path, base_dir, dirs_exist_ok=True)
with chdir(base_dir):
log(f"Checking out base version: {base_version} from {base_dir}")
--
2.55.0
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev