Linux export format depends on VLExportPath

Summary

I came across this really strange Export bug when developing Schema Headless to run on Raspberry Pi.

It seems that the format of the exported DLL libraries and executable is affected by the export path. At least that’s what I’ve been able to pinpoint it to so far.

It can change the exported .dll format from PE32 Intel 80386 executable to PE32+ x86-64, which refuses to run on a Raspberry Pi (even with aarch64)

It may have to do something with me working under Parallels on Mac but still, I wouldn’t expect the target directory to have any effect on the format of the exported artifacts.

This bug happens with both 5.2 and 6.x preview.

Cases

Export to directory without file:// (or just relative, did not test others) results in correct PE32 build

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <VLAssetBehavior>PointToOutput</VLAssetBehavior>
    <VLCleanBuildDirectory>True</VLCleanBuildDirectory>
    <VLExportPath>$(MsBuildThisFileDirectory)..\Exports</VLExportPath>
    <VLTargetOS>Linux</VLTargetOS>
    <OutputType>Exe</OutputType>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>
</Project>
file Schema_Headless.dll
Schema_Headless.dll: PE32 executable (console) Intel 80386 Mono/.Net assembly, for MS Windows

Export to directory with file:// results in PE32+ build

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <VLAssetBehavior>PointToOutput</VLAssetBehavior>
    <VLCleanBuildDirectory>True</VLCleanBuildDirectory>
    <VLExportPath>$(MsBuildThisFileDirectory)file:\\mac\Home\Documents\vvvv\gamma\Exports</VLExportPath>
    <VLTargetOS>Linux</VLTargetOS>
    <OutputType>Exe</OutputType>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>
</Project>
file Schema_Headless.dll
Schema_Headless.dll: PE32+ executable (console) x86-64 Mono/.Net assembly, for MS Windows

There is no change besides the Path. The patch is completely empty with no dependencies, only with KeepAppAlive node.

There is also a related bug with strange file path behavior under Parallels but it can be worked around and I need to properly collect examples.

1 Like