1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- #
- # generic_create_variant.py
- #
- # Copy one of the variants from buildroot/platformio/variants into
- # the appropriate framework variants folder, so that its contents
- # will be picked up by PlatformIO just like any other variant.
- #
- import pioutil, re
- marlin_variant_pattern = re.compile("marlin_.*")
- if pioutil.is_pio_build():
- import shutil, marlin
- from pathlib import Path
- #
- # Get the platform name from the 'platform_packages' option,
- # or look it up by the platform.class.name.
- #
- env = pioutil.env
- platform = env.PioPlatform()
- from platformio.package.meta import PackageSpec
- platform_packages = env.GetProjectOption('platform_packages')
- # Remove all tool items from platform_packages
- platform_packages = [x for x in platform_packages if not x.startswith("platformio/tool-")]
- if len(platform_packages) == 0:
- framewords = {
- "Ststm32Platform": "framework-arduinoststm32",
- "AtmelavrPlatform": "framework-arduino-avr"
- }
- platform_name = framewords[platform.__class__.__name__]
- else:
- spec = PackageSpec(platform_packages[0])
- if spec.uri and '@' in spec.uri:
- platform_name = re.sub(r'@.+', '', spec.uri)
- else:
- platform_name = spec.name
- FRAMEWORK_DIR = Path(platform.get_package_dir(platform_name))
- assert FRAMEWORK_DIR.is_dir()
- #
- # Point variants_dir to our variant folder when board_build.variant
- # is provided and the variant name begins with "marlin_".
- #
- board = env.BoardConfig()
- variant = board.get("build.variant")
- #mcu_type = board.get("build.mcu")[:-2]
- #series = mcu_type[:7].upper() + "xx"
- # Make sure the local variant sub-folder exists
- if marlin_variant_pattern.match(str(variant).lower()):
- here = Path.cwd()
- variants_dir = here / 'buildroot' / 'share' / 'PlatformIO' / 'variants'
- source_dir = variants_dir / variant
- assert source_dir.is_dir()
- board.update("build.variants_dir", str(variants_dir))
|