aboutsummaryrefslogtreecommitdiff
path: root/scripts/loop.py
blob: 83633ffcf9bb62952d439df93fd0017423a22150 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/bin/python3
import os
import sys
import subprocess
import signal
from threading import Thread

from conf import conf
import initialize
import phase
import solution
import kernel
from exceptions import MissingFile
import iteration
import boot

def step():
	phs = phase.get()
	if phs == 0:
		try:
			os.mkdir(conf.build_folder)
		except FileExistsError:
			pass
		phase.set(1)
	elif phs == 1:
		phase.message(1)
		initialize.parse_kconfig()
		initialize.gen_requred()
		iteration.reset()
		phase.set(2)
	elif phs == 2:
		phase.message(2)
		phase.set(3)
	elif phs == 3:
		phase.message(3)
		solution.generate()
		iteration.inc()
		phase.set(4)
	elif phs == 4:
		phase.message(4)
		phase.set(5)
	elif phs == 5:
		phase.message(5)
		solution.apply()
		phase.set(6)
	elif phs == 6:
		phase.message(6)
		phase.set(7)
	elif phs == 7:
		phase.message(7)
		kernel.config()
		phase.set(8)
	elif phs == 8:
		phase.message(8)
		phase.set(9)
	elif phs == 9:
		phase.message(9)
		kernel.make()
		phase.set(10)
	elif phs == 10:
		phase.message(10)
		phase.set(11)
	elif phs == 11:
		phase.message(11)
		boot.boot()
		phase.set(12)
	elif phs == 12:
		phase.message(12)
		phase.set(2)

class mainThread(Thread):
	def __init__(self, name):
		Thread.__init__(self, name=name)
		self.term = False
	def run(self):
		while not self.term:
			step()
	
def loop_term():
	global thr
	thr.term = True

def sigterm_handler(_signo, _stack_frame):
	loop_term()

def loop():
	global thr
	thr = mainThread("thred")
	thr.start()
	try:
		thr.join()
	except KeyboardInterrupt:
		loop_term()

#################################################################################

if __name__ == '__main__':
	signal.signal(signal.SIGTERM, sigterm_handler)
	loop()