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.8KB

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