* [layerindex-web][PATCH 0/1] import_layer.py: add -t option for layer_type
@ 2018-07-23 10:30 Robert Yang
2018-07-23 10:30 ` [layerindex-web][PATCH 1/1] " Robert Yang
0 siblings, 1 reply; 7+ messages in thread
From: Robert Yang @ 2018-07-23 10:30 UTC (permalink / raw)
To: yocto, paul.eggleton
The following changes since commit 65d058237f96a151c913a70ba4d639c7aa0fb0b5:
Dockerfile: Reduce image size by merging RUN stages together (2018-07-23 08:40:00 +0200)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib rbt/li
http://git.pokylinux.org/cgit.cgi//log/?h=rbt/li
Robert Yang (1):
import_layer.py: add -t option for layer_type
layerindex/tools/import_layer.py | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 7+ messages in thread
* [layerindex-web][PATCH 1/1] import_layer.py: add -t option for layer_type
2018-07-23 10:30 [layerindex-web][PATCH 0/1] import_layer.py: add -t option for layer_type Robert Yang
@ 2018-07-23 10:30 ` Robert Yang
2018-07-24 8:33 ` Paul Eggleton
0 siblings, 1 reply; 7+ messages in thread
From: Robert Yang @ 2018-07-23 10:30 UTC (permalink / raw)
To: yocto, paul.eggleton
Now the logic is:
Use options.layer_type if specified, guess if not, default to 'M'.
Note choices=['A', 'B', 'S', 'D', 'M', ''], the '' is for default='', we can't
use default='M' here, otherwise we don't know whether the 'M' is specified by
user or not, we don't guess if it is specified by user, otherwise, guess.
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
layerindex/tools/import_layer.py | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/layerindex/tools/import_layer.py b/layerindex/tools/import_layer.py
index 2413cff..0d501f6 100755
--- a/layerindex/tools/import_layer.py
+++ b/layerindex/tools/import_layer.py
@@ -189,6 +189,10 @@ def main():
parser.add_option("-s", "--subdir",
help = "Specify subdirectory",
action="store", dest="subdir")
+ parser.add_option("-t", "--type",
+ help = "Specify layer type. A: Base, B: Machine(BSP), S: Software, D: Distribution, M: Miscellaneous",
+ choices=['A', 'B', 'S', 'D', 'M', ''],
+ action="store", dest="layer_type", default='')
parser.add_option("-n", "--dry-run",
help = "Don't write any data back to the database",
action="store_true", dest="dryrun")
@@ -263,7 +267,6 @@ def main():
layer = LayerItem()
layer.name = layer_name
layer.status = 'P'
- layer.layer_type = 'M'
layer.summary = 'tempvalue'
layer.description = layer.summary
@@ -349,11 +352,18 @@ def main():
logger.info('Creating layer %s' % layer.name)
- # Guess layer type
- if glob.glob(os.path.join(layerdir, 'conf/distro/*.conf')):
+ # Guess layer type if not specified
+ if options.layer_type:
+ layer.layer_type = options.layer_type
+ elif layer.name in ['openembedded-core', 'meta-oe']:
+ layer.layer_type = 'A'
+ elif glob.glob(os.path.join(layerdir, 'conf/distro/*.conf')):
layer.layer_type = 'D'
elif glob.glob(os.path.join(layerdir, 'conf/machine/*.conf')):
layer.layer_type = 'B'
+ else:
+ layer.layer_type = 'M'
+
layer.save()
layerbranch = LayerBranch()
layerbranch.layer = layer
@@ -411,11 +421,9 @@ def main():
if layer.name == 'openembedded-core':
layer.summary = 'Core metadata'
- layer.layer_type = 'A'
elif layer.name == 'meta-oe':
layer.summary = 'Additional shared OE metadata'
layer.description = layer.summary
- layer.layer_type = 'A'
if maintainers:
maint_re = re.compile(r'^"?([^"@$<>]+)"? *<([^<> ]+)>[ -]*(.+)?$')
--
2.7.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [layerindex-web][PATCH 1/1] import_layer.py: add -t option for layer_type
2018-07-23 10:30 ` [layerindex-web][PATCH 1/1] " Robert Yang
@ 2018-07-24 8:33 ` Paul Eggleton
2018-07-31 7:57 ` Robert Yang
0 siblings, 1 reply; 7+ messages in thread
From: Paul Eggleton @ 2018-07-24 8:33 UTC (permalink / raw)
To: Robert Yang; +Cc: yocto
Hi Robert,
On Monday, 23 July 2018 12:30:01 PM CEST Robert Yang wrote:
> Now the logic is:
> Use options.layer_type if specified, guess if not, default to 'M'.
>
> Note choices=['A', 'B', 'S', 'D', 'M', ''], the '' is for default='', we can't
> use default='M' here, otherwise we don't know whether the 'M' is specified by
> user or not, we don't guess if it is specified by user, otherwise, guess.
>
> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
> ---
> layerindex/tools/import_layer.py | 18 +++++++++++++-----
> 1 file changed, 13 insertions(+), 5 deletions(-)
>
> diff --git a/layerindex/tools/import_layer.py b/layerindex/tools/import_layer.py
> index 2413cff..0d501f6 100755
> --- a/layerindex/tools/import_layer.py
> +++ b/layerindex/tools/import_layer.py
> @@ -189,6 +189,10 @@ def main():
> parser.add_option("-s", "--subdir",
> help = "Specify subdirectory",
> action="store", dest="subdir")
> + parser.add_option("-t", "--type",
> + help = "Specify layer type. A: Base, B: Machine(BSP), S: Software, D: Distribution, M: Miscellaneous",
> + choices=['A', 'B', 'S', 'D', 'M', ''],
> + action="store", dest="layer_type", default='')
If it's practical to do, could you make this part of the code use
LayerItem.LAYER_TYPE_CHOICES from models.py so that this will work
if that is extended in future? Of course that will mean initialising Django
earlier, I'm not sure if that will have any side-effects that we wouldn't want.
If you could give that a try though that would be great.
Thanks,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [layerindex-web][PATCH 1/1] import_layer.py: add -t option for layer_type
2018-07-24 8:33 ` Paul Eggleton
@ 2018-07-31 7:57 ` Robert Yang
2018-08-30 2:05 ` Robert Yang
0 siblings, 1 reply; 7+ messages in thread
From: Robert Yang @ 2018-07-31 7:57 UTC (permalink / raw)
To: Paul Eggleton; +Cc: yocto
Hi Paul,
On 07/24/2018 04:33 PM, Paul Eggleton wrote:
> Hi Robert,
>
> On Monday, 23 July 2018 12:30:01 PM CEST Robert Yang wrote:
>> Now the logic is:
>> Use options.layer_type if specified, guess if not, default to 'M'.
>>
>> Note choices=['A', 'B', 'S', 'D', 'M', ''], the '' is for default='', we can't
>> use default='M' here, otherwise we don't know whether the 'M' is specified by
>> user or not, we don't guess if it is specified by user, otherwise, guess.
>>
>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
>> ---
>> layerindex/tools/import_layer.py | 18 +++++++++++++-----
>> 1 file changed, 13 insertions(+), 5 deletions(-)
>>
>> diff --git a/layerindex/tools/import_layer.py b/layerindex/tools/import_layer.py
>> index 2413cff..0d501f6 100755
>> --- a/layerindex/tools/import_layer.py
>> +++ b/layerindex/tools/import_layer.py
>> @@ -189,6 +189,10 @@ def main():
>> parser.add_option("-s", "--subdir",
>> help = "Specify subdirectory",
>> action="store", dest="subdir")
>> + parser.add_option("-t", "--type",
>> + help = "Specify layer type. A: Base, B: Machine(BSP), S: Software, D: Distribution, M: Miscellaneous",
>> + choices=['A', 'B', 'S', 'D', 'M', ''],
>> + action="store", dest="layer_type", default='')
>
> If it's practical to do, could you make this part of the code use
> LayerItem.LAYER_TYPE_CHOICES from models.py so that this will work
> if that is extended in future? Of course that will mean initialising Django
> earlier, I'm not sure if that will have any side-effects that we wouldn't want.
> If you could give that a try though that would be great.
I think that the easies way is move the definition of LAYER_TYPE_CHOICES
to utils.py, then we can use utils.LAYER_TYPE_CHOICES in both models.py
and tools/import_layer.py
I've updated it in the repo:
git://git.pokylinux.org/poky-contrib rbt/li
http://git.pokylinux.org/cgit.cgi//log/?h=rbt/li
commit aeb1fd6a8f10b40637121643fc7df2f17c9cd87c
Author: Robert Yang <liezhi.yang@windriver.com>
Date: Mon Jul 9 15:28:10 2018 +0800
import_layer.py: add -t option for layer_type
Now the logic is:
Use options.layer_type if specified, and guess if not. Default to 'M'.
Note choices=['A', 'B', 'S', 'D', 'M', ''], the '' is for default='', we can't
use default='M' here, otherwise we don't know whether the 'M' is specified by
user or is the default value, we don't guess if it is specified by user,
otherwise, guess.
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
diff --git a/layerindex/models.py b/layerindex/models.py
index e5c8052..1ff653f 100644
--- a/layerindex/models.py
+++ b/layerindex/models.py
@@ -102,14 +102,8 @@ class LayerItem(models.Model):
('P', 'Published'),
('X', 'No update'),
)
- LAYER_TYPE_CHOICES = (
- ('A', 'Base'),
- ('B', 'Machine (BSP)'),
- ('S', 'Software'),
- ('D', 'Distribution'),
- ('W', 'WRTemplates'),
- ('M', 'Miscellaneous'),
- )
+ LAYER_TYPE_CHOICES = utils.LAYER_TYPE_CHOICES
+
name = models.CharField('Layer name', max_length=40, unique=True,
help_text='Name of the layer - must be unique and can only contain letters,
numbers and dashes')
status = models.CharField(max_length=1, choices=LAYER_STATUS_CHOICES,
default='N')
layer_type = models.CharField(max_length=1, choices=LAYER_TYPE_CHOICES)
diff --git a/layerindex/tools/import_layer.py b/layerindex/tools/import_layer.py
index 2413cff..5373cce 100755
--- a/layerindex/tools/import_layer.py
+++ b/layerindex/tools/import_layer.py
@@ -178,6 +178,21 @@ def get_github_layerinfo(layer_url, username = None,
password = None):
return (json_data, owner_json_data)
+def get_layer_type_choices():
+ """
+ Return help string and choices for --type.
+ """
+ help_str = "Specify layer type."
+ choices = []
+ for i in utils.LAYER_TYPE_CHOICES:
+ key, description = i
+ help_str += ' %s: %s,' % (key, description)
+ choices.append(key)
+
+ help_str = help_str.rstrip(',')
+ choices.append('')
+
+ return (help_str, choices)
def main():
valid_layer_name = re.compile('[-\w]+$')
@@ -186,9 +201,15 @@ def main():
usage = """
%prog [options] <url> [name]""")
+ layer_type_help, layer_type_choices = get_layer_type_choices()
+
parser.add_option("-s", "--subdir",
help = "Specify subdirectory",
action="store", dest="subdir")
+ parser.add_option("-t", "--type",
+ help = layer_type_help,
+ choices = layer_type_choices,
+ action="store", dest="layer_type", default='')
parser.add_option("-n", "--dry-run",
help = "Don't write any data back to the database",
action="store_true", dest="dryrun")
@@ -263,7 +284,6 @@ def main():
layer = LayerItem()
layer.name = layer_name
layer.status = 'P'
- layer.layer_type = 'M'
layer.summary = 'tempvalue'
layer.description = layer.summary
@@ -349,11 +369,18 @@ def main():
logger.info('Creating layer %s' % layer.name)
- # Guess layer type
- if glob.glob(os.path.join(layerdir, 'conf/distro/*.conf')):
+ # Guess layer type if not specified
+ if options.layer_type:
+ layer.layer_type = options.layer_type
+ elif layer.name in ['openembedded-core', 'meta-oe']:
+ layer.layer_type = 'A'
+ elif glob.glob(os.path.join(layerdir, 'conf/distro/*.conf')):
layer.layer_type = 'D'
elif glob.glob(os.path.join(layerdir, 'conf/machine/*.conf')):
layer.layer_type = 'B'
+ else:
+ layer.layer_type = 'M'
+
layer.save()
layerbranch = LayerBranch()
layerbranch.layer = layer
@@ -411,11 +438,9 @@ def main():
if layer.name == 'openembedded-core':
layer.summary = 'Core metadata'
- layer.layer_type = 'A'
elif layer.name == 'meta-oe':
layer.summary = 'Additional shared OE metadata'
layer.description = layer.summary
- layer.layer_type = 'A'
if maintainers:
maint_re = re.compile(r'^"?([^"@$<>]+)"? *<([^<> ]+)>[
-]*(.+)?$')
diff --git a/layerindex/utils.py b/layerindex/utils.py
index 861a841..5f44754 100644
--- a/layerindex/utils.py
+++ b/layerindex/utils.py
@@ -15,6 +15,15 @@ import fcntl
import signal
import codecs
+LAYER_TYPE_CHOICES = (
+ ('A', 'Base'),
+ ('B', 'Machine (BSP)'),
+ ('S', 'Software'),
+ ('D', 'Distribution'),
+ ('W', 'WRTemplates'),
+ ('M', 'Miscellaneous'),
+)
+
def get_branch(branchname):
from layerindex.models import Branch
res = list(Branch.objects.filter(name=branchname)[:1])
// Robert
>
> Thanks,
> Paul
>
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [layerindex-web][PATCH 1/1] import_layer.py: add -t option for layer_type
2018-07-31 7:57 ` Robert Yang
@ 2018-08-30 2:05 ` Robert Yang
2018-08-30 6:20 ` Paul Eggleton
0 siblings, 1 reply; 7+ messages in thread
From: Robert Yang @ 2018-08-30 2:05 UTC (permalink / raw)
To: Paul Eggleton; +Cc: yocto
Hi Paul,
Do you have any comments on this, please ?
// Robert
On 07/31/2018 03:57 PM, Robert Yang wrote:
> Hi Paul,
>
> On 07/24/2018 04:33 PM, Paul Eggleton wrote:
>> Hi Robert,
>>
>> On Monday, 23 July 2018 12:30:01 PM CEST Robert Yang wrote:
>>> Now the logic is:
>>> Use options.layer_type if specified, guess if not, default to 'M'.
>>>
>>> Note choices=['A', 'B', 'S', 'D', 'M', ''], the '' is for default='', we can't
>>> use default='M' here, otherwise we don't know whether the 'M' is specified by
>>> user or not, we don't guess if it is specified by user, otherwise, guess.
>>>
>>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
>>> ---
>>> layerindex/tools/import_layer.py | 18 +++++++++++++-----
>>> 1 file changed, 13 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/layerindex/tools/import_layer.py b/layerindex/tools/import_layer.py
>>> index 2413cff..0d501f6 100755
>>> --- a/layerindex/tools/import_layer.py
>>> +++ b/layerindex/tools/import_layer.py
>>> @@ -189,6 +189,10 @@ def main():
>>> parser.add_option("-s", "--subdir",
>>> help = "Specify subdirectory",
>>> action="store", dest="subdir")
>>> + parser.add_option("-t", "--type",
>>> + help = "Specify layer type. A: Base, B: Machine(BSP), S:
>>> Software, D: Distribution, M: Miscellaneous",
>>> + choices=['A', 'B', 'S', 'D', 'M', ''],
>>> + action="store", dest="layer_type", default='')
>>
>> If it's practical to do, could you make this part of the code use
>> LayerItem.LAYER_TYPE_CHOICES from models.py so that this will work
>> if that is extended in future? Of course that will mean initialising Django
>> earlier, I'm not sure if that will have any side-effects that we wouldn't want.
>> If you could give that a try though that would be great.
>
> I think that the easies way is move the definition of LAYER_TYPE_CHOICES
> to utils.py, then we can use utils.LAYER_TYPE_CHOICES in both models.py
> and tools/import_layer.py
>
> I've updated it in the repo:
>
> git://git.pokylinux.org/poky-contrib rbt/li
> http://git.pokylinux.org/cgit.cgi//log/?h=rbt/li
>
> commit aeb1fd6a8f10b40637121643fc7df2f17c9cd87c
> Author: Robert Yang <liezhi.yang@windriver.com>
> Date: Mon Jul 9 15:28:10 2018 +0800
>
> import_layer.py: add -t option for layer_type
>
> Now the logic is:
> Use options.layer_type if specified, and guess if not. Default to 'M'.
>
> Note choices=['A', 'B', 'S', 'D', 'M', ''], the '' is for default='', we can't
> use default='M' here, otherwise we don't know whether the 'M' is specified by
> user or is the default value, we don't guess if it is specified by user,
> otherwise, guess.
>
> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
>
> diff --git a/layerindex/models.py b/layerindex/models.py
> index e5c8052..1ff653f 100644
> --- a/layerindex/models.py
> +++ b/layerindex/models.py
> @@ -102,14 +102,8 @@ class LayerItem(models.Model):
> ('P', 'Published'),
> ('X', 'No update'),
> )
> - LAYER_TYPE_CHOICES = (
> - ('A', 'Base'),
> - ('B', 'Machine (BSP)'),
> - ('S', 'Software'),
> - ('D', 'Distribution'),
> - ('W', 'WRTemplates'),
> - ('M', 'Miscellaneous'),
> - )
> + LAYER_TYPE_CHOICES = utils.LAYER_TYPE_CHOICES
> +
> name = models.CharField('Layer name', max_length=40, unique=True,
> help_text='Name of the layer - must be unique and can only contain letters,
> numbers and dashes')
> status = models.CharField(max_length=1, choices=LAYER_STATUS_CHOICES,
> default='N')
> layer_type = models.CharField(max_length=1, choices=LAYER_TYPE_CHOICES)
> diff --git a/layerindex/tools/import_layer.py b/layerindex/tools/import_layer.py
> index 2413cff..5373cce 100755
> --- a/layerindex/tools/import_layer.py
> +++ b/layerindex/tools/import_layer.py
> @@ -178,6 +178,21 @@ def get_github_layerinfo(layer_url, username = None,
> password = None):
>
> return (json_data, owner_json_data)
>
> +def get_layer_type_choices():
> + """
> + Return help string and choices for --type.
> + """
> + help_str = "Specify layer type."
> + choices = []
> + for i in utils.LAYER_TYPE_CHOICES:
> + key, description = i
> + help_str += ' %s: %s,' % (key, description)
> + choices.append(key)
> +
> + help_str = help_str.rstrip(',')
> + choices.append('')
> +
> + return (help_str, choices)
>
> def main():
> valid_layer_name = re.compile('[-\w]+$')
> @@ -186,9 +201,15 @@ def main():
> usage = """
> %prog [options] <url> [name]""")
>
> + layer_type_help, layer_type_choices = get_layer_type_choices()
> +
> parser.add_option("-s", "--subdir",
> help = "Specify subdirectory",
> action="store", dest="subdir")
> + parser.add_option("-t", "--type",
> + help = layer_type_help,
> + choices = layer_type_choices,
> + action="store", dest="layer_type", default='')
> parser.add_option("-n", "--dry-run",
> help = "Don't write any data back to the database",
> action="store_true", dest="dryrun")
> @@ -263,7 +284,6 @@ def main():
> layer = LayerItem()
> layer.name = layer_name
> layer.status = 'P'
> - layer.layer_type = 'M'
> layer.summary = 'tempvalue'
> layer.description = layer.summary
>
> @@ -349,11 +369,18 @@ def main():
>
>
> logger.info('Creating layer %s' % layer.name)
> - # Guess layer type
> - if glob.glob(os.path.join(layerdir, 'conf/distro/*.conf')):
> + # Guess layer type if not specified
> + if options.layer_type:
> + layer.layer_type = options.layer_type
> + elif layer.name in ['openembedded-core', 'meta-oe']:
> + layer.layer_type = 'A'
> + elif glob.glob(os.path.join(layerdir, 'conf/distro/*.conf')):
> layer.layer_type = 'D'
> elif glob.glob(os.path.join(layerdir, 'conf/machine/*.conf')):
> layer.layer_type = 'B'
> + else:
> + layer.layer_type = 'M'
> +
> layer.save()
> layerbranch = LayerBranch()
> layerbranch.layer = layer
> @@ -411,11 +438,9 @@ def main():
>
> if layer.name == 'openembedded-core':
> layer.summary = 'Core metadata'
> - layer.layer_type = 'A'
> elif layer.name == 'meta-oe':
> layer.summary = 'Additional shared OE metadata'
> layer.description = layer.summary
> - layer.layer_type = 'A'
>
> if maintainers:
> maint_re = re.compile(r'^"?([^"@$<>]+)"? *<([^<> ]+)>[
> -]*(.+)?$')
> diff --git a/layerindex/utils.py b/layerindex/utils.py
> index 861a841..5f44754 100644
> --- a/layerindex/utils.py
> +++ b/layerindex/utils.py
> @@ -15,6 +15,15 @@ import fcntl
> import signal
> import codecs
>
> +LAYER_TYPE_CHOICES = (
> + ('A', 'Base'),
> + ('B', 'Machine (BSP)'),
> + ('S', 'Software'),
> + ('D', 'Distribution'),
> + ('W', 'WRTemplates'),
> + ('M', 'Miscellaneous'),
> +)
> +
> def get_branch(branchname):
> from layerindex.models import Branch
> res = list(Branch.objects.filter(name=branchname)[:1])
>
> // Robert
>>
>> Thanks,
>> Paul
>>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [layerindex-web][PATCH 1/1] import_layer.py: add -t option for layer_type
2018-08-30 2:05 ` Robert Yang
@ 2018-08-30 6:20 ` Paul Eggleton
2018-08-30 6:39 ` Robert Yang
0 siblings, 1 reply; 7+ messages in thread
From: Paul Eggleton @ 2018-08-30 6:20 UTC (permalink / raw)
To: Robert Yang; +Cc: yocto
Hi Robert
Sorry I meant to reply earlier.
I'm not especially happy with moving the constants to utils.py. Is there any
way we can avoid that?
Thanks
Paul
On Thursday, 30 August 2018 2:05:11 PM NZST Robert Yang wrote:
> Hi Paul,
>
> Do you have any comments on this, please ?
>
> // Robert
>
> On 07/31/2018 03:57 PM, Robert Yang wrote:
> > Hi Paul,
> >
> > On 07/24/2018 04:33 PM, Paul Eggleton wrote:
> >> Hi Robert,
> >>
> >> On Monday, 23 July 2018 12:30:01 PM CEST Robert Yang wrote:
> >>> Now the logic is:
> >>> Use options.layer_type if specified, guess if not, default to 'M'.
> >>>
> >>> Note choices=['A', 'B', 'S', 'D', 'M', ''], the '' is for default='', we
can't
> >>> use default='M' here, otherwise we don't know whether the 'M' is
specified by
> >>> user or not, we don't guess if it is specified by user, otherwise,
guess.
> >>>
> >>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
> >>> ---
> >>> layerindex/tools/import_layer.py | 18 +++++++++++++-----
> >>> 1 file changed, 13 insertions(+), 5 deletions(-)
> >>>
> >>> diff --git a/layerindex/tools/import_layer.py b/layerindex/tools/
import_layer.py
> >>> index 2413cff..0d501f6 100755
> >>> --- a/layerindex/tools/import_layer.py
> >>> +++ b/layerindex/tools/import_layer.py
> >>> @@ -189,6 +189,10 @@ def main():
> >>> parser.add_option("-s", "--subdir",
> >>> help = "Specify subdirectory",
> >>> action="store", dest="subdir")
> >>> + parser.add_option("-t", "--type",
> >>> + help = "Specify layer type. A: Base, B: Machine(BSP), S:
> >>> Software, D: Distribution, M: Miscellaneous",
> >>> + choices=['A', 'B', 'S', 'D', 'M', ''],
> >>> + action="store", dest="layer_type", default='')
> >>
> >> If it's practical to do, could you make this part of the code use
> >> LayerItem.LAYER_TYPE_CHOICES from models.py so that this will work
> >> if that is extended in future? Of course that will mean initialising
Django
> >> earlier, I'm not sure if that will have any side-effects that we wouldn't
want.
> >> If you could give that a try though that would be great.
> >
> > I think that the easies way is move the definition of LAYER_TYPE_CHOICES
> > to utils.py, then we can use utils.LAYER_TYPE_CHOICES in both models.py
> > and tools/import_layer.py
> >
> > I've updated it in the repo:
> >
> > git://git.pokylinux.org/poky-contrib rbt/li
> > http://git.pokylinux.org/cgit.cgi//log/?h=rbt/li
> >
> > commit aeb1fd6a8f10b40637121643fc7df2f17c9cd87c
> > Author: Robert Yang <liezhi.yang@windriver.com>
> > Date: Mon Jul 9 15:28:10 2018 +0800
> >
> > import_layer.py: add -t option for layer_type
> >
> > Now the logic is:
> > Use options.layer_type if specified, and guess if not. Default to
'M'.
> >
> > Note choices=['A', 'B', 'S', 'D', 'M', ''], the '' is for default='',
we can't
> > use default='M' here, otherwise we don't know whether the 'M' is
specified by
> > user or is the default value, we don't guess if it is specified by
user,
> > otherwise, guess.
> >
> > Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
> >
> > diff --git a/layerindex/models.py b/layerindex/models.py
> > index e5c8052..1ff653f 100644
> > --- a/layerindex/models.py
> > +++ b/layerindex/models.py
> > @@ -102,14 +102,8 @@ class LayerItem(models.Model):
> > ('P', 'Published'),
> > ('X', 'No update'),
> > )
> > - LAYER_TYPE_CHOICES = (
> > - ('A', 'Base'),
> > - ('B', 'Machine (BSP)'),
> > - ('S', 'Software'),
> > - ('D', 'Distribution'),
> > - ('W', 'WRTemplates'),
> > - ('M', 'Miscellaneous'),
> > - )
> > + LAYER_TYPE_CHOICES = utils.LAYER_TYPE_CHOICES
> > +
> > name = models.CharField('Layer name', max_length=40, unique=True,
> > help_text='Name of the layer - must be unique and can only contain
letters,
> > numbers and dashes')
> > status = models.CharField(max_length=1,
choices=LAYER_STATUS_CHOICES,
> > default='N')
> > layer_type = models.CharField(max_length=1,
choices=LAYER_TYPE_CHOICES)
> > diff --git a/layerindex/tools/import_layer.py b/layerindex/tools/
import_layer.py
> > index 2413cff..5373cce 100755
> > --- a/layerindex/tools/import_layer.py
> > +++ b/layerindex/tools/import_layer.py
> > @@ -178,6 +178,21 @@ def get_github_layerinfo(layer_url, username = None,
> > password = None):
> >
> > return (json_data, owner_json_data)
> >
> > +def get_layer_type_choices():
> > + """
> > + Return help string and choices for --type.
> > + """
> > + help_str = "Specify layer type."
> > + choices = []
> > + for i in utils.LAYER_TYPE_CHOICES:
> > + key, description = i
> > + help_str += ' %s: %s,' % (key, description)
> > + choices.append(key)
> > +
> > + help_str = help_str.rstrip(',')
> > + choices.append('')
> > +
> > + return (help_str, choices)
> >
> > def main():
> > valid_layer_name = re.compile('[-\w]+$')
> > @@ -186,9 +201,15 @@ def main():
> > usage = """
> > %prog [options] <url> [name]""")
> >
> > + layer_type_help, layer_type_choices = get_layer_type_choices()
> > +
> > parser.add_option("-s", "--subdir",
> > help = "Specify subdirectory",
> > action="store", dest="subdir")
> > + parser.add_option("-t", "--type",
> > + help = layer_type_help,
> > + choices = layer_type_choices,
> > + action="store", dest="layer_type", default='')
> > parser.add_option("-n", "--dry-run",
> > help = "Don't write any data back to the database",
> > action="store_true", dest="dryrun")
> > @@ -263,7 +284,6 @@ def main():
> > layer = LayerItem()
> > layer.name = layer_name
> > layer.status = 'P'
> > - layer.layer_type = 'M'
> > layer.summary = 'tempvalue'
> > layer.description = layer.summary
> >
> > @@ -349,11 +369,18 @@ def main():
> >
> >
> > logger.info('Creating layer %s' % layer.name)
> > - # Guess layer type
> > - if glob.glob(os.path.join(layerdir, 'conf/distro/
*.conf')):
> > + # Guess layer type if not specified
> > + if options.layer_type:
> > + layer.layer_type = options.layer_type
> > + elif layer.name in ['openembedded-core', 'meta-oe']:
> > + layer.layer_type = 'A'
> > + elif glob.glob(os.path.join(layerdir, 'conf/distro/
*.conf')):
> > layer.layer_type = 'D'
> > elif glob.glob(os.path.join(layerdir, 'conf/machine/
*.conf')):
> > layer.layer_type = 'B'
> > + else:
> > + layer.layer_type = 'M'
> > +
> > layer.save()
> > layerbranch = LayerBranch()
> > layerbranch.layer = layer
> > @@ -411,11 +438,9 @@ def main():
> >
> > if layer.name == 'openembedded-core':
> > layer.summary = 'Core metadata'
> > - layer.layer_type = 'A'
> > elif layer.name == 'meta-oe':
> > layer.summary = 'Additional shared OE metadata'
> > layer.description = layer.summary
> > - layer.layer_type = 'A'
> >
> > if maintainers:
> > maint_re = re.compile(r'^"?([^"@$<>]+)"? *<([^<> ]
+)>[
> > -]*(.+)?$')
> > diff --git a/layerindex/utils.py b/layerindex/utils.py
> > index 861a841..5f44754 100644
> > --- a/layerindex/utils.py
> > +++ b/layerindex/utils.py
> > @@ -15,6 +15,15 @@ import fcntl
> > import signal
> > import codecs
> >
> > +LAYER_TYPE_CHOICES = (
> > + ('A', 'Base'),
> > + ('B', 'Machine (BSP)'),
> > + ('S', 'Software'),
> > + ('D', 'Distribution'),
> > + ('W', 'WRTemplates'),
> > + ('M', 'Miscellaneous'),
> > +)
> > +
> > def get_branch(branchname):
> > from layerindex.models import Branch
> > res = list(Branch.objects.filter(name=branchname)[:1])
> >
> > // Robert
> >>
> >> Thanks,
> >> Paul
> >>
>
--
Paul Eggleton
Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [layerindex-web][PATCH 1/1] import_layer.py: add -t option for layer_type
2018-08-30 6:20 ` Paul Eggleton
@ 2018-08-30 6:39 ` Robert Yang
0 siblings, 0 replies; 7+ messages in thread
From: Robert Yang @ 2018-08-30 6:39 UTC (permalink / raw)
To: Paul Eggleton; +Cc: yocto
On 08/30/2018 02:20 PM, Paul Eggleton wrote:
> Hi Robert
>
> Sorry I meant to reply earlier.
>
> I'm not especially happy with moving the constants to utils.py. Is there any
> way we can avoid that?
I will try to import models.py, but that may make things complicated.
// Robert
>
> Thanks
> Paul
>
> On Thursday, 30 August 2018 2:05:11 PM NZST Robert Yang wrote:
>> Hi Paul,
>>
>> Do you have any comments on this, please ?
>>
>> // Robert
>>
>> On 07/31/2018 03:57 PM, Robert Yang wrote:
>>> Hi Paul,
>>>
>>> On 07/24/2018 04:33 PM, Paul Eggleton wrote:
>>>> Hi Robert,
>>>>
>>>> On Monday, 23 July 2018 12:30:01 PM CEST Robert Yang wrote:
>>>>> Now the logic is:
>>>>> Use options.layer_type if specified, guess if not, default to 'M'.
>>>>>
>>>>> Note choices=['A', 'B', 'S', 'D', 'M', ''], the '' is for default='', we
> can't
>>>>> use default='M' here, otherwise we don't know whether the 'M' is
> specified by
>>>>> user or not, we don't guess if it is specified by user, otherwise,
> guess.
>>>>>
>>>>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
>>>>> ---
>>>>> layerindex/tools/import_layer.py | 18 +++++++++++++-----
>>>>> 1 file changed, 13 insertions(+), 5 deletions(-)
>>>>>
>>>>> diff --git a/layerindex/tools/import_layer.py b/layerindex/tools/
> import_layer.py
>>>>> index 2413cff..0d501f6 100755
>>>>> --- a/layerindex/tools/import_layer.py
>>>>> +++ b/layerindex/tools/import_layer.py
>>>>> @@ -189,6 +189,10 @@ def main():
>>>>> parser.add_option("-s", "--subdir",
>>>>> help = "Specify subdirectory",
>>>>> action="store", dest="subdir")
>>>>> + parser.add_option("-t", "--type",
>>>>> + help = "Specify layer type. A: Base, B: Machine(BSP), S:
>>>>> Software, D: Distribution, M: Miscellaneous",
>>>>> + choices=['A', 'B', 'S', 'D', 'M', ''],
>>>>> + action="store", dest="layer_type", default='')
>>>>
>>>> If it's practical to do, could you make this part of the code use
>>>> LayerItem.LAYER_TYPE_CHOICES from models.py so that this will work
>>>> if that is extended in future? Of course that will mean initialising
> Django
>>>> earlier, I'm not sure if that will have any side-effects that we wouldn't
> want.
>>>> If you could give that a try though that would be great.
>>>
>>> I think that the easies way is move the definition of LAYER_TYPE_CHOICES
>>> to utils.py, then we can use utils.LAYER_TYPE_CHOICES in both models.py
>>> and tools/import_layer.py
>>>
>>> I've updated it in the repo:
>>>
>>> git://git.pokylinux.org/poky-contrib rbt/li
>>> http://git.pokylinux.org/cgit.cgi//log/?h=rbt/li
>>>
>>> commit aeb1fd6a8f10b40637121643fc7df2f17c9cd87c
>>> Author: Robert Yang <liezhi.yang@windriver.com>
>>> Date: Mon Jul 9 15:28:10 2018 +0800
>>>
>>> import_layer.py: add -t option for layer_type
>>>
>>> Now the logic is:
>>> Use options.layer_type if specified, and guess if not. Default to
> 'M'.
>>>
>>> Note choices=['A', 'B', 'S', 'D', 'M', ''], the '' is for default='',
> we can't
>>> use default='M' here, otherwise we don't know whether the 'M' is
> specified by
>>> user or is the default value, we don't guess if it is specified by
> user,
>>> otherwise, guess.
>>>
>>> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
>>>
>>> diff --git a/layerindex/models.py b/layerindex/models.py
>>> index e5c8052..1ff653f 100644
>>> --- a/layerindex/models.py
>>> +++ b/layerindex/models.py
>>> @@ -102,14 +102,8 @@ class LayerItem(models.Model):
>>> ('P', 'Published'),
>>> ('X', 'No update'),
>>> )
>>> - LAYER_TYPE_CHOICES = (
>>> - ('A', 'Base'),
>>> - ('B', 'Machine (BSP)'),
>>> - ('S', 'Software'),
>>> - ('D', 'Distribution'),
>>> - ('W', 'WRTemplates'),
>>> - ('M', 'Miscellaneous'),
>>> - )
>>> + LAYER_TYPE_CHOICES = utils.LAYER_TYPE_CHOICES
>>> +
>>> name = models.CharField('Layer name', max_length=40, unique=True,
>>> help_text='Name of the layer - must be unique and can only contain
> letters,
>>> numbers and dashes')
>>> status = models.CharField(max_length=1,
> choices=LAYER_STATUS_CHOICES,
>>> default='N')
>>> layer_type = models.CharField(max_length=1,
> choices=LAYER_TYPE_CHOICES)
>>> diff --git a/layerindex/tools/import_layer.py b/layerindex/tools/
> import_layer.py
>>> index 2413cff..5373cce 100755
>>> --- a/layerindex/tools/import_layer.py
>>> +++ b/layerindex/tools/import_layer.py
>>> @@ -178,6 +178,21 @@ def get_github_layerinfo(layer_url, username = None,
>>> password = None):
>>>
>>> return (json_data, owner_json_data)
>>>
>>> +def get_layer_type_choices():
>>> + """
>>> + Return help string and choices for --type.
>>> + """
>>> + help_str = "Specify layer type."
>>> + choices = []
>>> + for i in utils.LAYER_TYPE_CHOICES:
>>> + key, description = i
>>> + help_str += ' %s: %s,' % (key, description)
>>> + choices.append(key)
>>> +
>>> + help_str = help_str.rstrip(',')
>>> + choices.append('')
>>> +
>>> + return (help_str, choices)
>>>
>>> def main():
>>> valid_layer_name = re.compile('[-\w]+$')
>>> @@ -186,9 +201,15 @@ def main():
>>> usage = """
>>> %prog [options] <url> [name]""")
>>>
>>> + layer_type_help, layer_type_choices = get_layer_type_choices()
>>> +
>>> parser.add_option("-s", "--subdir",
>>> help = "Specify subdirectory",
>>> action="store", dest="subdir")
>>> + parser.add_option("-t", "--type",
>>> + help = layer_type_help,
>>> + choices = layer_type_choices,
>>> + action="store", dest="layer_type", default='')
>>> parser.add_option("-n", "--dry-run",
>>> help = "Don't write any data back to the database",
>>> action="store_true", dest="dryrun")
>>> @@ -263,7 +284,6 @@ def main():
>>> layer = LayerItem()
>>> layer.name = layer_name
>>> layer.status = 'P'
>>> - layer.layer_type = 'M'
>>> layer.summary = 'tempvalue'
>>> layer.description = layer.summary
>>>
>>> @@ -349,11 +369,18 @@ def main():
>>>
>>>
>>> logger.info('Creating layer %s' % layer.name)
>>> - # Guess layer type
>>> - if glob.glob(os.path.join(layerdir, 'conf/distro/
> *.conf')):
>>> + # Guess layer type if not specified
>>> + if options.layer_type:
>>> + layer.layer_type = options.layer_type
>>> + elif layer.name in ['openembedded-core', 'meta-oe']:
>>> + layer.layer_type = 'A'
>>> + elif glob.glob(os.path.join(layerdir, 'conf/distro/
> *.conf')):
>>> layer.layer_type = 'D'
>>> elif glob.glob(os.path.join(layerdir, 'conf/machine/
> *.conf')):
>>> layer.layer_type = 'B'
>>> + else:
>>> + layer.layer_type = 'M'
>>> +
>>> layer.save()
>>> layerbranch = LayerBranch()
>>> layerbranch.layer = layer
>>> @@ -411,11 +438,9 @@ def main():
>>>
>>> if layer.name == 'openembedded-core':
>>> layer.summary = 'Core metadata'
>>> - layer.layer_type = 'A'
>>> elif layer.name == 'meta-oe':
>>> layer.summary = 'Additional shared OE metadata'
>>> layer.description = layer.summary
>>> - layer.layer_type = 'A'
>>>
>>> if maintainers:
>>> maint_re = re.compile(r'^"?([^"@$<>]+)"? *<([^<> ]
> +)>[
>>> -]*(.+)?$')
>>> diff --git a/layerindex/utils.py b/layerindex/utils.py
>>> index 861a841..5f44754 100644
>>> --- a/layerindex/utils.py
>>> +++ b/layerindex/utils.py
>>> @@ -15,6 +15,15 @@ import fcntl
>>> import signal
>>> import codecs
>>>
>>> +LAYER_TYPE_CHOICES = (
>>> + ('A', 'Base'),
>>> + ('B', 'Machine (BSP)'),
>>> + ('S', 'Software'),
>>> + ('D', 'Distribution'),
>>> + ('W', 'WRTemplates'),
>>> + ('M', 'Miscellaneous'),
>>> +)
>>> +
>>> def get_branch(branchname):
>>> from layerindex.models import Branch
>>> res = list(Branch.objects.filter(name=branchname)[:1])
>>>
>>> // Robert
>>>>
>>>> Thanks,
>>>> Paul
>>>>
>>
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-08-30 6:36 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-23 10:30 [layerindex-web][PATCH 0/1] import_layer.py: add -t option for layer_type Robert Yang
2018-07-23 10:30 ` [layerindex-web][PATCH 1/1] " Robert Yang
2018-07-24 8:33 ` Paul Eggleton
2018-07-31 7:57 ` Robert Yang
2018-08-30 2:05 ` Robert Yang
2018-08-30 6:20 ` Paul Eggleton
2018-08-30 6:39 ` Robert Yang
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.