Skip to content

Commit a99de24

Browse files
committed
Removed hardcoded build.warn_data_percentage in build.options file
Also fixed the "low memory" warning printer.
1 parent 3f302d1 commit a99de24

File tree

3 files changed

+13
-17
lines changed

3 files changed

+13
-17
lines changed

internal/arduino/builder/builder.go

+1-6
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,6 @@ type Builder struct {
5858
// Parallel processes
5959
jobs int
6060

61-
// Custom build properties defined by user (line by line as "key=value" pairs)
62-
customBuildProperties []string
63-
6461
// core related
6562
coreBuildCachePath *paths.Path
6663
extraCoreBuildCachePaths paths.PathList
@@ -170,7 +167,6 @@ func NewBuilder(
170167
return nil, fmt.Errorf("invalid build properties: %w", err)
171168
}
172169
buildProperties.Merge(customBuildProperties)
173-
customBuildPropertiesArgs := append(requestBuildProperties, "build.warn_data_percentage=75")
174170

175171
sketchBuildPath, err := buildPath.Join("sketch").Abs()
176172
if err != nil {
@@ -212,7 +208,6 @@ func NewBuilder(
212208
coreBuildPath: coreBuildPath,
213209
librariesBuildPath: librariesBuildPath,
214210
jobs: jobs,
215-
customBuildProperties: customBuildPropertiesArgs,
216211
coreBuildCachePath: coreBuildCachePath,
217212
extraCoreBuildCachePaths: extraCoreBuildCachePaths,
218213
logger: logger,
@@ -230,7 +225,7 @@ func NewBuilder(
230225
hardwareDirs, librariesDirs,
231226
builtInLibrariesDirs, buildPath,
232227
sk,
233-
customBuildPropertiesArgs,
228+
requestBuildProperties,
234229
fqbn,
235230
clean,
236231
buildProperties.Get("compiler.optimization_flags"),

internal/arduino/builder/sizer.go

+8-6
Original file line numberDiff line numberDiff line change
@@ -196,15 +196,17 @@ func (b *Builder) checkSize() (ExecutablesFileSections, error) {
196196
return executableSectionsSize, errors.New(i18n.Tr("data section exceeds available space in board"))
197197
}
198198

199+
warnDataPercentage := 75
199200
if w := properties.Get("build.warn_data_percentage"); w != "" {
200-
warnDataPercentage, err := strconv.Atoi(w)
201-
if err != nil {
202-
return executableSectionsSize, err
203-
}
204-
if maxDataSize > 0 && dataSize > maxDataSize*warnDataPercentage/100 {
205-
b.logger.Warn(i18n.Tr("Low memory available, stability problems may occur."))
201+
if p, err := strconv.Atoi(w); err == nil {
202+
warnDataPercentage = p
203+
} else {
204+
b.logger.Warn(i18n.Tr("Invalid value for build.warn_data_percentage: %s", w))
206205
}
207206
}
207+
if maxDataSize > 0 && dataSize > maxDataSize*warnDataPercentage/100 {
208+
b.logger.Warn(i18n.Tr("Low memory available, stability problems may occur."))
209+
}
208210

209211
return executableSectionsSize, nil
210212
}

internal/integrationtest/compile_4/compile_test.go

+4-5
Original file line numberDiff line numberDiff line change
@@ -1038,15 +1038,14 @@ func TestBuildOptionsFile(t *testing.T) {
10381038
"sketchLocation"
10391039
]`)
10401040
requirejson.Query(t, buildOptionsBytes, ".fqbn", `"arduino:avr:uno"`)
1041-
requirejson.Query(t, buildOptionsBytes, ".customBuildProperties", `"build.warn_data_percentage=75"`)
10421041

10431042
// Recompiling a second time should provide the same result
10441043
_, _, err = cli.Run("compile", "-b", "arduino:avr:uno", "--build-path", buildPath.String(), sketchPath.String())
10451044
require.NoError(t, err)
10461045

1047-
buildOptionsBytes, err = buildPath.Join("build.options.json").ReadFile()
1046+
buildOptionsBytes2, err := buildPath.Join("build.options.json").ReadFile()
10481047
require.NoError(t, err)
1049-
requirejson.Query(t, buildOptionsBytes, ".customBuildProperties", `"build.warn_data_percentage=75"`)
1048+
require.Equal(t, buildOptionsBytes, buildOptionsBytes2)
10501049

10511050
// Recompiling with a new build option must produce a new `build.options.json`
10521051
_, _, err = cli.Run("compile", "-b", "arduino:avr:uno", "--build-path", buildPath.String(),
@@ -1055,7 +1054,7 @@ func TestBuildOptionsFile(t *testing.T) {
10551054
)
10561055
require.NoError(t, err)
10571056

1058-
buildOptionsBytes, err = buildPath.Join("build.options.json").ReadFile()
1057+
buildOptionsBytes3, err := buildPath.Join("build.options.json").ReadFile()
10591058
require.NoError(t, err)
1060-
requirejson.Query(t, buildOptionsBytes, ".customBuildProperties", `"custom=prop,build.warn_data_percentage=75"`)
1059+
require.NotEqual(t, buildOptionsBytes, buildOptionsBytes3)
10611060
}

0 commit comments

Comments
 (0)