Oh my word... I wonder if we need to introspect what cargo does (a la
cargo bitbake) to get this kind of thing right?

On Thu, Mar 30, 2023 at 8:23 PM Martin Jansa <martin.ja...@gmail.com> wrote:
>
> I don't remember the exact details now, but when I was working on updating 
> solana recipes to use this
> https://github.com/webosose/meta-webosose/commit/9bdfae7988077d0211eeee79cc339d0770cd86b4
>
> the S was pointing to just some subdirectory and multiple Cargo.locks files 
> were parsed in other directories as well, that's why I was adding
> https://git.openembedded.org/openembedded-core/commit/meta/classes-recipe/cargo-update-recipe-crates.bbclass?id=7636a2b8080521ed2ad54b0edce47a8742a12d58
>
> in the end I've changed to use the root directory in S and just set 
> CARGO_SRC_DIR to right subdirectory to build.
>
> I don't have much experience with crates other than these solana recipes, but 
> isn't there some valid use-case for multiple Cargo.locks?
> I assume Alex in original implementation didn't use the os.walk just to make 
> it more complicated :).
>
> And FWIW when trying to regenerate these .inc files with current master and 
> with:
> $ bitbake -c update_crates solana-keygen
> it fails with:
> ERROR: solana-keygen-1.14.5-r0 do_fetch: No checksum specified for 
> '/OE/lge/build/webos/mickledore/downloads/Inflector-0.11.4.crate', please add 
> at least one to the recipe:
> SRC_URI[Inflector.sha256sum] = 
> "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3"
> ERROR: solana-keygen-1.14.5-r0 do_fetch: Bitbake Fetcher Error: 
> NoChecksumError('Missing SRC_URI checksum', 
> 'https://crates.io/api/v1/crates/Inflector/0.11.4/download')
>
> Isn't it an chicken&egg issue now when do_fetch enforces checksums to be 
> used? Or am I just missing some of the pending changes or just using it 
> incorrectly?
>
>
> On Thu, Mar 30, 2023 at 6:34 PM Alex Kiernan <alex.kier...@gmail.com> wrote:
>>
>> On Thu, Mar 30, 2023 at 4:45 PM <frederic.martins...@gmail.com> wrote:
>> >
>> > From: Frederic Martinsons <frederic.martins...@gmail.com>
>> >
>> > There is no need to do such things, Cargo.lock file
>> > has to be at the root of CARGO_LOCK_SRC_DIR.
>> > This avoid finding other possible Cargo.lock that
>> > would be in subdir (for example if a patch is applied
>> > on the recipe, we can have .pc subdir in S and a Cargo.lock
>> > can be there)
>> >
>> > Signed-off-by: Frederic Martinsons <frederic.martins...@gmail.com>
>> > ---
>> >  .../cargo-update-recipe-crates.bbclass               | 12 ++++++++----
>> >  1 file changed, 8 insertions(+), 4 deletions(-)
>> >
>> > diff --git a/meta/classes-recipe/cargo-update-recipe-crates.bbclass 
>> > b/meta/classes-recipe/cargo-update-recipe-crates.bbclass
>> > index daa363b0dd..549cfe627e 100644
>> > --- a/meta/classes-recipe/cargo-update-recipe-crates.bbclass
>> > +++ b/meta/classes-recipe/cargo-update-recipe-crates.bbclass
>> > @@ -68,10 +68,14 @@ def get_crates(f):
>> >  import os
>> >  crates = "# Autogenerated with 'bitbake -c update_crates ${PN}'\n\n"
>> >  found = False
>> > -for root, dirs, files in os.walk('${CARGO_LOCK_SRC_DIR}'):
>> > -    for file in files:
>> > -        if file == 'Cargo.lock':
>> > -            crates += get_crates(os.path.join(root, file))
>> > +for file in os.listdir('${CARGO_LOCK_SRC_DIR}'):
>> > +    if file == 'Cargo.lock':
>> > +        try:
>> > +            cargo_lock_path = os.path.join('${CARGO_LOCK_SRC_DIR}', file)
>> > +            crates += get_crates(cargo_lock_path)
>> > +        except Exception as e:
>> > +            raise ValueError("Cannot parse '%s'" % cargo_lock_path) from e
>> > +        else:
>> >              found = True
>> >  if not found:
>> >      raise ValueError("Unable to find Cargo.lock in ${CARGO_LOCK_SRC_DIR}")
>>
>> Isn't this just a long-winded version of something like this
>> (completely untested):
>>
>> diff --git a/meta/classes-recipe/cargo-update-recipe-crates.bbclass
>> b/meta/classes-recipe/cargo-update-recipe-crates.bbclass
>> index daa363b0dd65..22ddcfa5c1e3 100644
>> --- a/meta/classes-recipe/cargo-update-recipe-crates.bbclass
>> +++ b/meta/classes-recipe/cargo-update-recipe-crates.bbclass
>> @@ -67,14 +67,7 @@ def get_crates(f):
>>
>>  import os
>>  crates = "# Autogenerated with 'bitbake -c update_crates ${PN}'\n\n"
>> -found = False
>> -for root, dirs, files in os.walk('${CARGO_LOCK_SRC_DIR}'):
>> -    for file in files:
>> -        if file == 'Cargo.lock':
>> -            crates += get_crates(os.path.join(root, file))
>> -            found = True
>> -if not found:
>> -    raise ValueError("Unable to find Cargo.lock in ${CARGO_LOCK_SRC_DIR}")
>> +crates += get_crates(os.path.join("${CARGO_LOCK_SRC_DIR}", "Cargo.lock"))
>>  open("${TARGET_FILE}", 'w').write(crates)
>>  EOF
>>
>> --
>> Alex Kiernan
>>
>> 
>>


-- 
Alex Kiernan
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#179357): 
https://lists.openembedded.org/g/openembedded-core/message/179357
Mute This Topic: https://lists.openembedded.org/mt/97953740/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to