Make all the scripts Python3
This commit is contained in:
parent
ca8d3af8c7
commit
e98a4a3785
2
Makefile
2
Makefile
@ -177,7 +177,7 @@ kernel/symbols.o: ${KERNEL_ASMOBJS} ${KERNEL_OBJS} util/generate_symbols.py
|
||||
@-rm -f kernel/symbols.o
|
||||
@${BEG} "NM" "Generating symbol list..."
|
||||
@${KCC} -T kernel/link.ld ${CFLAGS} -nostdlib -o toaruos-kernel ${KERNEL_ASMOBJS} ${KERNEL_OBJS} -lgcc ${ERRORS}
|
||||
@${KNM} toaruos-kernel -g | python2 util/generate_symbols.py > kernel/symbols.S
|
||||
@${KNM} toaruos-kernel -g | util/generate_symbols.py > kernel/symbols.S
|
||||
@${END} "NM" "Generated symbol list."
|
||||
@${BEG} "AS" "kernel/symbols.S"
|
||||
@${KAS} ${ASFLAGS} kernel/symbols.S -o $@ ${ERRORS}
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python2
|
||||
# -*- coding: utf-8 -*-
|
||||
#!/usr/bin/env python3
|
||||
# coding: utf-8
|
||||
|
||||
import os
|
||||
import sys
|
||||
@ -85,11 +85,11 @@ class Classifier(object):
|
||||
"""Calculate include and library dependencies."""
|
||||
lines = []
|
||||
depends = []
|
||||
with open(self.filename) as f:
|
||||
with open(self.filename,'r') as f:
|
||||
lines = f.readlines()
|
||||
for l in lines:
|
||||
if l.startswith('#include'):
|
||||
depends.extend([k for k in self.dependency_hints.keys() if l.startswith('#include ' + k)])
|
||||
depends.extend([k for k in list(self.dependency_hints.keys()) if l.startswith('#include ' + k)])
|
||||
depends = self._calculate([], depends)
|
||||
depends = self._sort(depends)
|
||||
includes = []
|
||||
@ -116,7 +116,7 @@ def todep(name):
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) < 3:
|
||||
print "usage: util/auto-dep.py command filename"
|
||||
print("usage: util/auto-dep.py command filename")
|
||||
exit(1)
|
||||
command = sys.argv[1]
|
||||
filename = sys.argv[2]
|
||||
@ -124,11 +124,11 @@ if __name__ == "__main__":
|
||||
c = Classifier(filename)
|
||||
|
||||
if command == "--cflags":
|
||||
print " ".join([x for x in c.includes])
|
||||
print(" ".join([x for x in c.includes]))
|
||||
elif command == "--libs":
|
||||
print " ".join([x for x in c.libs])
|
||||
print(" ".join([x for x in c.libs]))
|
||||
elif command == "--deps":
|
||||
results = [todep(x) for x in c.libs]
|
||||
normal = [x[1] for x in results if not x[0]]
|
||||
order_only = [x[1] for x in results if x[0]]
|
||||
print " ".join(normal) + " | " + " ".join(order_only)
|
||||
print(" ".join(normal) + " | " + " ".join(order_only))
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python2
|
||||
#!/usr/bin/env python3
|
||||
|
||||
for i in range(256):
|
||||
print str(i) + "\t\x1b[48;5;" + str(i) + "m \x1b[0m"
|
||||
print(str(i) + "\t\x1b[48;5;" + str(i) + "m \x1b[0m")
|
||||
|
@ -1,40 +1,39 @@
|
||||
#!/usr/bin/env python2
|
||||
# coding: utf-8
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Generate a symbol table from nm output.
|
||||
Generate a symbol table from nm output.
|
||||
"""
|
||||
|
||||
import sys
|
||||
|
||||
# Write extern + type
|
||||
def extern(name):
|
||||
print ".extern %s" % (name)
|
||||
print ".type %s, @function" % (name)
|
||||
print ""
|
||||
print(".extern %s" % (name))
|
||||
print(".type %s, @function" % (name))
|
||||
print("")
|
||||
|
||||
# Write an entry
|
||||
def entry(name):
|
||||
print ".long %s" % (name)
|
||||
print ".asciz \"%s\"" % (name)
|
||||
print ""
|
||||
print(".long %s" % (name))
|
||||
print(".asciz \"%s\"" % (name))
|
||||
print("")
|
||||
|
||||
ignore = [ "abs", "kernel_symbols_start", "kernel_symbols_end" ]
|
||||
lines = [ x.strip().split(" ")[2] for x in sys.stdin.readlines() if x not in ignore ]
|
||||
|
||||
# Generate the assembly
|
||||
print ".section .symbols"
|
||||
print ""
|
||||
print(".section .symbols")
|
||||
print("")
|
||||
for name in lines:
|
||||
extern(name)
|
||||
|
||||
print ".global kernel_symbols_start"
|
||||
print "kernel_symbols_start:"
|
||||
print ""
|
||||
print(".global kernel_symbols_start")
|
||||
print("kernel_symbols_start:")
|
||||
print("")
|
||||
for name in lines:
|
||||
entry(name)
|
||||
|
||||
print ".global kernel_symbols_end"
|
||||
print "kernel_symbols_end:"
|
||||
print(".global kernel_symbols_end")
|
||||
print("kernel_symbols_end:")
|
||||
|
||||
|
||||
|
||||
|
11
util/mod_deps.py
Normal file → Executable file
11
util/mod_deps.py
Normal file → Executable file
@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python2
|
||||
#!/usr/bin/env python3
|
||||
# coding: utf-8
|
||||
"""
|
||||
Extract dependencies from kernel modules.
|
||||
@ -10,7 +10,8 @@ import subprocess
|
||||
|
||||
def processModule(path):
|
||||
p = subprocess.Popen(["i686-pc-toaru-nm",path,"-p"], stdout=subprocess.PIPE)
|
||||
symbols, errors = p.communicate()
|
||||
symbols, _ = p.communicate()
|
||||
symbols = symbols.decode('utf-8')
|
||||
name = [ x[2].replace("module_info_","") for x in [x.strip().split(" ") for x in symbols.split("\n") if len(x.strip().split(" ")) > 2] if x[1] == "D" and x[2].startswith("module_info_") ][0]
|
||||
dependencies = [ x[2].replace("_mod_dependency_","") for x in [x.strip().split(" ") for x in symbols.split("\n") if len(x.strip().split(" ")) > 2] if x[1] == "d" and x[2].startswith("_mod_dependency_") ]
|
||||
return path, name, dependencies
|
||||
@ -27,7 +28,7 @@ for module in os.listdir("hdd/mod"):
|
||||
|
||||
# Okay, now let's spit out the dependencies for our module.
|
||||
if len(sys.argv) < 2:
|
||||
print >>sys.stderr, "Expected a path to a module (from the root of the build tree), eg. hdd/mod/test.ko"
|
||||
print("Expected a path to a module (from the root of the build tree), eg. hdd/mod/test.ko", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
me = sys.argv[-1]
|
||||
@ -59,11 +60,11 @@ while set(satisfied) != set(depends):
|
||||
if len(sys.argv) > 2:
|
||||
for i in sys.argv[1:-1]:
|
||||
if i == '--print-deps':
|
||||
print name, "→", " ".join(["\033[31m{mod}\033[m".format(mod=x) if not x in deps else x for x in satisfied])
|
||||
print(name, "→", " ".join(["\033[31m{mod}\033[m".format(mod=x) if not x in deps else x for x in satisfied]))
|
||||
|
||||
if i == '--print-files':
|
||||
for i in satisfied:
|
||||
print modules[i][0], "(dep-of-dep)" if i not in deps else ""
|
||||
print(modules[i][0], "(dep-of-dep)" if i not in deps else "")
|
||||
|
||||
|
||||
p = subprocess.Popen(["i686-pc-toaru-ld","-T","kernel/link.ld","-o","/dev/null","toaruos-kernel",]+[modules[x][0] for x in satisfied]+[me])
|
||||
|
14
util/package-mods.py
Normal file → Executable file
14
util/package-mods.py
Normal file → Executable file
@ -1,5 +1,4 @@
|
||||
#!/usr/bin/env python2
|
||||
# -*- coding: utf-8 -*-
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import struct
|
||||
@ -22,17 +21,16 @@ mods_to_pack = [
|
||||
with open('modpack.kop','wb') as pack:
|
||||
for mod in mods_to_pack:
|
||||
with open('hdd/mod/{mod}.ko'.format(mod=mod),'rb') as m:
|
||||
print "Writing", mod
|
||||
pack.write("PACK")
|
||||
pack.write(b"PACK")
|
||||
size = os.stat(m.name).st_size
|
||||
extra = 0
|
||||
while (size + extra) % 4096 != 0:
|
||||
extra += 1
|
||||
pack.write(struct.pack("I", size+extra))
|
||||
pack.write('\0' * (4096-8))
|
||||
pack.write(b'\0' * (4096-8))
|
||||
pack.write(m.read(size))
|
||||
pack.write('\0' * extra)
|
||||
pack.write("PACK")
|
||||
pack.write('\0\0\0\0')
|
||||
pack.write(b'\0' * extra)
|
||||
pack.write(b"PACK")
|
||||
pack.write(b'\0\0\0\0')
|
||||
|
||||
|
||||
|
@ -1,77 +0,0 @@
|
||||
#!/usr/bin/env python2
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
|
||||
class TestRunner(object):
|
||||
|
||||
def __init__(self):
|
||||
self.passes = 0
|
||||
self.fails = 0
|
||||
|
||||
def run(self):
|
||||
self.qemu = subprocess.Popen(['make','-s','headless'], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||
|
||||
time.sleep(2)
|
||||
|
||||
self.qemu.stdin.write("shell\n")
|
||||
self.qemu.stdin.write("core-tests\n");
|
||||
|
||||
line = ""
|
||||
while self.qemu.poll() == None:
|
||||
charin = self.qemu.stdout.read(1)
|
||||
if charin == '\n':
|
||||
self.parse_line(line)
|
||||
line = ""
|
||||
else:
|
||||
line += charin
|
||||
|
||||
print "\033[1mTest completed. \033[1;32m%d passes\033[0m, \033[1;31m%d failures\033[0m." % (self.passes, self.fails)
|
||||
|
||||
if self.fails > 0:
|
||||
sys.exit(1)
|
||||
|
||||
def parse_line(self, line):
|
||||
if line.startswith("core-tests :"):
|
||||
output, result = self.process_line(line)
|
||||
print output
|
||||
if result > 0:
|
||||
self.qemu.kill()
|
||||
else:
|
||||
self.log_line(line)
|
||||
|
||||
def process_line(self, line):
|
||||
data = line.strip().split(" : ")
|
||||
text = ""
|
||||
color = ""
|
||||
result = 0
|
||||
if data[1] == "FAIL":
|
||||
color = "1;31"
|
||||
text = "fail"
|
||||
self.fails += 1
|
||||
elif data[1] == "WARN":
|
||||
color = "1;33"
|
||||
text = "warn"
|
||||
elif data[1] == "PASS":
|
||||
color = "1;32"
|
||||
text = "pass"
|
||||
self.passes += 1
|
||||
elif data[1] == "INFO":
|
||||
color = "1;34"
|
||||
text = "info"
|
||||
elif data[1] == "DONE":
|
||||
color = "1;36"
|
||||
text = "Done!"
|
||||
result = 1
|
||||
elif data[1] == "FATAL":
|
||||
color = "1;37;41"
|
||||
text = "FATAL ERROR ECOUNTERED"
|
||||
result = 2
|
||||
return "\033[%sm%s\033[0m %s" % (color, text, data[2]), result
|
||||
|
||||
def log_line(self, line):
|
||||
print >>sys.stderr, line.strip()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
TestRunner().run()
|
Loading…
Reference in New Issue
Block a user