Hi Martin, Thanks for posting the patch. I have pushed it. I have pushed an update after running the change through yapf. I forgot to do that before pushing.
I will also add a new function to the rtems module as a separate patch: +def arch_bsp(ctx): + """ Return the list of arch/bsps we are building.""" + return ctx.env.ARCH_BSP + + I think it would be good to update all the submodules. On 5/10/2023 11:40 pm, Martin Erik Werner wrote: > _arch_from_arch_bsp() and _bsp_from_arch_bsp() has overly optimistic > assumptions that the argument must contain a '-'-separated field which > starts with "rtems". These functions are intended to find the target > triplet or the bsp parts of strings like "sparc-gaisler-rtems5-leon3" > and "arm-rtems6-xilinx_zynq_zc702" Yes the interface around arch/bsp is a bit average and I have wondered about a change but I think the interface is now set and I think it is too late to change. > But _find_installed_arch_bsps() may call _arch_from_arch_bsp() with the > name (without file extension) of any file which ends with ".pc", > including for example "expat". This triggers a StopIteration exception > when trying to find the next field after the "rtems" field, since no > "rtems" field exists to start with. > > Rework these function to remove the preconditions, so that they return > None if no "rtems" field exist or if no field exists before or after the > "rtems" field. Nice. > It could be argued. based on their name, that calling these functions > with something that is not a triplet-bsp string is incorrect to start > with, but attempting to address that is not done here. Yes I agree and I also think we need to accept the string in this case. Chris > --- > > This should fix the issue discovered by David Siddons and Frank Kühndel > described in the "build failed" thread from 2023-07-23 in the > rtems-users mailing list with message-id: > <8e6c2841-ae9e-aacf-de84-e6340d204...@embedded-brains.de> > > I have tested this fix when compiling the simple quickstart application > for the sparc-gaisler-rtems5-leon3 and arm-rtems6-xilinx_zynq_zc702 > targets, but I have not verified execution of the build results, this is > probably the amount of testing that I will be able to perform at the > moment. > > rtems.py | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/rtems.py b/rtems.py > index c65a7d2..a29d281 100644 > --- a/rtems.py > +++ b/rtems.py > @@ -859,15 +859,17 @@ def _check_arch_bsps(req, config, path, archs, version): > > def _arch_from_arch_bsp(arch_bsp): > fields = arch_bsp.split('-') > - rtems_field_index = next(i for i, field in enumerate(fields) if > field.startswith('rtems')) > - return '-'.join(fields[:(rtems_field_index + 1)]) > - > + for i, field in enumerate(fields): > + if field.startswith('rtems') and fields[:(i + 1)] is not None: > + return '-'.join(fields[:(i + 1)]) > + return None > > def _bsp_from_arch_bsp(arch_bsp): > fields = arch_bsp.split('-') > - rtems_field_index = next(i for i, field in enumerate(fields) if > field.startswith('rtems')) > - return '-'.join(fields[(rtems_field_index + 1):]) > - > + for i, field in enumerate(fields): > + if field.startswith('rtems') and fields[(i + 1):] is not None: > + return '-'.join(fields[(i + 1):]) > + return None > > def _pkgconfig_path(path): > return os.path.join(path, 'lib', 'pkgconfig') _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel