From a46e6af65061b65c048c1e023b298e082ab03a0b Mon Sep 17 00:00:00 2001 From: Petr Fedchenkov Date: Fri, 9 Sep 2022 23:30:10 +0300 Subject: [PATCH] Allow build for darwin without CGO It is not easy to use cross-platform build with CGO enabled so lets allow build without cgo for darwin and use virtualization framework only if we built with CGO. Signed-off-by: Petr Fedchenkov --- docs/platform-virtualization-framework.md | 1 + src/cmd/linuxkit/Makefile | 1 + ..._virtualizationframework_darwin_cgo_disabled.go | 14 ++++++++++++++ ..._virtualizationframework_darwin_cgo_enabled.go} | 4 ++-- 4 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 src/cmd/linuxkit/run_virtualizationframework_darwin_cgo_disabled.go rename src/cmd/linuxkit/{run_virtualizationframework_darwin.go => run_virtualizationframework_darwin_cgo_enabled.go} (99%) diff --git a/docs/platform-virtualization-framework.md b/docs/platform-virtualization-framework.md index 69cc25e9f..8b743b8fb 100644 --- a/docs/platform-virtualization-framework.md +++ b/docs/platform-virtualization-framework.md @@ -9,6 +9,7 @@ with updated versions of both. Alternatively, you can install Virtualization.Framework and VPNKit standalone and use it without Docker for Mac. +Virtualization.Framework is enabled on macOS only when built with CGO enabled. ## Boot diff --git a/src/cmd/linuxkit/Makefile b/src/cmd/linuxkit/Makefile index 401fb3042..53e8fbd14 100644 --- a/src/cmd/linuxkit/Makefile +++ b/src/cmd/linuxkit/Makefile @@ -61,6 +61,7 @@ ifeq ($(STATIC), 1) endif # darwin needs CGO to build for virtualization framework +# without CGO attempt to use virtualization framework will ends with error ifeq ($(GOOS), darwin) CGO_ENABLED=1 endif diff --git a/src/cmd/linuxkit/run_virtualizationframework_darwin_cgo_disabled.go b/src/cmd/linuxkit/run_virtualizationframework_darwin_cgo_disabled.go new file mode 100644 index 000000000..114438f91 --- /dev/null +++ b/src/cmd/linuxkit/run_virtualizationframework_darwin_cgo_disabled.go @@ -0,0 +1,14 @@ +//go:build darwin && !cgo +// +build darwin,!cgo + +package main + +import ( + log "github.com/sirupsen/logrus" +) + +// Process the run arguments and execute run +func runVirtualizationFramework(args []string) { + log.Fatal("This build of linuxkit was compiled without virtualization framework capabilities. " + + "To perform 'linuxkit run' on macOS, please use a version of linuxkit compiled with virtualization framework.") +} diff --git a/src/cmd/linuxkit/run_virtualizationframework_darwin.go b/src/cmd/linuxkit/run_virtualizationframework_darwin_cgo_enabled.go similarity index 99% rename from src/cmd/linuxkit/run_virtualizationframework_darwin.go rename to src/cmd/linuxkit/run_virtualizationframework_darwin_cgo_enabled.go index 79a3eb060..ed5d5f1b0 100644 --- a/src/cmd/linuxkit/run_virtualizationframework_darwin.go +++ b/src/cmd/linuxkit/run_virtualizationframework_darwin_cgo_enabled.go @@ -1,5 +1,5 @@ -//go:build darwin -// +build darwin +//go:build darwin && cgo +// +build darwin,cgo package main