VAL icon indicating copy to clipboard operation
VAL copied to clipboard

Mac support with M1 processor (darwin, arm64)

Open victorpaleologue opened this issue 2 years ago • 18 comments

When using the VSCode PDDL extension, I am given the opportunity to download and configure a pre-built VAL tool. The matching binary is not found for my platform: Mac OS on an M1 processor (darwin, arm64). I reported the issue there https://github.com/jan-dolejsi/vscode-pddl/issues/127, however I feel like this issue is that the VAL release for that platform is missing.

victorpaleologue avatar Jun 16 '22 15:06 victorpaleologue

Can I help? I am at ease with CMake and GitHub Actions. I would have tried out updating the Azure pipeline, but I cannot find the relevant YAML file. If someone can point at where to start, I could do something.

victorpaleologue avatar Jun 16 '22 15:06 victorpaleologue

Ah, that is possible. We checked compilation on a Mac, but I don't think any of us uses one as a matter of course, so we don't tend to be good at keeping up with them. So, yes, we could probably benefit from some help. The Azure pipeline is inside the company firewalls, so I don't think it will be easy to give access. But we might be able to give you the scripts we use so that you can do the surgery and send them back for us. Let me check.


From: Victor Paléologue @.> Sent: 16 June 2022 16:43 To: KCL-Planning/VAL @.> Cc: Subscribed @.***> Subject: [KCL-Planning/VAL] Mac support with M1 processor (darwin, arm64) (Issue #56)

When using the VSCode PDDL extension, I am given the opportunity to download and configure a pre-built VAL tool. The matching binary is not found for my platform: Mac OS on an M1 processor (darwin, arm64). I reported the issue there jan-dolejsi/vscode-pddl#127https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fjan-dolejsi%2Fvscode-pddl%2Fissues%2F127&data=05%7C01%7Cderek.long%40kcl.ac.uk%7C7ea983be626f4c13649b08da4faef7c7%7C8370cf1416f34c16b83c724071654356%7C0%7C0%7C637909910149592278%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=jgnEUBHZ3ceeXDlPm%2F7AtJRIhGItMbTs69MoPyXc9bI%3D&reserved=0, however I feel like this issue is that the VAL release for that platform is missing.

— Reply to this email directly, view it on GitHubhttps://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FKCL-Planning%2FVAL%2Fissues%2F56&data=05%7C01%7Cderek.long%40kcl.ac.uk%7C7ea983be626f4c13649b08da4faef7c7%7C8370cf1416f34c16b83c724071654356%7C0%7C0%7C637909910149602273%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=XgflaIeWBrHm4cIVS8M%2F2%2F3qxIEeOq1gcZqWodzkhaU%3D&reserved=0, or unsubscribehttps://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAB2KOVHONTC2767QWAVSRU3VPNDSHANCNFSM5Y7HUIBA&data=05%7C01%7Cderek.long%40kcl.ac.uk%7C7ea983be626f4c13649b08da4faef7c7%7C8370cf1416f34c16b83c724071654356%7C0%7C0%7C637909910149607271%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=08UumKY4b6O0FCGfIout9f5ARdyWkHLMkFeo%2BMi8ST0%3D&reserved=0. You are receiving this because you are subscribed to this thread.Message ID: @.***>

DerekLong101 avatar Jun 16 '22 15:06 DerekLong101

FYI it compiles well on Mac, all we need is a release. I'm still available for help.

victorpaleologue avatar Jul 13 '22 10:07 victorpaleologue

Can I help? I am at ease with CMake and GitHub Actions. I would have tried out updating the Azure pipeline, but I cannot find the relevant YAML file. If someone can point at where to start, I could do something.

Yes, you can definitely help. Modifying the azure pipeline to harvest and publish the binary artifacts would be the simplest change at the end. The hard part is to change the build scripts, so they produce the arm binaries. You can see the azure-pipeline.yml in the root of the repo. It is simply calling ./scripts/build_linux_windows.sh and ./scripts/build_macos.sh on ubuntu and MacOS respectively. The arm64 script should be added either to the build_linux_windows.sh, if the compilation for arm64 can be done on linux, or as a separate build_arm64.sh script, which we would add to the pipeline to run on hosted arm64 pool (not sure it exists).

The pipeline then runs over there: https://dev.azure.com/schlumberger/ai-planning-validation/_build?definitionId=2

jan-dolejsi avatar Jul 13 '22 16:07 jan-dolejsi

Thanks, Jan!


From: Jan Dolejší @.> Sent: 13 July 2022 17:02 To: KCL-Planning/VAL @.> Cc: Long, Derek @.>; Comment @.> Subject: Re: [KCL-Planning/VAL] Mac support with M1 processor (darwin, arm64) (Issue #56)

Can I help? I am at ease with CMake and GitHub Actions. I would have tried out updating the Azure pipeline, but I cannot find the relevant YAML file. If someone can point at where to start, I could do something.

Yes, you can definitely help. Modifying the azure pipeline to harvest and publish the binary artifacts would be the simplest change at the end. The hard part is to change the build scripts, so they produce the arm binaries. You can see the azure-pipeline.yml in the root of the repo. It is simply calling ./scripts/build_linux_windows.sh and ./scripts/build_macos.sh on ubuntu and MacOS respectively. The arm64 script should be added either to the build_linux_windows.sh, if the compilation for arm64 can be done on linux, or as a separate build_arm64.sh script, which we would add to the pipeline to run on hosted arm64 pool (not sure it exists).

The pipeline then runs over there: https://dev.azure.com/schlumberger/ai-planning-validation/_build?definitionId=2https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdev.azure.com%2Fschlumberger%2Fai-planning-validation%2F_build%3FdefinitionId%3D2&data=05%7C01%7Cderek.long%40kcl.ac.uk%7Cb91c76e4a86c423b7a5408da64e90ce1%7C8370cf1416f34c16b83c724071654356%7C0%7C0%7C637933249343815555%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=EeK7bPRALOqRtwxoYED0wbldkqc0QCnZsZ8uBTHQomA%3D&reserved=0

— Reply to this email directly, view it on GitHubhttps://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FKCL-Planning%2FVAL%2Fissues%2F56%23issuecomment-1183405462&data=05%7C01%7Cderek.long%40kcl.ac.uk%7Cb91c76e4a86c423b7a5408da64e90ce1%7C8370cf1416f34c16b83c724071654356%7C0%7C0%7C637933249343815555%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=WcWaeJ5pj3ZCGYvpIiI3bC0kS%2BcdgSARkl4DH6gy7Zc%3D&reserved=0, or unsubscribehttps://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAB2KOVESXWZKX6EZ7656LODVT3SAJANCNFSM5Y7HUIBA&data=05%7C01%7Cderek.long%40kcl.ac.uk%7Cb91c76e4a86c423b7a5408da64e90ce1%7C8370cf1416f34c16b83c724071654356%7C0%7C0%7C637933249343815555%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=tHOYi%2BYioJG%2FG1P5DknvqGY4jVa9iWVfk9LxcxiPB7c%3D&reserved=0. You are receiving this because you commented.Message ID: @.***>

DerekLong101 avatar Jul 13 '22 16:07 DerekLong101

You can see the azure-pipeline.yml in the root of the repo.

Sorry but I cannot find that file. Could you provide me a link to it?

victorpaleologue avatar Jul 27 '22 11:07 victorpaleologue

Oh, my bad. I did not realize the pipeline file was only in my fork. Looking closer, it was work I started and did not finish. It only includes the build job for linux and windows (targeting linux build machine). But it would eventually include the MacOS job too. The build pipeline that we currently run on Azure DevOps is using the infrastructure that predates yaml.

Nevertheless, what is needed for the M1 processor binaries is a build script first. Adding it to the pipeline would just mean calling the new script from using an additional task in the pipeline. Like what you can see on the line 17.

jan-dolejsi avatar Jul 28 '22 09:07 jan-dolejsi

Alright, I've put myself on it, but... Microsoft-hosted Azure agents for Mac OS do not seem to be running on M1 processors:

Agents that run macOS images are provisioned on Mac pros with a 3 core CPU, 14 GB of RAM, and 14 GB of SSD disk space.

Knowing that M1 processors have many more CPU cores, this hardware is certainly x86_64. GitHub runners have the same hardware specs, btw, and they are explicit on the architecture being x86_64.

I checked scripts/build_macos.sh and it works fine already. But I won't be able to get your CI pipeline run it. Sorry, I genuinely hoped to help =/

However I can think of Conan and ConanCenter, which are dedicated to distribute portable native binaries to every platform. They do produce MacOS arm64 releases, and VAL could be distributed there too. Another big advantage of Conan is that if the binary is missing, it has access to all the recipes to rebuild it for the current host. But that does not really fit the workflow of the PDDL plug-in for VSCode.

victorpaleologue avatar Jul 28 '22 09:07 victorpaleologue

@victorpaleologue are you saying that the script scripts/build_macos.sh produces binaries that you can run on the new shiny Mac? Or only if you run the build locally, while the macos binaries that come out of the pipeline are not compatible?

Yes the pipeline can be fixed eventually. Looks like Microsoft is working on the sup6 for M1 build machines.

I am not against an alternative build and download location. Ad long as the platform specific binaries can be downloaded from a fixed url. Ideally the version should ge part of the url too.

jan-dolejsi avatar Aug 02 '22 22:08 jan-dolejsi

@victorpaleologue are you saying that the script scripts/build_macos.sh produces binaries that you can run on the new shiny Mac? Or only if you run the build locally, while the macos binaries that come out of the pipeline are not compatible?

Yes, running the script on a new shiny Mac builds a binary compatible with new shiny Macs. But the ones that come out of the pipeline, built on older-but-perhaps-still-shiny Macs, are not compatible.

Yes the pipeline can be fixed eventually. Looks like Microsoft is working on the sup6 for M1 build machines.

I am not against an alternative build and download location. Ad long as the platform specific binaries can be downloaded from a fixed url. Ideally the version should ge part of the url too.

Ok. I could publish my release someplace that won't move, but building manually next versions would be annoying. IMO it has to be automated, and rely on a machine dedicated for that. So I'd rather wait for Microsoft's support...

victorpaleologue avatar Aug 03 '22 08:08 victorpaleologue

I think the shine has come off the Macs.


From: Victor Paléologue @.> Sent: 03 August 2022 09:22 To: KCL-Planning/VAL @.> Cc: Long, Derek @.>; Comment @.> Subject: Re: [KCL-Planning/VAL] Mac support with M1 processor (darwin, arm64) (Issue #56)

@victorpaleologuehttps://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fvictorpaleologue&data=05%7C01%7Cderek.long%40kcl.ac.uk%7Cbe1d2bc8bf8b4862ba8f08da75295b05%7C8370cf1416f34c16b83c724071654356%7C0%7C0%7C637951117724245016%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=f4MPe36nui%2BSX3sb3dS5Bkxr%2BoTMYU7W%2FNc8WCZDQ%2Bw%3D&reserved=0 are you saying that the script scripts/build_macos.sh produces binaries that you can run on the new shiny Mac? Or only if you run the build locally, while the macos binaries that come out of the pipeline are not compatible?

Yes, running the script on a new shiny Mac builds a binary compatible with new shiny Macs. But the ones that come out of the pipeline, built on older-but-perhaps-still-shiny Macs, are not compatible.

Yes the pipeline can be fixed eventually. Looks like Microsoft is working on the sup6 for M1 build machines.

I am not against an alternative build and download location. Ad long as the platform specific binaries can be downloaded from a fixed url. Ideally the version should ge part of the url too.

Ok. I could publish my release someplace that won't move, but building manually next versions would be annoying. IMO it has to be automated, and rely on a machine dedicated for that. So I'd rather wait for Microsoft's support...

— Reply to this email directly, view it on GitHubhttps://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FKCL-Planning%2FVAL%2Fissues%2F56%23issuecomment-1203639560&data=05%7C01%7Cderek.long%40kcl.ac.uk%7Cbe1d2bc8bf8b4862ba8f08da75295b05%7C8370cf1416f34c16b83c724071654356%7C0%7C0%7C637951117724245016%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=vqgOOxr3dAV8EGfbtDmxr7rDjW%2Beiokyk%2BD6ePQ7Ezw%3D&reserved=0, or unsubscribehttps://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAB2KOVGOQ7SG2YTEJCGOUL3VXIT5TANCNFSM5Y7HUIBA&data=05%7C01%7Cderek.long%40kcl.ac.uk%7Cbe1d2bc8bf8b4862ba8f08da75295b05%7C8370cf1416f34c16b83c724071654356%7C0%7C0%7C637951117724245016%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=VnDxh81IyN9hZbzYa2S7JyNaYkpLYD6ZFOKUP8MVG%2B8%3D&reserved=0. You are receiving this because you commented.Message ID: @.***>

DerekLong101 avatar Aug 03 '22 09:08 DerekLong101

Any updates on this so far?

DavidKaub avatar Jan 03 '23 08:01 DavidKaub

Azure support for arm64-powered MacOS has not changed. I did not take time to produce my own release. I cannot tell when I can do this. In the meantime you will have to rebuild it yourself, it should build fine.

victorpaleologue avatar Jan 03 '23 10:01 victorpaleologue

Would you be interested by having it available through Conan?

victorpaleologue avatar Jan 03 '23 10:01 victorpaleologue

Still no change. If someone wants a manual release, let me know. I'll let this sit in the meantime.

victorpaleologue avatar Apr 07 '23 15:04 victorpaleologue

A manual release would be welcome! Thanks

DavidKaub avatar Apr 07 '23 15:04 DavidKaub

There it is. You need to unzip it somewhere and configure the PDDL extension to use the binary called Validate. Val--Darwin.tar.gz Val--Darwin.zip

victorpaleologue avatar Apr 07 '23 16:04 victorpaleologue