All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] scripts/install-buildtools: add an option to preserve downloads
@ 2025-03-11 10:41 Alexander Kanavin
  2025-03-11 10:41 ` [PATCH 2/2] scripts/install-buildtools: write download URLs to files for traceability Alexander Kanavin
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Alexander Kanavin @ 2025-03-11 10:41 UTC (permalink / raw)
  To: openembedded-core; +Cc: Alexander Kanavin

From: Alexander Kanavin <alex@linutronix.de>

By default the script puts everything it downloads into a temporary
directory and erases it after unpacking and installing the buildtools.

This isn't great for traceability and reproducibility of builds
(being able to see what was downloaded exactly, and being able
to reproduce setting up a build, especially if the buildtools
download location isn't available for whatever reason).

This commit adds an option to download items into a specified directory
and keep them there. I would particularly like to use it
with bitbake-setup, where an optional script to install the buildtools
would ensure the tarball remains available on local disk.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
---
 scripts/install-buildtools | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/scripts/install-buildtools b/scripts/install-buildtools
index 639ebb12d78..1a68aad53e7 100755
--- a/scripts/install-buildtools
+++ b/scripts/install-buildtools
@@ -142,6 +142,9 @@ def main():
                         default=DEFAULT_INSTALL_DIR,
                         help='directory where buildtools SDK will be installed (optional)',
                         action='store')
+    parser.add_argument('--keep-downloads-directory',
+                        help='use this directory for tarball/checksum downloads and do not erase them (default is a temporary directory which is deleted after unpacking and installing the buildtools)',
+                        action='store')
     parser.add_argument('-r', '--release',
                         default=DEFAULT_RELEASE,
                         help='Yocto Project release string for SDK which will be '
@@ -235,11 +238,11 @@ def main():
                 safe_filename = quote(filename)
                 buildtools_url = "%s/%s/buildtools/%s" % (base_url, args.release, safe_filename)
 
-    tmpsdk_dir = tempfile.mkdtemp()
+    sdk_dir = args.keep_downloads_directory or tempfile.mkdtemp()
     try:
         # Fetch installer
         logger.info("Fetching buildtools installer")
-        tmpbuildtools = os.path.join(tmpsdk_dir, filename)
+        tmpbuildtools = os.path.join(sdk_dir, filename)
         ret = subprocess.call("wget -q -O %s %s" %
                               (tmpbuildtools, buildtools_url), shell=True)
         if ret != 0:
@@ -252,7 +255,7 @@ def main():
             checksum_type = "sha256sum"
             check_url = "{}.{}".format(buildtools_url, checksum_type)
             checksum_filename = "{}.{}".format(filename, checksum_type)
-            tmpbuildtools_checksum = os.path.join(tmpsdk_dir, checksum_filename)
+            tmpbuildtools_checksum = os.path.join(sdk_dir, checksum_filename)
             ret = subprocess.call("wget -q -O %s %s" %
                                     (tmpbuildtools_checksum, check_url), shell=True)
             if ret != 0:
@@ -347,7 +350,8 @@ def main():
 
     finally:
         # cleanup tmp directory
-        shutil.rmtree(tmpsdk_dir)
+        if not args.keep_downloads_directory:
+            shutil.rmtree(sdk_dir)
 
 
 if __name__ == '__main__':
-- 
2.39.5



^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-03-13 11:17 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-11 10:41 [PATCH 1/2] scripts/install-buildtools: add an option to preserve downloads Alexander Kanavin
2025-03-11 10:41 ` [PATCH 2/2] scripts/install-buildtools: write download URLs to files for traceability Alexander Kanavin
2025-03-13 11:17   ` [OE-core] " Richard Purdie
2025-03-11 10:46 ` Patchtest results for [PATCH 1/2] scripts/install-buildtools: add an option to preserve downloads patchtest
2025-03-13 11:03 ` [OE-core] " Antonin Godard
2025-03-13 11:15 ` Richard Purdie

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.