MDK-Packs / CB_Lab4Layer

CMSIS-Build Lab with Layers
4 stars 9 forks source link

sct file not updated in project build directories after upgrading the CMSIS pack #9

Open fred-r opened 3 years ago

fred-r commented 3 years ago

Hi,

I have a CMSIS Pack providing the device definition for the STM32L562-DK (DFP pack with drivers removed). This pack contains the definition of the required sct file.

Say that I make a first build with pack v0.0.6. I get in "\RTE\Device\STM32L562QEIxQ" my sct file with a bug.

I fix the bug in a version 0.0.9 of the CMSIS pack and install this pack.

If I relaunch the CMSIS build system then I am still working with the old sct file. If I want the new file to be installed in "\RTE\Device\STM32L562QEIxQ", I need to do a manual clean-up (removing the directory).

Can't CMSIS build detect the dependency ? (sct file not up to date with regards to latest CMSIS pack available in the system)

Thanks & Regards, Fred

jkrech commented 3 years ago

Hi Fred,

What is the command line you are using? Could you please try to run e.g. cbuild.sh .... --merge --merge : update of config with ccmerge This is currently turned off by default as it may result in more damage than benefit if user modification are not retained correctly.

~ Joachim

brondani commented 3 years ago

Hi Fred,

CMSIS-Build detects when the configuration file in the pack has a newer version than the local config file. You can double check it in the audit .clog file, there you will see an entry with the detected versions, for example: - ConfigFile: C:/Project/RTE/CMSIS/RTX_Config.h:5.1.1 [5.5.1]

As @jkrech mentioned, you can call cbuild.sh with the option --merge to automatically merge config files with the ccmerge tool.

Best regards Daniel

fred-r commented 3 years ago

Hi,

sorry for the late reply. I am not working with cbuild.sh, I work with our own wrapper on top of cbuildgen.

We use a command like: cbuildgen make ${PROJ_NAME}.cprj --toolchain=${TOOLCHAIN} --outdir=${BUILD_DIRECTORY} --intdir=${BUILD_DIRECTORY}

I will give a try with the merge and see what happens.

Thanks & regards, Fred

fred-r commented 3 years ago

Hi again,

the ccmerge is not crystal clear to me.

It seems that it is tracking the "configuration files" so files declared like this in the packs (attr="config"):

Does it parse all the packs for such files or is it only for DFP packs?

I get the point about the Wizard Annotations : I guess it is to track if the user locally changes a default value in his local config file to avoid overwriting it from the pack. Is it correct ?

The point I do not get is how this can solve my dependencies issue ? Do you mean that if my scatter file is declared as a "config file" then it will be compared like this ? If so, in my case I want the latest file from then pack to win the challenge and supersed the local file. Will it happen like this ?

Thanks & Regards, fred

fred-r commented 3 years ago

Here is what I get with some tries:

Makefile variables

CCMERGE:=ccmerge

PRJ_FILES:=\ C:/Cube20/clean/infra/Firmware/samples/HAL/TIM/TIM_PWMOutput_2TIM/RTE/Device/STM32L562QEIxQ/startup_stm32l562xx.c\ C:/Cube20/clean/infra/Firmware/samples/HAL/TIM/TIM_PWMOutput_2TIM/RTE/Device/STM32L562QEIxQ/stm32l562xe_flash.sct

PKG_FILES:=\ C:/Keil_v5/ARM/PACK/STMicroelectronics/STM32L5xx_DFP/0.0.10/Drivers/CMSIS/Device/ST/STM32L5xx/Source/startup_stm32l562xx.c\ C:/Keil_v5/ARM/PACK/STMicroelectronics/STM32L5xx_DFP/0.0.10/Drivers/CMSIS/Device/ST/STM32L5xx/Source/Templates/arm/linker/stm32l562xe_flash.sct

==> will the ccmerge check only wizard annotations or will it also detect that my scatter files is new in the pack ?

Thanks & Regards, Fred

fred-r commented 3 years ago

Hi,

I gave a try with ccmerge but it seems to be restricted to wizard annotations ?

CCMERGE - Configuration File Merge Utility V1.0.1 (Dec 7 2020, 01:52:44) Copyright (C) 2019, 2020 ARM Ltd and ARM Germany GmbH. All rights reserved.

Note: no config annotations in pfile 'C:/Firmware/cmsis/Device/ST/STM32L5xx/Source/startup_stm32l562xx.c' Note: no config annotations in cfile 'C:/Firmware/samples/HAL/TIM/TIM_PWMOutput_2TIM/targets/STM32L562E-DK/RTE/Device/STM32L562QEIxQ/startup_stm32l562xx.c'

My cfile is always left unchanged, even if I do updates or change the file version in my pfile.

Thanks & Regards, Fred

Thanks & Regards, Fred

brondani commented 3 years ago

Hi Fred,

You are right this experimental version is dedicated to wizard annotations - note it's a 2-way merge, for files without a well-defined structure this kind of merge would be unsatisfactory. For better results merging any kind of file I believe we would need the ancestor of the modified file to feed a 3-way merge. Would you mind to share your general experience concerning updating configuration files? Do you follow any manual or automatic procedure? If you use merge tools, what are your preferred choices?

Thanks Daniel