Re: [OE-core] [PATCH 1/4] scripts/install-buildtools: improvements

Andre McCurdy
2020-04-01T20:09:41Z

On Mon, Mar 30, 2020 at 12:43 PM Tim Orling
<timothy.t.orling@linux.intel.com> wrote:
>
> * Install directory defaults to scripts/../buildtools
> e.g. --directory is set by default
> This avoids the user having to type in their sudo password
> to install in /opt/poky/<installer-version>
>
> * Use "." rather than "source" for sourcing the environment script
> as not all distros (e.g. Debian) have "source" by default.
>
> * Add buildtools/ to .gitignore
>
> * Fix typos in example usage (--install-version -> --installer-version)
>
> [YOCTO #13832]
>
> Signed-off-by: Tim Orling <timothy.t.orling@linux.intel.com>
> ---
> .gitignore | 1 +
> scripts/install-buildtools | 13 +++++++++----
> 2 files changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/.gitignore b/.gitignore
> index d0e6b2fb89..b66d371aac 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -9,6 +9,7 @@ pstage/
> scripts/oe-git-proxy-socks
> sources/
> meta-*/
> +buildtools/
> !meta-skeleton
> !meta-selftest
> hob-image-*.bb
> diff --git a/scripts/install-buildtools b/scripts/install-buildtools
> index 0947e9c4d6..49cab1345a 100755
> --- a/scripts/install-buildtools
> +++ b/scripts/install-buildtools
> @@ -17,7 +17,7 @@
> # $ install-buildtools \
> # --base-url http://downloads.yoctoproject.org/releases/yocto \
> # --release yocto-3.1_M2 \
> -# --install-version 3.0+snapshot
> +# --installer-version 3.0+snapshot
> # --build-date 202000122
> #
> # Example usage (standard buildtools from release):
> @@ -29,7 +29,7 @@
> # $ install-buildtools --without-extended-buildtools \
> # --base-url http://downloads.yoctoproject.org/releases/yocto \
> # --release yocto-3.0.2 \
> -# --install-version 3.0.2
> +# --installer-version 3.0.2
> #
>
> import argparse
> @@ -59,6 +59,7 @@ if not bitbakepath:
> PROGNAME = 'install-buildtools'
> logger = scriptutils.logger_create(PROGNAME, stream=sys.stdout)
>
> +DEFAULT_INSTALL_DIR: str = os.path.join(os.path.split(scripts_path)[0],'buildtools')

It looks like there are some assumptions about the minimum version of
python3 on the host in order to even be able to run
install-buildtools. Should that be checked explicitly?

> DEFAULT_BASE_URL: str = 'http://downloads.yoctoproject.org/releases/yocto'
> DEFAULT_RELEASE: str = 'yocto-3.1_M2'
> DEFAULT_INSTALLER_VERSION: str = '3.0+snapshot'
> @@ -66,6 +67,7 @@ DEFAULT_BUILDDATE: str = "20200122"
>
>
> def main():
> + global DEFAULT_INSTALL_DIR
> global DEFAULT_BASE_URL
> global DEFAULT_RELEASE
> global DEFAULT_INSTALLER_VERSION
> @@ -73,6 +75,7 @@ def main():
> filename: str = ""
> release: str = ""
> buildtools_url: str = ""
> + install_dir: str = ""
>
> parser = argparse.ArgumentParser(
> description="Buildtools installation helper",
> @@ -87,6 +90,7 @@ def main():
> '(optional)\nRequires --url',
> action='store')
> parser.add_argument('-d', '--directory',
> + default=DEFAULT_INSTALL_DIR,
> help='directory where buildtools SDK will be installed (optional)',
> action='store')
> parser.add_argument('-r', '--release',
> @@ -216,12 +220,12 @@ def main():
> st = os.stat(tmpbuildtools)
> os.chmod(tmpbuildtools, st.st_mode | stat.S_IEXEC)
> logger.debug(os.stat(tmpbuildtools))
> - install_dir = "/opt/poky/%s" % args.installer_version
> if args.directory:
> install_dir = args.directory
> ret = subprocess.call("%s -d %s -y" %
> (tmpbuildtools, install_dir), shell=True)
> else:
> + install_dir = "/opt/poky/%s" % args.installer_version
> ret = subprocess.call("%s -y" % tmpbuildtools, shell=True)
> if ret != 0:
> logger.error("Could not run buildtools installer")
> @@ -238,7 +242,8 @@ def main():
> tool = 'gcc'
> else:
> tool = 'tar'
> - proc = subprocess.run("source %s/environment-setup-x86_64-pokysdk-linux && which %s" %
> + logger.debug("install_dir: %s" % install_dir)
> + proc = subprocess.run(". %s/environment-setup-x86_64-pokysdk-linux && which %s" %
> (install_dir, tool),
> shell=True, stdout=subprocess.PIPE)
> which_tool = proc.stdout.decode("utf-8")
> --
> 2.24.0
>
>