Skip to content

Commit 3b69993

Browse files
authored
Fix ARM64 builds (#602)
* Fix ARM64 resolving AMD64 dependency * Fix linting
1 parent 05e0092 commit 3b69993

2 files changed

Lines changed: 31 additions & 2 deletions

File tree

runtime_config_parser.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ func (p RuntimeConfigParser) Parse(glob string) (string, error) {
4848
if err != nil {
4949
return "", err
5050
}
51-
defer file.Close()
51+
defer func() {
52+
_ = file.Close()
53+
}()
5254

5355
buffer := bytes.NewBuffer(nil)
5456
err = jsmin.Min(file, buffer)

runtime_version_resolver.go

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package dotnetcoreaspnetruntime
22

33
import (
44
"fmt"
5+
"os"
56
"regexp"
7+
"runtime"
68
"sort"
79
"strings"
810

@@ -175,11 +177,36 @@ func filterBuildpackTOML(path, dependencyID, stack string) ([]postal.Dependency,
175177
return []postal.Dependency{}, "", err
176178
}
177179

180+
var targetOs string
181+
targetOs = os.Getenv("CNB_TARGET_OS")
182+
if targetOs == "" {
183+
targetOs = runtime.GOOS
184+
}
185+
186+
var targetArch string
187+
targetArch = os.Getenv("CNB_TARGET_ARCH")
188+
if targetArch == "" {
189+
targetArch = runtime.GOARCH
190+
}
191+
178192
var filteredDependencies []postal.Dependency
179193
for _, dependency := range buildpackTOML.Metadata.Dependencies {
180-
if dependency.ID == dependencyID && containsStack(dependency.Stacks, stack) {
194+
if dependency.ID == dependencyID && containsStack(dependency.Stacks, stack) && supportsPlatform(targetOs, targetArch, dependency) {
181195
filteredDependencies = append(filteredDependencies, dependency)
182196
}
183197
}
184198
return filteredDependencies, buildpackTOML.Metadata.DefaultVersions[dependencyID], nil
185199
}
200+
201+
func supportsPlatform(targetOs, targetArch string, dependency postal.Dependency) bool {
202+
// Avoid strict checking in case of dependency does not specify OS/Arch
203+
if dependency.OS == "" && dependency.Arch == "" {
204+
return true
205+
}
206+
207+
if targetOs != dependency.OS || targetArch != dependency.Arch {
208+
return false
209+
}
210+
211+
return true
212+
}

0 commit comments

Comments
 (0)