From d7099c4e4009bfc7dad26010e0f58a20d4f4d153 Mon Sep 17 00:00:00 2001 From: Benjamin Doherty Date: Tue, 25 Oct 2022 12:57:04 -0400 Subject: [PATCH 1/3] Allow using arm64v8 binaries in darwin for postgres 14.2 and up --- version_strategy.go | 12 +++++++-- version_strategy_test.go | 54 +++++++++++++++++++++++++--------------- 2 files changed, 44 insertions(+), 22 deletions(-) diff --git a/version_strategy.go b/version_strategy.go index 0d99462..3304c56 100644 --- a/version_strategy.go +++ b/version_strategy.go @@ -1,6 +1,7 @@ package embeddedpostgres import ( + "fmt" "os" "os/exec" "strings" @@ -36,9 +37,16 @@ func defaultVersionStrategy(config Config, goos, arch string, linuxMachineName f } } - // at this point, postgres is not available for macos on arm + // postgres below version 14.2 is not available for macos on arm if goos == "darwin" && arch == "arm64" { - arch = "amd64" + var majorVer, minorVer int + fmt.Sscanf(string(config.version), "%d.%d", &majorVer, &minorVer) + + if majorVer < 14 || (majorVer == 14 && minorVer < 2) { + arch = "amd64" + } else { + arch += "v8" + } } return goos, arch, config.version diff --git a/version_strategy_test.go b/version_strategy_test.go index 8b0eccc..53aab59 100644 --- a/version_strategy_test.go +++ b/version_strategy_test.go @@ -54,28 +54,42 @@ func Test_DefaultVersionStrategy_AllGolangDistributions(t *testing.T) { "windows/arm": {"windows", "arm"}, } + versionDifferences := map[PostgresVersion]map[string][]string{ + PostgresVersion("14.0.0"): {}, + PostgresVersion("14.1.0"): {}, + PostgresVersion("14.2.0"): {"darwin/arm64": {"darwin", "arm64v8"}}, + V14: {"darwin/arm64": {"darwin", "arm64v8"}}, + } defaultConfig := DefaultConfig() - for dist, expected := range allGolangDistributions { - dist := dist - expected := expected - - t.Run(fmt.Sprintf("DefaultVersionStrategy_%s", dist), func(t *testing.T) { - osArch := strings.Split(dist, "/") - - operatingSystem, architecture, postgresVersion := defaultVersionStrategy( - defaultConfig, - osArch[0], - osArch[1], - linuxMachineName, - func() bool { - return false - })() - - assert.Equal(t, expected[0], operatingSystem) - assert.Equal(t, expected[1], architecture) - assert.Equal(t, V14, postgresVersion) - }) + for version, differences := range versionDifferences { + defaultConfig.version = version + + for dist, expected := range allGolangDistributions { + dist := dist + expected := expected + + if override, ok := differences[dist]; ok { + expected = override + } + + t.Run(fmt.Sprintf("DefaultVersionStrategy_%s", dist), func(t *testing.T) { + osArch := strings.Split(dist, "/") + + operatingSystem, architecture, postgresVersion := defaultVersionStrategy( + defaultConfig, + osArch[0], + osArch[1], + linuxMachineName, + func() bool { + return false + })() + + assert.Equal(t, expected[0], operatingSystem) + assert.Equal(t, expected[1], architecture) + assert.Equal(t, version, postgresVersion) + }) + } } } From 8ebc47c99f2a8cf0d4b5a3f633eb789e2190b4d3 Mon Sep 17 00:00:00 2001 From: Benjamin Doherty Date: Tue, 25 Oct 2022 14:16:19 -0400 Subject: [PATCH 2/3] Update module path --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 020678b..0722abd 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/fergusstrange/embedded-postgres +module github.com/tovala/embedded-postgres go 1.13 From 5718b2d4a6434120675e6a60cedd0210de25991a Mon Sep 17 00:00:00 2001 From: Benjamin Doherty Date: Tue, 25 Oct 2022 14:41:48 -0400 Subject: [PATCH 3/3] Update import package name --- cmd/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/main.go b/cmd/main.go index 6ef68a1..1f7f0c9 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -3,7 +3,7 @@ package main import ( "log" - embeddedpostgres "github.com/fergusstrange/embedded-postgres" + embeddedpostgres "github.com/tovala/embedded-postgres" ) func main() {