mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-30 10:07:14 +02:00
Implement unified project workspace storage ".pio" // Resolve #1778
This commit is contained in:
32
HISTORY.rst
32
HISTORY.rst
@ -7,20 +7,24 @@ PlatformIO 4.0
|
|||||||
4.0.0 (2019-??-??)
|
4.0.0 (2019-??-??)
|
||||||
~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
* Python 3 support
|
* **PlatformIO-based Project**
|
||||||
(`issue #895 <https://github.com/platformio/platformio-core/issues/895>`_)
|
|
||||||
* Share common (global) options between declared build environments using ``[env]`` section in `"platformio.ini" (Project Configuration File) <https://docs.platformio.org/page/projectconf.html>`__
|
- Implemented unified project workspace storage (`workspace_dir <http://docs.platformio.org/page/projectconf/section_platformio.html#workspace-dir>`__ -> ``.pio``) for PlatformIO Build System, Library Dependency Finder, and other internal services (`issue #1778 <https://github.com/platformio/platformio-core/issues/1778>`_)
|
||||||
(`issue #1643 <https://github.com/platformio/platformio-core/issues/1643>`_)
|
- Moved ``.pioenvs`` build directory to workspace storage ``.pio/build``
|
||||||
* Include external configuration files in `"platformio.ini" (Project Configuration File) <https://docs.platformio.org/page/projectconf.html>`__ with `extra_configs <http://docs.platformio.org/page/projectconf/section_platformio.html#extra-configs>`__ option
|
- Share common (global) options between build environments using ``[env]`` section in `"platformio.ini" (Project Configuration File) <https://docs.platformio.org/page/projectconf.html>`__ (`issue #1643 <https://github.com/platformio/platformio-core/issues/1643>`_)
|
||||||
(`issue #1590 <https://github.com/platformio/platformio-core/issues/1590>`_)
|
- Include external configuration files in `"platformio.ini" (Project Configuration File) <https://docs.platformio.org/page/projectconf.html>`__ with `extra_configs <http://docs.platformio.org/page/projectconf/section_platformio.html#extra-configs>`__ option (`issue #1590 <https://github.com/platformio/platformio-core/issues/1590>`_)
|
||||||
* Override default `"platformio.ini" (Project Configuration File) <https://docs.platformio.org/page/projectconf.html>`__ with a custom using ``-c, --project-conf`` option for `platformio run <http://docs.platformio.org/page/userguide/cmd_run.html>`__, `platformio debug <http://docs.platformio.org/page/userguide/cmd_debug.html>`__, or `platformio test <http://docs.platformio.org/page/userguide/cmd_test.html>`__ commands
|
- Override default `"platformio.ini" (Project Configuration File) <https://docs.platformio.org/page/projectconf.html>`__ with a custom using ``-c, --project-conf`` option for `platformio run <http://docs.platformio.org/page/userguide/cmd_run.html>`__, `platformio debug <http://docs.platformio.org/page/userguide/cmd_debug.html>`__, or `platformio test <http://docs.platformio.org/page/userguide/cmd_test.html>`__ commands (`issue #1913 <https://github.com/platformio/platformio-core/issues/1913>`_)
|
||||||
(`issue #1913 <https://github.com/platformio/platformio-core/issues/1913>`_)
|
|
||||||
* Override default source and include directories for a library via `library.json <http://docs.platformio.org/page/librarymanager/config.html>`__ manifest using ``includeDir`` and ``srcDir`` fields
|
* **Infrastructure**
|
||||||
* Added support for the latest Python "Click" package (CLI Builder)
|
|
||||||
(`issue #349 <https://github.com/platformio/platformio-core/issues/349>`_)
|
- Python 3 support (`issue #895 <https://github.com/platformio/platformio-core/issues/895>`_)
|
||||||
* Deprecated ``--only-check`` PlatformIO Core CLI option for "update" sub-commands, please use ``--dry-run`` instead
|
- Added support for the latest Python "Click" package (CLI) (`issue #349 <https://github.com/platformio/platformio-core/issues/349>`_)
|
||||||
* Removed line-buffering from `platformio run <http://docs.platformio.org/page/userguide/cmd_run.html>`__ command which was leading to omitting progress bar from upload tools
|
- Removed line-buffering from `platformio run <http://docs.platformio.org/page/userguide/cmd_run.html>`__ command which was leading to omitting progress bar from upload tools (`issue #856 <https://github.com/platformio/platformio-core/issues/856>`_)
|
||||||
(`issue #856 <https://github.com/platformio/platformio-core/issues/856>`_)
|
|
||||||
|
* **Miscellaneous**
|
||||||
|
|
||||||
|
- Override default source and include directories for a library via `library.json <http://docs.platformio.org/page/librarymanager/config.html>`__ manifest using ``includeDir`` and ``srcDir`` fields
|
||||||
|
- Deprecated ``--only-check`` PlatformIO Core CLI option for "update" sub-commands, please use ``--dry-run`` instead
|
||||||
|
|
||||||
PlatformIO 3.0
|
PlatformIO 3.0
|
||||||
--------------
|
--------------
|
||||||
|
2
docs
2
docs
Submodule docs updated: 6e0004755a...c7591d260b
@ -34,7 +34,8 @@ from platformio.proc import get_pythonexe_path
|
|||||||
from platformio.project.helpers import (
|
from platformio.project.helpers import (
|
||||||
get_project_dir, get_project_optional_dir, get_projectbuild_dir,
|
get_project_dir, get_project_optional_dir, get_projectbuild_dir,
|
||||||
get_projectdata_dir, get_projectinclude_dir, get_projectlib_dir,
|
get_projectdata_dir, get_projectinclude_dir, get_projectlib_dir,
|
||||||
get_projectlibdeps_dir, get_projectsrc_dir, get_projecttest_dir)
|
get_projectlibdeps_dir, get_projectsrc_dir, get_projecttest_dir,
|
||||||
|
get_projectworkspace_dir)
|
||||||
|
|
||||||
AllowSubstExceptions(NameError)
|
AllowSubstExceptions(NameError)
|
||||||
|
|
||||||
@ -108,6 +109,7 @@ DEFAULT_ENV_OPTIONS = dict(
|
|||||||
UNIX_TIME=int(time()),
|
UNIX_TIME=int(time()),
|
||||||
PIOHOME_DIR=util.get_home_dir(),
|
PIOHOME_DIR=util.get_home_dir(),
|
||||||
PROJECT_DIR=get_project_dir(),
|
PROJECT_DIR=get_project_dir(),
|
||||||
|
PROJECTWORKSPACE_DIR=get_projectworkspace_dir(),
|
||||||
PROJECTINCLUDE_DIR=get_projectinclude_dir(),
|
PROJECTINCLUDE_DIR=get_projectinclude_dir(),
|
||||||
PROJECTSRC_DIR=get_projectsrc_dir(),
|
PROJECTSRC_DIR=get_projectsrc_dir(),
|
||||||
PROJECTTEST_DIR=get_projecttest_dir(),
|
PROJECTTEST_DIR=get_projecttest_dir(),
|
||||||
|
@ -359,7 +359,7 @@ def init_cvs_ignore(project_dir):
|
|||||||
if isfile(conf_path):
|
if isfile(conf_path):
|
||||||
return
|
return
|
||||||
with open(conf_path, "w") as fp:
|
with open(conf_path, "w") as fp:
|
||||||
fp.writelines([".pio\n", ".pioenvs\n", ".piolibdeps\n"])
|
fp.writelines([".pio\n", ".piolibdeps\n"])
|
||||||
|
|
||||||
|
|
||||||
def fill_project_envs(ctx, project_dir, board_ids, project_option, env_prefix,
|
def fill_project_envs(ctx, project_dir, board_ids, project_option, env_prefix,
|
||||||
|
@ -263,6 +263,11 @@ def _autoinstall_libdeps(ctx, libraries, verbose=False):
|
|||||||
|
|
||||||
|
|
||||||
def _clean_build_dir(build_dir):
|
def _clean_build_dir(build_dir):
|
||||||
|
# remove legacy ".pioenvs" folder
|
||||||
|
legacy_build_dir = join(get_project_dir(), ".pioenvs")
|
||||||
|
if isdir(legacy_build_dir) and legacy_build_dir != build_dir:
|
||||||
|
util.rmtree_(legacy_build_dir)
|
||||||
|
|
||||||
structhash_file = join(build_dir, "structure.hash")
|
structhash_file = join(build_dir, "structure.hash")
|
||||||
proj_hash = calculate_project_hash()
|
proj_hash = calculate_project_hash()
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
.pio
|
.pio
|
||||||
.pioenvs
|
|
||||||
.piolibdeps
|
.piolibdeps
|
||||||
.clang_complete
|
.clang_complete
|
||||||
.gcc-flags.json
|
.gcc-flags.json
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
.pio
|
.pio
|
||||||
.pioenvs
|
|
||||||
.piolibdeps
|
.piolibdeps
|
||||||
CMakeListsPrivate.txt
|
CMakeListsPrivate.txt
|
||||||
|
3
platformio/ide/tpls/clion/.idea/misc.xml.tpl
generated
3
platformio/ide/tpls/clion/.idea/misc.xml.tpl
generated
@ -12,8 +12,5 @@
|
|||||||
<excludeRoots>
|
<excludeRoots>
|
||||||
<file path="$PROJECT_DIR$/.pio" />
|
<file path="$PROJECT_DIR$/.pio" />
|
||||||
</excludeRoots>
|
</excludeRoots>
|
||||||
<excludeRoots>
|
|
||||||
<file path="$PROJECT_DIR$/.pioenvs" />
|
|
||||||
</excludeRoots>
|
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
@ -1,4 +1,3 @@
|
|||||||
.pio
|
.pio
|
||||||
.pioenvs
|
|
||||||
.piolibdeps
|
.piolibdeps
|
||||||
.clang_complete
|
.clang_complete
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
<itemPath>nbproject/private/launcher.properties</itemPath>
|
<itemPath>nbproject/private/launcher.properties</itemPath>
|
||||||
</logicalFolder>
|
</logicalFolder>
|
||||||
</logicalFolder>
|
</logicalFolder>
|
||||||
<sourceFolderFilter>^(nbproject|.pio|.pioenvs)$</sourceFolderFilter>
|
<sourceFolderFilter>^(nbproject|.pio)$</sourceFolderFilter>
|
||||||
<sourceRootList>
|
<sourceRootList>
|
||||||
<Elem>.</Elem>
|
<Elem>.</Elem>
|
||||||
</sourceRootList>
|
</sourceRootList>
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
.pio
|
.pio
|
||||||
.pioenvs
|
|
||||||
.piolibdeps
|
.piolibdeps
|
||||||
.clang_complete
|
.clang_complete
|
||||||
.gcc-flags.json
|
.gcc-flags.json
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
.pio
|
.pio
|
||||||
.pioenvs
|
|
||||||
.piolibdeps
|
.piolibdeps
|
||||||
.vscode/.browse.c_cpp.db*
|
.vscode/.browse.c_cpp.db*
|
||||||
.vscode/c_cpp_properties.json
|
.vscode/c_cpp_properties.json
|
||||||
|
@ -46,6 +46,7 @@ KNOWN_PLATFORMIO_OPTIONS = [
|
|||||||
|
|
||||||
# Dirs
|
# Dirs
|
||||||
"home_dir",
|
"home_dir",
|
||||||
|
"workspace_dir",
|
||||||
"lib_dir",
|
"lib_dir",
|
||||||
"libdeps_dir",
|
"libdeps_dir",
|
||||||
"include_dir",
|
"include_dir",
|
||||||
|
@ -73,6 +73,23 @@ def get_project_optional_dir(name, default=None):
|
|||||||
return paths
|
return paths
|
||||||
|
|
||||||
|
|
||||||
|
def get_projectworkspace_dir():
|
||||||
|
return get_project_optional_dir("workspace_dir",
|
||||||
|
join(get_project_dir(), ".pio"))
|
||||||
|
|
||||||
|
|
||||||
|
def get_projectbuild_dir(force=False):
|
||||||
|
path = get_project_optional_dir("build_dir",
|
||||||
|
join(get_projectworkspace_dir(), "build"))
|
||||||
|
try:
|
||||||
|
if not isdir(path):
|
||||||
|
os.makedirs(path)
|
||||||
|
except Exception as e: # pylint: disable=broad-except
|
||||||
|
if not force:
|
||||||
|
raise Exception(e)
|
||||||
|
return path
|
||||||
|
|
||||||
|
|
||||||
def get_projectlib_dir():
|
def get_projectlib_dir():
|
||||||
return get_project_optional_dir("lib_dir", join(get_project_dir(), "lib"))
|
return get_project_optional_dir("lib_dir", join(get_project_dir(), "lib"))
|
||||||
|
|
||||||
@ -101,18 +118,6 @@ def get_projectboards_dir():
|
|||||||
join(get_project_dir(), "boards"))
|
join(get_project_dir(), "boards"))
|
||||||
|
|
||||||
|
|
||||||
def get_projectbuild_dir(force=False):
|
|
||||||
path = get_project_optional_dir("build_dir",
|
|
||||||
join(get_project_dir(), ".pioenvs"))
|
|
||||||
try:
|
|
||||||
if not isdir(path):
|
|
||||||
os.makedirs(path)
|
|
||||||
except Exception as e: # pylint: disable=broad-except
|
|
||||||
if not force:
|
|
||||||
raise Exception(e)
|
|
||||||
return path
|
|
||||||
|
|
||||||
|
|
||||||
def get_projectdata_dir():
|
def get_projectdata_dir():
|
||||||
return get_project_optional_dir("data_dir", join(get_project_dir(),
|
return get_project_optional_dir("data_dir", join(get_project_dir(),
|
||||||
"data"))
|
"data"))
|
||||||
|
Reference in New Issue
Block a user