From 646e00faa11ec9eafe827fc750044aac5f2d7143 Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Fri, 27 Mar 2015 14:24:59 +0200 Subject: [PATCH 1/2] Automatically generate "Packages" block for "Creating platform" page // Resolve #139 --- docs/platforms/creating_platform.rst | 107 ++++++++++++++------------- scripts/docspregen.py | 39 ++++++++++ 2 files changed, 94 insertions(+), 52 deletions(-) diff --git a/docs/platforms/creating_platform.rst b/docs/platforms/creating_platform.rst index e99ff3c1..42555ffd 100644 --- a/docs/platforms/creating_platform.rst +++ b/docs/platforms/creating_platform.rst @@ -40,67 +40,70 @@ Packages :header-rows: 1 * - Name - - Alias - Contents - * - ``toolchain-gccarmnoneeabi`` - - toolchain - - `gcc-arm-embedded `_, - `GDB `_ - * - ``toolchain-atmelavr`` - - toolchain - - `avr-gcc `_, - `GDB `_, - `AVaRICE `_, - `SimulAVR `_ - * - ``toolchain-timsp430`` - - toolchain - - `msp-gcc `_, - `GDB `_ - * - ``tool-avrdude`` - - uploader - - `AVRDUDE `_ - * - ``tool-bossac`` - - uploader - - `BOSSA CLI `_ - * - ``tool-micronucleus`` - - uploader - - `Micronucleus `_ - * - ``tool-mspdebug`` - - uploader - - `MSPDebug `_ - * - ``tool-lm4flash`` - - uploader - - `Flash Programmer `_ - * - ``tool-stlink`` - - uploader - - `STLink `_ - * - ``tool-teensy`` - - uploader - - `Teensy Loader `_ + * - ``framework-arduinoavr`` - - - - `Arduino Wiring-based Framework (AVR Core, 1.6 branch) `_ + - `Arduino Wiring-based Framework (AVR Core, 1.6) `_ + + * - ``framework-arduinomsp430`` + - `Arduino Wiring-based Framework (MSP430 Core) `_ + * - ``framework-arduinosam`` - - - - `Arduino Wiring-based Framework (SAM Core, 1.6 branch) `_ + - `Arduino Wiring-based Framework (SAM Core, 1.6) `_ + * - ``framework-arduinoteensy`` - - - `Arduino Wiring-based Framework `_ - * - ``framework-energiamsp430`` - - - - `Energia Wiring-based Framework (MSP430 Core) `_ - * - ``framework-energiativa`` - - - - `Energia Wiring-based Framework (LM4F Core) `_ + * - ``framework-cmsis`` - - - `Vendor-independent hardware abstraction layer for the Cortex-M processor series `_ + + * - ``framework-energiamsp430`` + - `Energia Wiring-based Framework (MSP430 Core) `_ + + * - ``framework-energiativa`` + - `Energia Wiring-based Framework (LM4F Core) `_ + + * - ``framework-libopencm3`` + - `libOpenCM3 Framework `_ + + * - ``framework-mbed`` + - `mbed Framework `_ + * - ``framework-spl`` - - - `Standard Peripheral Library for STM32 MCUs `_ - * - ``framework-opencm3`` - - - - `libOpenCM3 Framework `_ + + * - ``ldscripts`` + - `Linker Scripts `_ + + * - ``tool-avrdude`` + - `AVRDUDE `_ + + * - ``tool-bossac`` + - `BOSSA CLI `_ + + * - ``tool-lm4flash`` + - `Flash Programmer `_ + + * - ``tool-micronucleus`` + - `Micronucleus `_ + + * - ``tool-mspdebug`` + - `MSPDebug `_ + + * - ``tool-stlink`` + - `ST-Link `_ + + * - ``tool-teensy`` + - `Teensy Loader `_ + + * - ``toolchain-atmelavr`` + - `avr-gcc `_, `GDB `_, `AVaRICE `_, `SimulAVR `_ + + * - ``toolchain-gccarmnoneeabi`` + - `gcc-arm-embedded `_, `GDB `_ + + * - ``toolchain-timsp430`` + - `msp-gcc `_, `GDB `_ .. _platform_creating_manifest_file: diff --git a/scripts/docspregen.py b/scripts/docspregen.py index 86bb60d6..1c07ef65 100644 --- a/scripts/docspregen.py +++ b/scripts/docspregen.py @@ -244,7 +244,46 @@ def update_framework_docs(): f.write(generate_framework(name, data)) +def update_create_platform_doc(): + allpackages = get_packages() + lines = [] + lines.append(""".. _platform_creating_packages: + +Packages +-------- + +*PlatformIO* has pre-built packages for the most popular operation systems: +*Mac OS*, *Linux (+ARM)* and *Windows*. + +.. list-table:: + :header-rows: 1 + + * - Name + - Contents""") + for type_, data in sorted(allpackages.iteritems()): + contitems = [ + "`%s <%s>`_" % (name, url) + for name, url in allpackages[type_] + ] + lines.append(""" + * - ``{type_}`` + - {contents}""".format( + type_=type_, + contents=", ".join(contitems))) + + with open(join(util.get_source_dir(), "..", "docs", "platforms", + "creating_platform.rst"), "r+") as fp: + content = fp.read() + fp.seek(0, 0) + fp.write( + content[:content.index(".. _platform_creating_packages:")] + + "\n".join(lines) + "\n\n" + + content[content.index(".. _platform_creating_manifest_file:"):] + ) + + def main(): + update_create_platform_doc() update_platform_docs() update_framework_docs() From 0053919f7fb6f3ef5e947fbd1df95769a9d66b94 Mon Sep 17 00:00:00 2001 From: Valeriy Koval Date: Fri, 27 Mar 2015 14:25:24 +0200 Subject: [PATCH 2/2] Assert error when board's platform mismatch --- platformio/builder/main.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/platformio/builder/main.py b/platformio/builder/main.py index 797b0cd4..a68aceb9 100644 --- a/platformio/builder/main.py +++ b/platformio/builder/main.py @@ -14,8 +14,8 @@ except ImportError: from os.path import join from time import time -from SCons.Script import (DefaultEnvironment, SConscript, SConscriptChdir, - Variables) +from SCons.Script import (DefaultEnvironment, Exit, SConscript, + SConscriptChdir, Variables) from platformio.exception import UnknownBoard @@ -101,6 +101,13 @@ if "BOARD" in env: ) ) + if env['PLATFORM'] != env.get("BOARD_OPTIONS", {}).get("platform"): + Exit("Error: '%s' platform doesn't support this board. " + "Use '%s' platform instead." % ( + env['PLATFORM'], + env.get("BOARD_OPTIONS", {}).get("platform"))) + + if "IGNORE_LIBS" in env: env['IGNORE_LIBS'] = [l.strip() for l in env['IGNORE_LIBS'].split(",")]