Skip to content

Commit

Permalink
[cbuild2cmake] Enforce toolchain registration environment variables
Browse files Browse the repository at this point in the history
  • Loading branch information
brondani authored Jul 18, 2024
1 parent 9ab22de commit f32fb28
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 3 deletions.
4 changes: 2 additions & 2 deletions pkg/inittest/inittest.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,13 @@ func TestInitialization(testRoot string) {
func ClearToolchainRegistration() {
// Unset environment variables
systemEnvVars := os.Environ()
pattern := regexp.MustCompile(`(\w+)_TOOLCHAIN_(\d+)_(\d+)_(\d+)=(.*)`)
pattern := regexp.MustCompile(`((\w+)_TOOLCHAIN_(\d+)_(\d+)_(\d+))=(.*)`)
for _, systemEnvVar := range systemEnvVars {
matched := pattern.FindAllStringSubmatch(systemEnvVar, -1)
if matched == nil {
continue
}
os.Unsetenv(systemEnvVar)
os.Unsetenv(matched[0][1])
}
}

Expand Down
4 changes: 4 additions & 0 deletions pkg/maker/toolchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,10 @@ func (m *Maker) ProcessToolchain() error {
registeredVersions = append(registeredVersions, version)
}
}
if len(registeredVersions) == 0 {
err := errors.New("compiler registration environment variable missing, format: " + contextToolchain + "_TOOLCHAIN_<major>_<minor>_<patch>")
return err
}
sort.Sort(sort.Reverse(semver.Collection(registeredVersions)))

// Get latest compatible registered version
Expand Down
13 changes: 12 additions & 1 deletion pkg/maker/toolchain_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,20 @@ func TestToolchain(t *testing.T) {
assert := assert.New(t)
var m maker.Maker

// Update environment variables
// Clear environment variables
m.EnvVars = utils.UpdateEnvVars(m.InstallConfigs.BinPath, m.InstallConfigs.EtcPath)
inittest.ClearToolchainRegistration()

t.Run("test missing environment variables", func(t *testing.T) {
inittest.ClearToolchainRegistration()
m.Cbuilds = make([]maker.Cbuild, 1)
m.Cbuilds[0].BuildDescType.Compiler = "AC6@>=6.22.0"
err := m.ProcessToolchain()
assert.Error(err)
assert.ErrorContains(err, "compiler registration environment variable missing, format: AC6_TOOLCHAIN_<major>_<minor>_<patch>")
})

// Update environment variables
absTestRoot, _ := filepath.Abs(testRoot)
absTestRoot = filepath.ToSlash(absTestRoot)
os.Setenv("AC6_TOOLCHAIN_6_19_0", path.Join(absTestRoot, "run/path/to/ac619/bin"))
Expand Down

0 comments on commit f32fb28

Please sign in to comment.