checkin so i can checkout RO elsewhere
This commit is contained in:
parent
b626fcc8be
commit
e94fe963b9
20
bdisk/__main__.py
Executable file
20
bdisk/__main__.py
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
import host
|
||||||
|
import prep
|
||||||
|
import bchroot
|
||||||
|
|
||||||
|
# we need to:
|
||||||
|
# 1.) import the config- this gives us info about things like build paths, etc. host.parseConfig(host.getConfig()) should do this
|
||||||
|
# 2.) prep.dirChk
|
||||||
|
# 3.) prep.downloadTarball
|
||||||
|
# 4.) prep.unpackTarball
|
||||||
|
# 5.) prep.buildChroot
|
||||||
|
# 6.) prep.prepChroot
|
||||||
|
# 7.) prep.chrootCmd (TODO)- this should run the <chroot>/root/pre-build.sh script
|
||||||
|
# 7.5) ....figure out a way to get those dirs to *un*mount... and only mount in 7. if they're not currently mounted.
|
||||||
|
# 8.) build.chrootClean (TODO) see jenny_craig in old bdisk. i can *probably* do this within the chroot for the most part as part of pre-build.sh
|
||||||
|
# 9.) build.genImg (TODO)- build the squashed image, etc. see will_it_blend in old bdisk
|
||||||
|
# 10.) build.genUEFI (TODO)- build the uefi binary/bootloading. see stuffy in old bdisk
|
||||||
|
# 11.) build.genISO (TODO)- build the .iso file (full boot). see yo_dj in old bdisk
|
||||||
|
#
|
||||||
|
# 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.
|
@ -10,6 +10,7 @@ import sys
|
|||||||
import psutil
|
import psutil
|
||||||
#from pychroot.base import Chroot
|
#from pychroot.base import Chroot
|
||||||
import pychroot
|
import pychroot
|
||||||
|
import subprocess
|
||||||
|
|
||||||
#class mountpoints(argparse.Action):
|
#class mountpoints(argparse.Action):
|
||||||
#
|
#
|
||||||
@ -59,3 +60,9 @@ def chroot(chrootdir, chroot_hostname, cmd = '/root/pre-build.sh'):
|
|||||||
import os
|
import os
|
||||||
os.system(cmd)
|
os.system(cmd)
|
||||||
chroot.cleanup()
|
chroot.cleanup()
|
||||||
|
return(chrootdir, cmnts)
|
||||||
|
|
||||||
|
#def chrootUnmount(chrootdir, cmnts):
|
||||||
|
def chrootUnmount(chrootdir):
|
||||||
|
# TODO: https://github.com/pkgcore/pychroot/issues/22 try to do this more pythonically. then we can remove subprocess
|
||||||
|
subprocess.call(['umount', '-lR', chrootdir])
|
@ -37,7 +37,8 @@ def getConfig(conf_file='/etc/bdisk/build.ini'):
|
|||||||
else:
|
else:
|
||||||
conf = conf_file
|
conf = conf_file
|
||||||
if not conf:
|
if not conf:
|
||||||
# okay, so let's check for distributed/"blank" ini's then since we can't seem to find one.
|
# okay, so let's check for distributed/"blank" ini's
|
||||||
|
# since we can't seem to find one.
|
||||||
dist_conf_paths = [re.sub('(build\.ini)','dist.\\1', s) for s in default_conf_paths]
|
dist_conf_paths = [re.sub('(build\.ini)','dist.\\1', s) for s in default_conf_paths]
|
||||||
for q in dist_conf_paths:
|
for q in dist_conf_paths:
|
||||||
if os.path.isfile(q):
|
if os.path.isfile(q):
|
||||||
@ -53,8 +54,8 @@ def parseConfig(conf):
|
|||||||
config_dict = {s:dict(config.items(s)) for s in config.sections()}
|
config_dict = {s:dict(config.items(s)) for s in config.sections()}
|
||||||
# Convert the booleans to pythonic booleans in the dict...
|
# Convert the booleans to pythonic booleans in the dict...
|
||||||
config_dict['bdisk']['user'] = config['bdisk'].getboolean('user')
|
config_dict['bdisk']['user'] = config['bdisk'].getboolean('user')
|
||||||
conifg_dict['build']['i_am_a_racecar'] = config['build'].getboolean('i_am_a_racecar')
|
config_dict['build']['i_am_a_racecar'] = config['build'].getboolean('i_am_a_racecar')
|
||||||
conifg_dict['build']['multiarch'] = config['build'].getboolean('multiarch')
|
config_dict['build']['multiarch'] = config['build'].getboolean('multiarch')
|
||||||
for i in ('http', 'tftp', 'rsync', 'git'):
|
for i in ('http', 'tftp', 'rsync', 'git'):
|
||||||
config_dict['sync'][i] = config['sync'].getboolean(i)
|
config_dict['sync'][i] = config['sync'].getboolean(i)
|
||||||
config_dict['ipxe']['iso'] = config['ipxe'].getboolean('iso')
|
config_dict['ipxe']['iso'] = config['ipxe'].getboolean('iso')
|
||||||
@ -76,7 +77,7 @@ def parseConfig(conf):
|
|||||||
exit(('ERROR: {0} is not a valid host and cannot be used for rsyncing.' +
|
exit(('ERROR: {0} is not a valid host and cannot be used for rsyncing.' +
|
||||||
'Check your configuration.').format(config_dict['rsync']['host']))
|
'Check your configuration.').format(config_dict['rsync']['host']))
|
||||||
# Validate the URI.
|
# Validate the URI.
|
||||||
if config_dict['sync']['ipxe']:
|
if config_dict['build']['ipxe']:
|
||||||
# so this won't validate e.g. custom LAN domains (https://pxeserver/bdisk.php). TODO.
|
# so this won't validate e.g. custom LAN domains (https://pxeserver/bdisk.php). TODO.
|
||||||
if not validators.url(config_dict['ipxe']['uri']):
|
if not validators.url(config_dict['ipxe']['uri']):
|
||||||
if not re.match('^https?://localhost(/.*)?$'):
|
if not re.match('^https?://localhost(/.*)?$'):
|
||||||
@ -105,6 +106,4 @@ def parseConfig(conf):
|
|||||||
if not os.path.isfile(config_dict['ipxe']['ssl_ca']):
|
if not os.path.isfile(config_dict['ipxe']['ssl_ca']):
|
||||||
exit(('ERROR: {0} is not an existing file. Check your' +
|
exit(('ERROR: {0} is not an existing file. Check your' +
|
||||||
'configuration.').format(config_dict['ipxe']['ssl_ca']))
|
'configuration.').format(config_dict['ipxe']['ssl_ca']))
|
||||||
|
|
||||||
|
|
||||||
return(config, config_dict)
|
return(config, config_dict)
|
||||||
|
@ -17,6 +17,15 @@ def archChk(arch):
|
|||||||
else:
|
else:
|
||||||
exit("{0} is not a valid architecture. Must be one of i686 or x86_64.".format(arch))
|
exit("{0} is not a valid architecture. Must be one of i686 or x86_64.".format(arch))
|
||||||
|
|
||||||
|
def dirChk(config_dict):
|
||||||
|
# Make dirs if they don't exist
|
||||||
|
for d in ('archboot', 'isodir', 'mountpt', 'srcdir', 'tempdir'):
|
||||||
|
os.makedirs(config_dict['build'][d], exists_ok = True)
|
||||||
|
# Make dirs for sync staging if we need to
|
||||||
|
for x in ('http', 'tftp'):
|
||||||
|
if config_dict['sync'][x]:
|
||||||
|
os.makedirs(config_dict[x]['path'], exist_ok = True)
|
||||||
|
|
||||||
def downloadTarball(arch, dlpath):
|
def downloadTarball(arch, dlpath):
|
||||||
# arch - should be i686 or x86_64
|
# arch - should be i686 or x86_64
|
||||||
# returns path/filename e.g. /some/path/to/file.tar.gz
|
# returns path/filename e.g. /some/path/to/file.tar.gz
|
||||||
|
@ -87,7 +87,7 @@ root_password =
|
|||||||
; yes|no
|
; yes|no
|
||||||
; true|false
|
; true|false
|
||||||
; 1|0
|
; 1|0
|
||||||
; If it is undefined/commented out, it is assumed to be no.
|
; If it is undefined, it is assumed to be no.
|
||||||
user = yes
|
user = yes
|
||||||
|
|
||||||
|
|
||||||
@ -167,7 +167,7 @@ mountpt = /mnt/${bdisk:uxname}
|
|||||||
; yes|no
|
; yes|no
|
||||||
; true|false
|
; true|false
|
||||||
; 1|0
|
; 1|0
|
||||||
; If it is undefined/commented out, it is assumed to be no.
|
; If it is undefined, it is assumed to be no.
|
||||||
multiarch = yes
|
multiarch = yes
|
||||||
|
|
||||||
; Would you like to enable iPXE functionality?
|
; Would you like to enable iPXE functionality?
|
||||||
@ -177,7 +177,7 @@ multiarch = yes
|
|||||||
; yes|no
|
; yes|no
|
||||||
; true|false
|
; true|false
|
||||||
; 1|0
|
; 1|0
|
||||||
; If it is undefined/commented out, it is assumed to be no.
|
; If it is undefined, it is assumed to be no.
|
||||||
ipxe = yes
|
ipxe = yes
|
||||||
|
|
||||||
; This option should only be enabled if you are on a fairly
|
; This option should only be enabled if you are on a fairly
|
||||||
@ -190,7 +190,7 @@ ipxe = yes
|
|||||||
; yes|no
|
; yes|no
|
||||||
; true|false
|
; true|false
|
||||||
; 1|0
|
; 1|0
|
||||||
; If it is undefined/commented out, it is assumed to be no.
|
; If it is undefined, it is assumed to be no.
|
||||||
i_am_a_racecar = yes
|
i_am_a_racecar = yes
|
||||||
|
|
||||||
|
|
||||||
@ -208,7 +208,7 @@ i_am_a_racecar = yes
|
|||||||
; yes|no
|
; yes|no
|
||||||
; true|false
|
; true|false
|
||||||
; 1|0
|
; 1|0
|
||||||
; If it is undefined/commented out, it is assumed to be no.
|
; If it is undefined, it is assumed to be no.
|
||||||
http = yes
|
http = yes
|
||||||
|
|
||||||
; Should we generate/prepare TFTP files?
|
; Should we generate/prepare TFTP files?
|
||||||
@ -219,7 +219,7 @@ http = yes
|
|||||||
; yes|no
|
; yes|no
|
||||||
; true|false
|
; true|false
|
||||||
; 1|0
|
; 1|0
|
||||||
; If it is undefined/commented out, it is assumed to be no.
|
; If it is undefined, it is assumed to be no.
|
||||||
tftp = yes
|
tftp = yes
|
||||||
|
|
||||||
; Enable automatic Git pushing for any changes done to the
|
; Enable automatic Git pushing for any changes done to the
|
||||||
@ -230,7 +230,7 @@ tftp = yes
|
|||||||
; yes|no
|
; yes|no
|
||||||
; true|false
|
; true|false
|
||||||
; 1|0
|
; 1|0
|
||||||
; If it is undefined/commented out, it is assumed to be no.
|
; If it is undefined, it is assumed to be no.
|
||||||
git = yes
|
git = yes
|
||||||
|
|
||||||
; Enable rsync pushing for the ISO (and other files, if
|
; Enable rsync pushing for the ISO (and other files, if
|
||||||
@ -298,7 +298,7 @@ group = root
|
|||||||
; yes|no
|
; yes|no
|
||||||
; true|false
|
; true|false
|
||||||
; 1|0
|
; 1|0
|
||||||
; If it is undefined/commented out, it is assumed to be no.
|
; If it is undefined, it is assumed to be no.
|
||||||
iso = yes
|
iso = yes
|
||||||
|
|
||||||
; Build a "mini-USB" image? Same concept as the ISO file
|
; Build a "mini-USB" image? Same concept as the ISO file
|
||||||
|
Loading…
Reference in New Issue
Block a user