diff --git a/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java b/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java index cbc5d16c1..493ba5147 100644 --- a/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java +++ b/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java @@ -20,8 +20,9 @@ */ package processing.app.debug; -import static processing.app.I18n._; -import static processing.app.I18n.format; +import processing.app.BaseNoGui; +import processing.app.I18n; +import processing.app.helpers.PreferencesMap; import java.io.File; import java.io.IOException; @@ -29,7 +30,8 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; -import processing.app.helpers.PreferencesMap; +import static processing.app.I18n._; +import static processing.app.I18n.format; public class LegacyTargetPlatform implements TargetPlatform { @@ -117,6 +119,12 @@ public class LegacyTargetPlatform implements TargetPlatform { format(_("Error loading {0}"), localPlatformsFile.getAbsolutePath()), e); } + try { + rewriteKeysOfOldPlatformsTxtAndWarnAboutIt(); + } catch (IOException e) { + throw new TargetPlatformException(e); + } + File progFile = new File(folder, "programmers.txt"); try { if (progFile.exists() && progFile.canRead()) { @@ -130,6 +138,35 @@ public class LegacyTargetPlatform implements TargetPlatform { } } + private void rewriteKeysOfOldPlatformsTxtAndWarnAboutIt() throws IOException { + File platformRewrite = new File(BaseNoGui.getHardwareFolder(), "platform.keys.rewrite.txt"); + PreferencesMap platformRewriteProps = new PreferencesMap(platformRewrite); + + PreferencesMap oldProps = platformRewriteProps.subTree("old"); + PreferencesMap newProps = platformRewriteProps.subTree("new"); + + String platformName = preferences.get("name"); + if (platformName == null) { + platformName = folder.getAbsolutePath(); + } + + for (Map.Entry entry : oldProps.entrySet()) { + String preferencesKey = entry.getKey().substring(entry.getKey().indexOf(".") + 1); + if (preferences.containsKey(preferencesKey) && entry.getValue().equals(preferences.get(preferencesKey))) { + System.err.println(I18n.format(_("Warning: platform.txt from core '{0}' contains deprecated {1}, automatically converted to {2}. Consider upgrading this core."), platformName, preferencesKey + "=" + entry.getValue(), preferencesKey + "=" + newProps.get(entry.getKey()))); + preferences.put(preferencesKey, newProps.get(entry.getKey())); + } + } + + PreferencesMap addedProps = platformRewriteProps.subTree("added"); + for (Map.Entry entry : addedProps.entrySet()) { + if (!preferences.containsKey(entry.getKey())) { + System.err.println(I18n.format(_("Warning: platform.txt from core '{0}' misses property {1}, automatically set to {2}. Consider upgrading this core."), platformName, entry.getKey(), entry.getValue())); + preferences.put(entry.getKey(), entry.getValue()); + } + } + } + @Override public String getId() { return id; diff --git a/build/build.xml b/build/build.xml index 4c4eab576..62ad948e3 100644 --- a/build/build.xml +++ b/build/build.xml @@ -113,6 +113,8 @@ + + diff --git a/hardware/platform.keys.rewrite.txt b/hardware/platform.keys.rewrite.txt new file mode 100644 index 000000000..e14de1e6d --- /dev/null +++ b/hardware/platform.keys.rewrite.txt @@ -0,0 +1,17 @@ +old.0.compiler.path={runtime.ide.path}/hardware/tools/avr/bin/ +new.0.compiler.path={runtime.tools.avr-gcc.path}/bin/ + +added.tools.avrdude.path={runtime.tools.avrdude.path} + +old.1.tools.avrdude.cmd.path={runtime.ide.path}/hardware/tools/avr/bin/avrdude +new.1.tools.avrdude.cmd.path={path}/bin/avrdude + +old.2.tools.avrdude.config.path={runtime.ide.path}/hardware/tools/avr/etc/avrdude.conf +new.2.tools.avrdude.config.path={path}/etc/avrdude.conf + +old.3.compiler.path={runtime.ide.path}/hardware/tools/gcc-arm-none-eabi-4.8.3-2014q1/bin/ +new.3.compiler.path={runtime.tools.arm-none-eabi-gcc.path}/bin/ + +old.4.tools.bossac.path={runtime.ide.path}/hardware/tools +new.4.tools.bossac.path={runtime.tools.bossac.path} +