[OE-core] [PATCH 2/3] recipetool: create: handle git URLs specifying only a tag

Christopher Larson kergoth at gmail.com
Tue Aug 15 14:14:49 UTC 2017


rev-parse is a better bet than rev-list for ref validation, IMO.

On Tue, Aug 15, 2017 at 1:24 AM, Chang Rebecca Swee Fun <
rebecca.swee.fun.chang at intel.com> wrote:

> From: Stanley Phoong <stanley.cheong.kwan.phoong at intel.com>
>
> If a git URL is passed to recipetool create with a tag=, recipetool
> should handle it assuming that the tag is valid.
>
> [YOCTO #11393]
>
> Signed-off-by: Stanley Phoong <stanley.cheong.kwan.phoong at intel.com>
> ---
>  scripts/lib/recipetool/create.py | 23 ++++++++++++++++++++++-
>  1 file changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/
> create.py
> index d2e6fc0..52c10e5 100644
> --- a/scripts/lib/recipetool/create.py
> +++ b/scripts/lib/recipetool/create.py
> @@ -423,6 +423,7 @@ def create_recipe(args):
>      srcsubdir = ''
>      srcrev = '${AUTOREV}'
>      srcbranch = ''
> +    storeTagName = ''
>
>      if os.path.isfile(source):
>          source = 'file://%s' % os.path.abspath(source)
> @@ -446,13 +447,21 @@ def create_recipe(args):
>          scheme, network, path, user, passwd, params =
> bb.fetch2.decodeurl(fetchuri)
>          srcbranch = params.get('branch')
>          nobranch = params.get('nobranch')
> +        tag = params.get('tag')
>          if not srcbranch and not nobranch and srcrev != '${AUTOREV}':
>              # Append nobranch=1 in the following conditions:
>              # 1. User did not set 'branch=' in srcuri, and
>              # 2. User did not set 'nobranch=1' in srcuri, and
>              # 3. Source revision is not '${AUTOREV}'
>              params['nobranch'] = '1'
> -            fetchuri = bb.fetch2.encodeurl((scheme, network, path, user,
> passwd, params))
> +        if tag:
> +            # Keep a copy of tag and append nobranch=1 then remove tag
> from URL.
> +            # Bitbake fetcher unable to fetch when {AUTOREV} and tag is
> set at the same time.
> +            # We will re-introduce tag argument after bitbake fetcher
> process is complete.
> +            storeTagName = params['tag']
> +            params['nobranch'] = '1'
> +            del params['tag']
> +        fetchuri = bb.fetch2.encodeurl((scheme, network, path, user,
> passwd, params))
>
>          tmpparent = tinfoil.config_data.getVar('BASE_WORKDIR')
>          bb.utils.mkdirhier(tmpparent)
> @@ -523,6 +532,18 @@ def create_recipe(args):
>              params['branch'] = srcbranch
>              srcuri = bb.fetch2.encodeurl((scheme, network, path, user,
> passwd, params))
>
> +        if storeTagName:
> +            # Re-introduced tag variable from storeTagName
> +            # Check srcrev using tag and check validity of the tag
> +            try:
> +                cmd = ('git rev-list -n 1 %s' % (storeTagName))
> +                check_tag, check_tag_err = bb.process.run('%s' % cmd,
> cwd=srctree)
> +                srcrev = check_tag.split()[0]
> +            except bb.process.ExecutionError as err:
> +                logger.error(str(err))
> +                logger.error("Possibly wrong tag name is provided")
> +                sys.exit(1)
> +
>          if os.path.exists(os.path.join(srctree, '.gitmodules')) and
> srcuri.startswith('git://'):
>              srcuri = 'gitsm://' + srcuri[6:]
>              logger.info('Fetching submodules...')
> --
> 2.7.4
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>



-- 
Christopher Larson
kergoth at gmail dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Senior Software Engineer, Mentor Graphics
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20170815/bc993378/attachment-0002.html>


More information about the Openembedded-core mailing list