Fork of the excellent esp8266-react - https://github.com/rjwats/esp8266-react
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.

40 lines
1.6 KiB

  1. import os
  2. import sys
  3. import re
  4. Import("env")
  5. # Find files under 'root' of a given 'fileName' in directories matching 'subDirectoryPattern'
  6. # This will allow us to safely find the offending Time.h file for removal prior to building
  7. def findSubDirectoryFiles(root, subDirectoryPattern, fileName):
  8. subDirectories = os.listdir(root)
  9. subDirectories = filter(lambda d: re.match(subDirectoryPattern, d), subDirectories)
  10. result = []
  11. for subDirectory in subDirectories:
  12. candidateFile = os.path.join(root, subDirectory, fileName)
  13. if os.path.isfile(candidateFile):
  14. result.append(candidateFile)
  15. return result
  16. def deleteTimeHeader(libDepsDir):
  17. timeHeaderFile = "Time.h"
  18. timeLibDirectoryPattern = "Time(_ID[0-9]+)?"
  19. # delete the file, as long as we only find one
  20. if os.path.isdir(libDepsDir) :
  21. deletionCandidates = findSubDirectoryFiles(libDepsDir, timeLibDirectoryPattern, timeHeaderFile)
  22. numDeletionCandidates = len(deletionCandidates)
  23. if numDeletionCandidates == 1:
  24. os.remove(deletionCandidates[0])
  25. elif numDeletionCandidates > 1:
  26. os.write(2, "Can\'t delete Time.h, more than one instance found:\n" + "\n".join(deletionCandidates))
  27. sys.exit(1)
  28. # old lib deps directory
  29. deleteTimeHeader(os.path.join(env.subst("$PROJECT_DIR"), ".piolibdeps"))
  30. # pre 4.x lib deps directory
  31. deleteTimeHeader(os.path.join(env.subst("$PROJECTLIBDEPS_DIR"), env.subst("$PIOENV")))
  32. # >4.x lib deps directory
  33. deleteTimeHeader(os.path.join(env.subst("$PROJECT_LIBDEPS_DIR"), env.subst("$PIOENV")))