diff --git a/software/software/apt_utils.py b/software/software/apt_utils.py index 946fbfc5..5ae821d3 100644 --- a/software/software/apt_utils.py +++ b/software/software/apt_utils.py @@ -14,28 +14,28 @@ from software.exceptions import APTOSTreeCommandFail LOG = logging.getLogger('main_logger') -def package_upload(feed_dir, sw_release, package): +def package_list_upload(feed_dir, sw_release, package_list): """ Upload a Debian package to an apt repository. :param feed_dir: apt package feed directory :param sw_release: Uploading patch release version (MM.mm.pp) - :param package: Debian package + :param package_list: Debian package list """ try: - msg = "Uploading package: %s" % package - LOG.info(msg) - subprocess.run( ["apt-ostree", "repo", "add", "--feed", str(feed_dir), "--release", constants.DEBIAN_RELEASE, "--component", sw_release, - package], + *package_list], check=True, capture_output=True) + + LOG.info("package list uploaded") except subprocess.CalledProcessError as e: - msg = "Failed to upload package: %s" % package + packages = " ".join(package_list) + msg = "Failed to upload package list: %s" % packages info_msg = "\"apt-ostree repo add\" error: return code %s , Output: %s" \ % (e.returncode, e.stderr.decode("utf-8")) LOG.error(info_msg) diff --git a/software/software/software_functions.py b/software/software/software_functions.py index c62e893a..7adaea53 100644 --- a/software/software/software_functions.py +++ b/software/software/software_functions.py @@ -1014,10 +1014,26 @@ class PatchFile(object): # Upload the package to the apt repository deb_dir = os.scandir(tmpdir) + package_list = [] + list_size = 25 # Number of files per group + for deb in deb_dir: - apt_utils.package_upload(package_repo_dir, - sw_release, - os.path.join(tmpdir, deb.name)) + deb_path = os.path.join(tmpdir, deb.name) + msg = "Adding package to upload list: %s" % deb_path + LOG.info(msg) + package_list.append(os.path.join(tmpdir, deb.name)) + if len(package_list) == list_size: + apt_utils.package_list_upload(package_repo_dir, + sw_release, + package_list) + package_list = [] + + # send the rest of packages to be uploaded + if package_list: + apt_utils.package_list_upload(package_repo_dir, + sw_release, + package_list) + except tarfile.TarError: msg = "Failed to extract the ostree tarball for %s" \ % sw_version