if not self.isArchiveUpToDate():
self.fetchAndVerifyArchive()
- # \note No way to verify that extracted contents match archive, re-extract
- Source.clean(self)
- self.extract()
+ if self.getExtractedChecksum() != self.checksum:
+ Source.clean(self)
+ self.extract()
+ self.storeExtractedChecksum(self.checksum)
def removeArchives (self):
archiveDir = os.path.join(EXTERNAL_DIR, pkg.baseDir, pkg.archiveDir)
else:
return False
+ def getExtractedChecksumFilePath (self):
+ return os.path.join(EXTERNAL_DIR, pkg.baseDir, pkg.archiveDir, "extracted")
+
+ def getExtractedChecksum (self):
+ extractedChecksumFile = self.getExtractedChecksumFilePath()
+
+ if os.path.exists(extractedChecksumFile):
+ return readFile(extractedChecksumFile)
+ else:
+ return None
+
+ def storeExtractedChecksum (self, checksum):
+ writeFile(self.getExtractedChecksumFilePath(), checksum)
+
def fetchAndVerifyArchive (self):
print "Fetching %s" % self.url
postExtract = postExtractLibpng),
GitRepo(
"https://github.com/KhronosGroup/SPIRV-Tools.git",
- "d12a10d2dd0cc4236ef227707c11f991b9c0d544",
+ "0b0454c42c6b6f6746434bd5c78c5c70f65d9c51",
"spirv-tools"),
GitRepo(
"https://github.com/KhronosGroup/glslang.git",
- "e3aa654c4b0c761b28d7864192ca8ceea6faf70a",
+ "a5c5fb61180e8703ca85f36d618f98e16dc317e2",
"glslang"),
+ GitRepo(
+ "https://github.com/KhronosGroup/SPIRV-Headers.git",
+ "2bf02308656f97898c5f7e433712f21737c61e4e",
+ "spirv-headers"),
]
def parseArgs ():