My Marlin configs for Fabrikator Mini and CTC i3 Pro B
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

copy_marlin_variant_to_framework.py 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import os,shutil
  2. from SCons.Script import DefaultEnvironment
  3. from platformio import util
  4. try:
  5. # PIO < 4.4
  6. from platformio.managers.package import PackageManager
  7. except ImportError:
  8. # PIO >= 4.4
  9. from platformio.package.meta import PackageSpec as PackageManager
  10. def parse_pkg_uri(spec):
  11. if PackageManager.__name__ == 'PackageSpec':
  12. return PackageManager(spec).name
  13. else:
  14. name, _, _ = PackageManager.parse_pkg_uri(spec)
  15. return name
  16. def copytree(src, dst, symlinks=False, ignore=None):
  17. for item in os.listdir(src):
  18. s = os.path.join(src, item)
  19. d = os.path.join(dst, item)
  20. if os.path.isdir(s):
  21. shutil.copytree(s, d, symlinks, ignore)
  22. else:
  23. shutil.copy2(s, d)
  24. env = DefaultEnvironment()
  25. platform = env.PioPlatform()
  26. board = env.BoardConfig()
  27. variant = board.get("build.variant")
  28. platform_packages = env.GetProjectOption('platform_packages')
  29. # if there's no framework defined, take it from the class name of platform
  30. framewords = {
  31. "Ststm32Platform": "framework-arduinoststm32",
  32. "AtmelavrPlatform": "framework-arduino-avr"
  33. }
  34. if len(platform_packages) == 0:
  35. platform_name = framewords[platform.__class__.__name__]
  36. else:
  37. platform_name = parse_pkg_uri(platform_packages[0])
  38. FRAMEWORK_DIR = platform.get_package_dir(platform_name)
  39. assert os.path.isdir(FRAMEWORK_DIR)
  40. assert os.path.isdir("buildroot/share/PlatformIO/variants")
  41. variant_dir = os.path.join(FRAMEWORK_DIR, "variants", variant)
  42. source_dir = os.path.join("buildroot/share/PlatformIO/variants", variant)
  43. assert os.path.isdir(source_dir)
  44. if os.path.isdir(variant_dir):
  45. shutil.rmtree(variant_dir)
  46. if not os.path.isdir(variant_dir):
  47. os.mkdir(variant_dir)
  48. copytree(source_dir, variant_dir)