On 11/12/25 15:39, Samuli Piippo via lists.yoctoproject.org wrote:
Would it make more sense to leave out the INHERIT and WINSDK_NO_SYMLINK.
Instead, if you need this, you can inherit the class in your recipe or local.conf

-samuli
Hi Samuli,

From my experience, users will usually prefer a variable setting when it's possible.

Take this case as an example, they could put this setting in their <distro>.conf, site.conf or local.conf, then no matter meta-mingw is included or not, 'bitbake <something>' still works.

Regards,
Qi


On Wed, 12 Nov 2025 at 07:35, Chen Qi via lists.yoctoproject.org <Qi.Chen=windriver.com@lists.yoctoproject.org> wrote:
On 11/11/25 23:25, Joshua Watt wrote:
> On Sun, Nov 2, 2025 at 7:19 PM <Qi.Chen@windriver.com> wrote:
>> From: Chen Qi <Qi.Chen@windriver.com>
>>
>> On some Windows systems, symlinks are not allowed due to IT policy.
>> We need to be able to generate Windows SDK without symlinks.
>>
>> To do this, a new variable, WINSDK_NO_SYMLINK, and a new bbclass,
>> mingw_sdk_handle_symlink.bbclass, are introduced to achieve this.
>>
>> By default, things work as before; when setting WINSDK_NO_SYMLINK
>> to "1", SDK will replace all symlinks with the actual contents.
>>
>> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
>> ---
>>   classes/mingw_sdk_handle_symlink.bbclass    | 25 +++++++++++++++++++++
>>   conf/machine-sdk/include/mingw32-common.inc |  3 +++
>>   2 files changed, 28 insertions(+)
>>   create mode 100644 classes/mingw_sdk_handle_symlink.bbclass
>>
>> diff --git a/classes/mingw_sdk_handle_symlink.bbclass b/classes/mingw_sdk_handle_symlink.bbclass
>> new file mode 100644
>> index 0000000..2f6dbe6
>> --- /dev/null
>> +++ b/classes/mingw_sdk_handle_symlink.bbclass
>> @@ -0,0 +1,25 @@
>> +WINSDK_NO_SYMLINK ?= "0"
>> +
>> +archive_sdk:prepend:sdkmingw32 () {
>> +       if [ "${WINSDK_NO_SYMLINK}" = "1" ]; then
>> +               for parse_type in "file" "directory"; do
>> +                       find "${SDK_OUTPUT}/${SDKPATH}" -type l -print0 | while IFS= read -r -d '' symlink; do
>> +                               target=$(readlink -f "$symlink" || echo "NOTVALID")
>> +                               if [ "$target" = "NOTVALID" ]; then
>> +                                       continue
>> +                               fi
>> +                               if [ ! -e "$target" ]; then
>> +                                       continue
>> +                               elif [ -d "$target" ]; then
>> +                                       if [ "$parse_type" = "directory" ]; then
>> +                                               rm "$symlink" && cp -r "$target" "$symlink"
>> +                                       fi
>> +                               else
>> +                                       if [ "$parse_type" = "file" ]; then
>> +                                               rm "$symlink" && cp "$target" "$symlink"
>> +                                       fi
>> +                               fi
>> +                       done
>> +               done
>> +       fi
>> +}
>> diff --git a/conf/machine-sdk/include/mingw32-common.inc b/conf/machine-sdk/include/mingw32-common.inc
>> index 56b8052..bf3f14e 100644
>> --- a/conf/machine-sdk/include/mingw32-common.inc
>> +++ b/conf/machine-sdk/include/mingw32-common.inc
>> @@ -59,3 +59,6 @@ GCCPIE:mingw32 = ""
>>
>>   # wine and wineserver are required to test MinGW SDKs
>>   HOSTTOOLS_NONFATAL += "wine wineserver"
>> +
>> +# handle symlinks
>> +INHERIT += "mingw_sdk_handle_symlink"
> Does this need to be unconditional? I'd prefer something like
> INHERIT:mingw32 instead if that works

Hi Joshua,

I just tried it out. Using INHERIT:append:sdkmingw32 works.
We have to use :append instead of "+=" to avoid overriding settings.

I'll send out V3.

Regards,
Qi

>
>> --
>> 2.34.1
>>






_._,_._,_

Links:

You receive all messages sent to this group.

View/Reply Online (#2490) | Reply to Group | Reply to Sender | Mute This Topic | New Topic
Your Subscription | Contact Group Owner | Unsubscribe [Qi.Chen@eng.windriver.com]

_._,_._,_