[yocto] [RFC] Blubber, a tool to set up yocto/poky projects easily

Alex J Lennon ajlennon at dynamicdevices.co.uk
Mon Mar 10 04:43:47 PDT 2014


On 10/03/2014 11:32, Josef Holzmayr wrote:
> Hello Vali,
>
>> Vali Cobelea <valentin.cobelea at enea.com> hat am 10. März 2014 um 12:20
>> geschrieben:
>>
>> The idea behind 'is' would be to have more safety and less crashes when
>> one of the arguments, in your case, is empty (eg None).
> Well there are cases where I needed to compare strings that have been read in
> and then modified from two different sources (e.g., files). Hence in my
> understanding, they have the same content, but not the same id. So if I want to
> match their content only, I'd have to use "==" because "is" would give me false
> even if the content matches.

Hi Josef, Vali,

Interesting points.

fwiw I'd have thought myself that string comparison should be string
comparison (==) as if you use an object identity comparison as a string
comparison (is), you potentially introduce opaque problems when the
strings are the same - i.e. same bytes of data - but the objects are not
the same for whatever reason.

e.g.

stringvar1 = "A string for comparison"
stringvar2 = "A string for "
stringvar2 += "comparison";

if stringvar1 == stringvar2:
  print stringvar1 + " == " + stringvar2
else:
  print stringvar1 + " != " + stringvar2

if stringvar1 is stringvar2:
  print stringvar1 + " is " + stringvar2
else:
  print stringvar1 + " is not " + stringvar2

Results in,

A string for comparison == A string for comparison
A string for comparison is not A string for comparison

Cheers,

Alex

>> This discussion can go over and over, is more a flavor thing: being
>> pythonian or not.
> Agreed, with the exception of the above said. But you're right, I'll look into
> the topic and see if it can bring improvements. Thanks again for your input.
>
>> Best regards,
>> Vali
> Greetz
> Josef /Leto
>
>> On 03/10/2014 01:11 PM, Josef Holzmayr wrote:
>>> Hello Vali,
>>>
>>>> Vali Cobelea <valentin.cobelea at enea.com> hat am 10. März 2014 um 12:05
>>>> geschrieben:
>>>>
>>>> Looks ok at a first look, but my first suggestion would be to start
>>>> using the "is" operator instead of "==" when it comes to comparing strings.
>>>> Otherwise using your way with "==" will crash if any of the variables
>>>> (those "sys.argv[]") are None (void).
>>> Thanks for the quick input! However, this is one of the very rare points I
>>> intently did that way, because of the difference in meaning from "==" to
>>> "is"
>>> (see
>>> http://stackoverflow.com/questions/1504717/why-does-comparing-strings-in-python-using-either-or-is-sometimes-produce).
>>> But I'm curious, how would one then properly compare the content of two
>>> strings?
>>> Checking both types first?
>>>
>>>> Best regards,
>>>> Vali
>>> Greetz
>>> Josef/Leto
>>>
>>>> On 03/10/2014 12:59 PM, Josef Holzmayr wrote:
>>>>> Howdy!
>>>>>
>>>>> After looking more and more into yocto, one of the main issues for me is
>>>>> the
>>>>> process to set up a project properly, including all layers and conf
>>>>> options.
>>>>> Especially those which would be needed to set exactly the same way again
>>>>> and
>>>>> again every time somebody needs to reproduce a build.
>>>>>
>>>>> So I've come up with an idea: a small tool that can handle these things
>>>>> for
>>>>> me.
>>>>> And here it is for your enjoyment/use/abuse/comments:
>>>>>
>>>>> https://github.com/LetoThe2nd/blubber
>>>>>
>>>>> Short excerpt from the README:
>>>>>
>>>>> But be warned first. Blubber is still in pre-pre-pre-alpha stage (more
>>>>> like
>>>>> a
>>>>> proof of concept), and has the following defects/bugs/non-features:
>>>>> - Horribly bad python code (Yes, its really that bad. Blame me, its my
>>>>> first
>>>>> attempt to use that language)
>>>>> - No error checking whatsoever
>>>>> - Largely incomplete feature set
>>>>> - Did I already mention the utterly bad code?
>>>>> - Only supports git sources so far.
>>>>>
>>>>> Despite that, it can already do some magic:
>>>>> - Getting poky and layers from git, and checking out branches/tags/commits
>>>>> if
>>>>> needed
>>>>> - Accordingly setting up build/conf/bblayers.conf
>>>>> - Setting up build/conf/local.conf with a set of predefined options
>>>>> - Running arbitrary commands with proper shell setup (source-ed
>>>>> poky/oe-init-build-env) for the configured project.
>>>>>
>>>>> If anybody has feedback, just scream loudly. Or if anybody knows of a
>>>>> better
>>>>> solution making it all obsolete, please also scream. Thanks!
>>>>>
>>>>> Leto




More information about the yocto mailing list