added some functions to verify and initialize ghdl project

This commit is contained in:
Erik Örtenberg 2025-02-11 00:37:05 +01:00
parent e0e4345a31
commit 92b6d6a12f

View File

@ -1,25 +1,48 @@
import os
import subprocess
def buildEnvExists():
def ghdlEnvExists(relativePath="work"):
## Check if work exists
try:
result = os.lstat("work")
except FileNotFoundError:
result = "-1"
except e:
result = "-2"
if result == "-2":
print(f"Encountered an unexpected error {e}")
print("exiting...")
return
if result == "-1":
print("Work doesn't exist, initializing build environment")
return
print("Work exists, no filesystem things to do")
if os.access("work", os.W_OK):
print("write access checked inside work, nothing to do")
else:
print("work is not writable, change permissions of dir")
os.lstat(relativePath)
except:
return False
## Check that work is writable
if not os.access(relativePath, os.W_OK):
print(f"{relativePath} is write-protected, please acquire correct permissions")
return False
cfFileExists = False
filesInWork = os.listdir(relativePath)
for file in filesInWork:
if ".cf" in file:
cfFileExists = True
if not cfFileExists:
return False
## Nothing bad, continue
return True
def createBuildEnv():
if ghdlEnvExists():
return -1
## Create build env
os.makedirs("work",exist_ok=True)
addAllVHDLFiles(init=False)
return 0
def addAllVHDLFiles(init=False):
## Ensure everything is ready for adding files
## (init exception to avoid one if-case in ghdlEnvExists)
if not ghdlEnvExists() and not init:
return -1
## Add files
vhdlFiles = []
for file in os.listdir():
if ".vhd" in file:
vhdlFiles.append(file)
command = ["ghdl", "-i", "--workdir=work"] + vhdlFiles
subprocess.run(command)
return 0
if __name__ == "__main__":
buildEnvExists()
createBuildEnv()