add nspawn detection and print_log

This commit is contained in:
JerryXiao 2019-04-11 16:32:39 +08:00
parent b1b6c3f0b0
commit 71a1a470cc
Signed by: Jerry
GPG key ID: 9D9CE43650FF2BAA
2 changed files with 43 additions and 2 deletions

View file

@ -39,6 +39,11 @@ os.chdir(abspath)
logger = logging.getLogger('buildbot') logger = logging.getLogger('buildbot')
configure_logger(logger, logfile='buildbot.log', rotate_size=1024*1024*10) configure_logger(logger, logfile='buildbot.log', rotate_size=1024*1024*10)
# refuse to run in systemd-nspawn
if 'systemd-nspawn' in bash('systemd-detect-virt || true'):
logger.error('Refused to run in systemd-nspawn.')
raise AssertionError('Refused to run in systemd-nspawn.')
REPO_ROOT = Path(PKGBUILD_DIR) REPO_ROOT = Path(PKGBUILD_DIR)
class Job: class Job:
@ -84,13 +89,15 @@ class jobsManager:
return ret return ret
def reset_dir(self, pkgdirname=None, all=False): def reset_dir(self, pkgdirname=None, all=False):
if all: if all:
logger.info('git checkout all: %s', bash(GIT_RESET_SUBDIR, cwd=REPO_ROOT)) logger.info('resetting %s', str(REPO_ROOT))
bash(GIT_RESET_SUBDIR, cwd=REPO_ROOT)
else: else:
if not pkgdirname: if not pkgdirname:
return False return False
cwd = REPO_ROOT / pkgdirname cwd = REPO_ROOT / pkgdirname
if cwd.exists(): if cwd.exists():
logger.info('git checkout: %s', bash(GIT_RESET_SUBDIR, cwd=cwd)) logger.info('resetting %s', str(cwd))
bash(GIT_RESET_SUBDIR, cwd=cwd)
for fpath in [f for f in cwd.iterdir()]: for fpath in [f for f in cwd.iterdir()]:
if fpath.is_dir() and \ if fpath.is_dir() and \
fpath.name in ('pkg', 'src'): fpath.name in ('pkg', 'src'):

View file

@ -39,6 +39,36 @@ if __name__ == '__main__':
import argparse import argparse
from utils import configure_logger from utils import configure_logger
configure_logger(logger) configure_logger(logger)
def print_log():
import os, re
abspath=os.path.abspath(__file__)
abspath=os.path.dirname(abspath)
os.chdir(abspath)
def is_debug_msg(msg, DEBUG):
if '- DEBUG -' in msg:
return True
elif re.match(r'[0-9]{4}-[0-9]{2}-[0-9]{2}.*', msg):
return False
else:
return DEBUG
with open('buildbot.log', 'r') as f:
DEBUG = False
lines = list()
lines += f.read().split('\n')
while len(lines) >= 100:
lines.pop(0)
while True:
nlines = f.read().split('\n')
if len(nlines) == 1 and nlines[0] == '':
continue
else:
lines += nlines
for line in lines:
DEBUG = is_debug_msg(line, DEBUG)
if not DEBUG:
print(line)
lines = list()
sleep(1)
try: try:
parser = argparse.ArgumentParser(description='Client for buildbot') parser = argparse.ArgumentParser(description='Client for buildbot')
parser.add_argument('--info', action='store_true', help='show buildbot info') parser.add_argument('--info', action='store_true', help='show buildbot info')
@ -46,6 +76,7 @@ if __name__ == '__main__':
parser.add_argument('--cleanall', action='store_true', help='checkout pkgbuilds') parser.add_argument('--cleanall', action='store_true', help='checkout pkgbuilds')
parser.add_argument('--clean', nargs='?', default=None, help='checkout pkgbuilds in one package') parser.add_argument('--clean', nargs='?', default=None, help='checkout pkgbuilds in one package')
parser.add_argument('--rebuild', nargs='?', default=None, help='rebuild a package with its dirname') parser.add_argument('--rebuild', nargs='?', default=None, help='rebuild a package with its dirname')
parser.add_argument('--log', action='store_true' , help='print log')
args = parser.parse_args() args = parser.parse_args()
if args.info: if args.info:
server=(MASTER_BIND_ADDRESS, MASTER_BIND_PASSWD) server=(MASTER_BIND_ADDRESS, MASTER_BIND_PASSWD)
@ -62,6 +93,9 @@ if __name__ == '__main__':
elif args.rebuild: elif args.rebuild:
server=(MASTER_BIND_ADDRESS, MASTER_BIND_PASSWD) server=(MASTER_BIND_ADDRESS, MASTER_BIND_PASSWD)
logger.info(run('rebuild_package', args=(args.rebuild,), kwargs={'clean': True}, server=server)) logger.info(run('rebuild_package', args=(args.rebuild,), kwargs={'clean': True}, server=server))
elif args.log:
logger.info('printing logs')
print_log()
else: else:
parser.error("Please choose an action") parser.error("Please choose an action")
except Exception: except Exception: