diff --git a/HISTORY.rst b/HISTORY.rst index c9384b85..b0e5b2bc 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -9,14 +9,21 @@ PlatformIO 4.0 * Added Python 3.5+ support (`issue #895 `_) + + +PlatformIO 3.0 +-------------- + +3.6.5 (2019-??-??) +~~~~~~~~~~~~~~~~~~ + * Project Generator: added new targets for CLion IDE "BUILD_VERBOSE" and "MONITOR" (serial port monitor) (`issue #359 `_) * Fixed an issue with slow updating of PlatformIO Core packages on Windows * Fixed an issue when `platformio ci `__ recompiles project if ``--keep-build-dir`` option is passed (`issue #2109 `_) - -PlatformIO 3.0 --------------- +* Fixed an issue when ``$PROJECT_HASH`` template was not expanded for the other directory ``***_dir`` options in `"platformio.ini" (Project Configuration File) `__ + (`issue #2170 `_) 3.6.4 (2019-01-23) ~~~~~~~~~~~~~~~~~~ @@ -60,8 +67,8 @@ PlatformIO 3.0 ~~~~~~~~~~~~~~~~~~ * Generate an `include `__ and `test `__ directories with a README file when initializing a new project -* Support in-line comments for multi-line value (``lib_deps``, ``build_flags``, etc) in `“platformio.ini” (Project Configuration File) `__ -* Added ``$PROJECT_HASH`` template variable for `build_dir `__. One of the use cases is setting a global storage for project artifacts using `PLATFORMIO_BUILD_DIR `__ system environment variable. For example, ``/tmp/pio-build/$PROJECT_HASH`` (Unix) or ``%TEMP%/pio-build/$PROJECT_HASH`` (Windows) +* Support in-line comments for multi-line value (``lib_deps``, ``build_flags``, etc) in `"platformio.ini" (Project Configuration File) `__ +* Added ``$PROJECT_HASH`` template variable for `build_dir `__. One of the use cases is setting a global storage for project artifacts using `PLATFORMIO_BUILD_DIR `__ system environment variable. For example, ``/tmp/pio-build/$PROJECT_HASH`` (Unix) or ``$[sysenv.TEMP}/pio-build/$PROJECT_HASH`` (Windows) * Improved a loading speed of PIO Home "Recent News" * Improved `PIO Unified Debugger `__ for "mbed" framework and fixed issue with missed local variables * Introduced `"Release" and "Debug" Build Configurations `__ @@ -145,7 +152,7 @@ PlatformIO 3.0 * Simplify configuration for `PIO Unit Testing `__: separate main program from a test build process, drop requirement for ``#ifdef UNIT_TEST`` guard -* Override any option from board manifest in `“platformio.ini” (Project Configuration File) `__ +* Override any option from board manifest in `"platformio.ini" (Project Configuration File) `__ (`issue #1612 `_) * Configure a custom path to SVD file using `debug_svd_path `__ option @@ -208,7 +215,7 @@ PlatformIO 3.0 (`issue #1274 `_) * Configure a custom firmware/program name in build directory (`example `__) * Renamed ``envs_dir`` option to ``build_dir`` - in `“platformio.ini” (Project Configuration File) `__ + in `"platformio.ini" (Project Configuration File) `__ * Refactored code without "arrow" dependency (resolve issue with "ImportError: No module named backports.functools_lru_cache") * Improved support of PIO Unified Debugger for Eclipse Oxygen @@ -243,7 +250,7 @@ PlatformIO 3.0 folder for project's header files (`issue #1107 `_) * Depend on development platform using VCS URL (Git, Mercurial and Subversion) - instead of a name in `“platformio.ini” (Project Configuration File) `__. + instead of a name in `"platformio.ini" (Project Configuration File) `__. Drop support for ``*_stage`` dev/platform names (use VCS URL instead). * Reinstall/redownload package with a new ``-f, --force`` option for `platformio lib install `__ @@ -264,7 +271,7 @@ PlatformIO 3.0 - Parse library source file in pair with a header when they have the same name (`issue #1175 `_) - Handle library dependencies defined as VCS or SemVer in - `“platformio.ini” (Project Configuration File) `__ + `"platformio.ini" (Project Configuration File) `__ (`issue #1155 `_) - Added option to configure library `Compatible Mode `__ using `library.json `__ @@ -300,7 +307,7 @@ PlatformIO 3.0 * Use a root of library when filtering source code using `library.json `__ and ``srcFilter`` field -* Added ``monitor_*`` options to white-list for `“platformio.ini” (Project Configuration File) `__ +* Added ``monitor_*`` options to white-list for `"platformio.ini" (Project Configuration File) `__ (`issue #982 `_) * Do not ask for board ID when initialize project for desktop platform * Handle broken PIO Core state and create new one @@ -321,18 +328,18 @@ PlatformIO 3.0 - Integration with `Eclipse `__ and `Sublime Text `__ * Filter `PIO Unit Testing `__ - tests using a new ``test_filter`` option in `“platformio.ini” (Project Configuration File) `__ + tests using a new ``test_filter`` option in `"platformio.ini" (Project Configuration File) `__ or `platformio test --filter `__ command (`issue #934 `_) * Custom ``test_transport`` for `PIO Unit Testing `__ Engine -* Configure Serial Port Monitor in `“platformio.ini” (Project Configuration File) `__ +* Configure Serial Port Monitor in `"platformio.ini" (Project Configuration File) `__ (`issue #787 `_) * New `monitor `__ target which allows to launch Serial Monitor automatically after successful "build" or "upload" operations (`issue #788 `_) * Project generator for `VIM `__ -* Multi-line support for the different options in `“platformio.ini” (Project Configuration File) `__, +* Multi-line support for the different options in `"platformio.ini" (Project Configuration File) `__, such as: ``build_flags``, ``build_unflags``, etc. (`issue #889 `_) * Handle dynamic ``SRC_FILTER`` environment variable from @@ -344,7 +351,7 @@ PlatformIO 3.0 that were installed from repository * Add support for ``.*cc`` extension (`issue #939 `_) -* Handle ``env_default`` in `“platformio.ini” (Project Configuration File) `__ +* Handle ``env_default`` in `"platformio.ini" (Project Configuration File) `__ when re-initializing a project (`issue #950 `_) * Use root directory for PIO Home when path contains non-ascii characters @@ -442,10 +449,10 @@ PlatformIO 3.0 (`issue #808 `_, `issue #467 `_) * Inject system environment variables to configuration settings in - `“platformio.ini” (Project Configuration File) `__ + `"platformio.ini" (Project Configuration File) `__ (`issue #792 `_) * Custom boards per project with ``boards_dir`` option in - `“platformio.ini” (Project Configuration File) `__ + `"platformio.ini" (Project Configuration File) `__ (`issue #515 `_) * Unix shell-style wildcards for `upload_port `_ (`issue #839 `_) @@ -456,7 +463,7 @@ PlatformIO 3.0 * Added new `LDF Modes `__: ``chain+`` and ``deep+`` and set ``chain+`` as default * Added global ``lib_extra_dirs`` option to ``[platformio]`` section for - `“platformio.ini” (Project Configuration File) `__ + `"platformio.ini" (Project Configuration File) `__ (`issue #842 `_) * Enabled caching by default for API requests and Library Manager (see `enable_cache `__ setting) * Native integration with VIM/Neovim using `neomake-platformio `__ plugin @@ -479,7 +486,7 @@ PlatformIO 3.0 3.1.0 (2016-09-19) ~~~~~~~~~~~~~~~~~~ -* New! Dynamic variables/templates for `“platformio.ini” (Project Configuration File) `__ +* New! Dynamic variables/templates for `"platformio.ini" (Project Configuration File) `__ (`issue #705 `_) * Summary about processed environments (`issue #777 `_) diff --git a/docs b/docs index eefd1f0f..768ccfd2 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit eefd1f0f93e5d82b09d7e51fb121b270602e4c89 +Subproject commit 768ccfd2b4a3e508addb48f7f6d1fdebad5d946c diff --git a/platformio/util.py b/platformio/util.py index 62882353..d3dbb965 100644 --- a/platformio/util.py +++ b/platformio/util.py @@ -209,28 +209,37 @@ def pioversion_to_intstr(): def get_project_optional_dir(name, default=None): - data = None + paths = None var_name = "PLATFORMIO_%s" % name.upper() if var_name in os.environ: - data = os.getenv(var_name) + paths = os.getenv(var_name) else: try: config = load_project_config() if (config.has_section("platformio") and config.has_option("platformio", name)): - data = config.get("platformio", name) + paths = config.get("platformio", name) except exception.NotPlatformIOProject: pass - if not data: + if not paths: return default items = [] - for item in data.split(", "): + for item in paths.split(", "): if item.startswith("~"): item = expanduser(item) items.append(abspath(item)) - return ", ".join(items) + paths = ", ".join(items) + + while "$PROJECT_HASH" in paths: + project_dir = get_project_dir() + paths = paths.replace( + "$PROJECT_HASH", + sha1(project_dir if PY2 else project_dir.encode()).hexdigest() + [:10]) + + return paths def get_home_dir(): @@ -320,12 +329,6 @@ def get_projectboards_dir(): def get_projectbuild_dir(force=False): path = get_project_optional_dir("build_dir", join(get_project_dir(), ".pioenvs")) - if "$PROJECT_HASH" in path: - project_dir = get_project_dir() - path = path.replace( - "$PROJECT_HASH", - sha1(project_dir if PY2 else project_dir.encode()).hexdigest() - [:10]) try: if not isdir(path): os.makedirs(path)