added some functions to verify and initialize ghdl project
This commit is contained in:
parent
e0e4345a31
commit
92b6d6a12f
@ -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()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user