72 lines
2.4 KiB
Python
Executable File
72 lines
2.4 KiB
Python
Executable File
#!/bin/env python3
|
|
|
|
import argparse
|
|
import host
|
|
import prep
|
|
import bchroot
|
|
import build
|
|
import datetime
|
|
import bSSL
|
|
import ipxe
|
|
import bsync
|
|
import bGPG
|
|
import os
|
|
|
|
|
|
def bdisk(args):
|
|
# we also need to figure out how to implement "mentos" (old bdisk) like functionality, letting us reuse an
|
|
# existing chroot install if possible to save time for future builds.
|
|
# if not, though, it's no big deal.
|
|
if os.getuid() != 0:
|
|
exit('{0}: ERROR: BDisk *must* be run as the root user or with sudo!'.format(datetime.datetime.now()))
|
|
print('{0}: Starting.'.format(datetime.datetime.now()))
|
|
conf = host.parseConfig(host.getConfig(conf_file = args['buildini']))[1]
|
|
prep.dirChk(conf)
|
|
conf['gpgobj'] = bGPG.genGPG(conf)
|
|
prep.buildChroot(conf, keep = False)
|
|
prep.prepChroot(conf)
|
|
arch = conf['build']['arch']
|
|
bGPG.killStaleAgent(conf)
|
|
for a in arch:
|
|
bchroot.chroot(conf['build']['chrootdir'] + '/root.' + a, 'bdisk.square-r00t.net')
|
|
bchroot.chrootUnmount(conf['build']['chrootdir'] + '/root.' + a)
|
|
prep.postChroot(conf)
|
|
bchroot.chrootTrim(conf['build'])
|
|
build.genImg(conf)
|
|
build.genUEFI(conf['build'], conf['bdisk'])
|
|
fulliso = build.genISO(conf)
|
|
bGPG.signIMG(fulliso['Main']['file'], conf)
|
|
build.displayStats(fulliso)
|
|
if conf['build']['ipxe']:
|
|
bSSL.sslPKI(conf)
|
|
ipxe.buildIPXE(conf)
|
|
iso = ipxe.genISO(conf)
|
|
if iso:
|
|
for x in iso.keys():
|
|
if x != 'name':
|
|
path = iso[x]['file']
|
|
bGPG.signIMG(path, conf)
|
|
build.displayStats(iso)
|
|
bsync.http(conf)
|
|
bsync.tftp(conf)
|
|
bsync.git(conf)
|
|
bsync.rsync(conf)
|
|
print('{0}: Finish.'.format(datetime.datetime.now()))
|
|
|
|
def parseArgs():
|
|
args = argparse.ArgumentParser(description = 'BDisk - a tool for building live/rescue media.',
|
|
epilog = 'brent s. || 2017 || https://bdisk.square-r00t.net')
|
|
args.add_argument('buildini',
|
|
metavar = '/path/to/build.ini',
|
|
default = '/etc/bdisk/build.ini',
|
|
nargs = '?',
|
|
help = 'The full/absolute path to the build.ini to use for this run. The default is /etc/bdisk/build.ini, but see https://bdisk.square-r00t.net/#the_code_build_ini_code_file.')
|
|
return(args)
|
|
|
|
def main():
|
|
args = vars(parseArgs().parse_args())
|
|
bdisk(args)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|