mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-05 05:04:44 +02:00
scripts/install-buildtools: add an option to specify where downloads go
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 feature to install the buildtools (exact implementation details tbd) would ensure the tarball remains available on local disk. (From OE-Core rev: fc8cedd899f7e5d06215a71808dd0827ccdcf849) Signed-off-by: Alexander Kanavin <alex@linutronix.de> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
ae398ec14e
commit
157685ca87
|
@ -142,6 +142,9 @@ def main():
|
|||
default=DEFAULT_INSTALL_DIR,
|
||||
help='directory where buildtools SDK will be installed (optional)',
|
||||
action='store')
|
||||
parser.add_argument('--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,12 @@ 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.downloads_directory or tempfile.mkdtemp()
|
||||
os.makedirs(sdk_dir, exist_ok=True)
|
||||
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 +256,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 +351,8 @@ def main():
|
|||
|
||||
finally:
|
||||
# cleanup tmp directory
|
||||
shutil.rmtree(tmpsdk_dir)
|
||||
if not args.downloads_directory:
|
||||
shutil.rmtree(sdk_dir)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
Loading…
Reference in New Issue
Block a user