def create_make_conf_build(): conf = open(makeconfbuild, 'w') for k, v in config['make_conf_build'].items(): conf.write('{0}={1}\n'.format(k, v)) conf.close() conf = open(objdir('make-jail.conf'), 'w') for k, v in config['make_conf_build'].items(): conf.write('{0}={1}\n'.format(k, v)) for k, v in config['make_conf_jail'].items(): conf.write('{0}={1}\n'.format(k, v)) conf.close() conf = open(objdir('make-run.conf'), 'w') for k, v in config['make_conf_build'].items(): conf.write('{0}={1}\n'.format(k, v)) for k, v in config['make_conf_run'].items(): conf.write('{0}={1}\n'.format(k, v)) conf.close() conf = open(objdir('make-boot.conf'), 'w') for k, v in config['make_conf_build'].items(): conf.write('{0}={1}\n'.format(k, v)) for k, v in config['make_conf_run'].items(): conf.write('{0}={1}\n'.format(k, v)) for k, v in config['make_conf_boot'].items(): conf.write('{0}={1}\n'.format(k, v)) conf.close()
def installworld(destdir, worldlog, distriblog, conf="build"): info('Installing world in {0}', destdir) info('Log file: {0}', worldlog) makeconf = objdir("make-${conf}.conf") sh( "env MAKEOBJDIRPREFIX=${OBJDIR}", "make", "-C ${TRUEOS_ROOT}", "installworld", "DESTDIR=${destdir}", "__MAKE_CONF=${makeconf}", log=worldlog ) info('Creating distribution in {0}', destdir) info('Log file: {0}', distriblog) sh( "env MAKEOBJDIRPREFIX=${OBJDIR}", "make", "-C ${TRUEOS_ROOT}", "distribution", "DESTDIR=${destdir}", "__MAKE_CONF=${makeconf}", log=distriblog )
def setup_vm(): global vm_proc, termserv_proc info('Starting up VM') sh('bhyveload -m ${RAM_SIZE} -d ${OBJDIR}/test-root.ufs ${VM_NAME}') vm_proc = sh_spawn( 'bhyve -m ${RAM_SIZE} -A -H -P', '-s 0:0,hostbridge', '-s 1:0,virtio-net,${tapdev}', '-s 2:0,ahci-hd,${OBJDIR}/test-root.ufs', '-s 3:0,ahci-hd,${OBJDIR}/test-swap.bin', '-s 31,lpc -l com1,${CONSOLE_MASTER}', '${VM_NAME}' ) pid = vm_proc.pid logfile = objdir(e('logs/bhyve.${pid}.log')) info('Starting telnet server on port {0}', e('${TELNET_PORT}')) info('Console log file is {0}', logfile) termserv_proc = sh_spawn( 'python', '${BUILD_TOOLS}/terminal-server.py', '-l ${logfile}', '-c ${CONSOLE_SLAVE}', '-p ${TELNET_PORT}' ) on_abort(shutdown_vm)
def installkernel(kconf, destdir, log, kodir=None, modules=None, conf="build"): info('Installing kernel in {0}', log) info('Log file: {0}', log) if modules is None: modules = config['kernel_modules'] if kodir is None: kodir = "/boot/kernel" makeconf = objdir("make-${conf}.conf") modules = ' '.join(modules) sh( "env MAKEOBJDIRPREFIX=${OBJDIR}", "make", "-C ${OS_ROOT}", "installkernel", "DESTDIR=${destdir}", "KERNCONF={0}".format(kconf), "KODIR={0}".format(kodir), "__MAKE_CONF=${makeconf}", "MODULES_OVERRIDE='{0}'".format(modules), log=log ) # Saving the SDK sources if e('${SDK}') == "yes": info('SDK: Saving FreeBSD sources to src.txz...') sh('tar cJf ${BE_ROOT}/src.txz --exclude .git -C ${OS_ROOT} .')
def create_make_conf_build(): conf = open(makeconfbuild, 'w') for k, v in config['make_conf_build'].items(): conf.write('{0}={1}\n'.format(k, v)) conf.close() conf = open(objdir('make-run.conf'), 'w') for k, v in config['make_conf_build'].items(): conf.write('{0}={1}\n'.format(k, v)) for k, v in config['make_conf_run'].items(): conf.write('{0}={1}\n'.format(k, v)) conf.close() conf = open(objdir('make-boot.conf'), 'w') for k, v in config['make_conf_build'].items(): conf.write('{0}={1}\n'.format(k, v)) for k, v in config['make_conf_run'].items(): conf.write('{0}={1}\n'.format(k, v)) for k, v in config['make_conf_boot'].items(): conf.write('{0}={1}\n'.format(k, v)) conf.close()
def installkernel(kconf, destdir, log, kodir=None, modules=None, conf="build"): info('Installing kernel in {0}', log) info('Log file: {0}', log) if modules is None: modules = config['kernel_modules'] if kodir is None: kodir = "/boot/kernel" makeconf = objdir("make-${conf}.conf") modules = ' '.join(modules) sh("env MAKEOBJDIRPREFIX=${OBJDIR}", "make", "-C ${OS_ROOT}", "installkernel", "DESTDIR=${destdir}", "KERNCONF={0}".format(kconf), "KODIR={0}".format(kodir), "__MAKE_CONF=${makeconf}", "MODULES_OVERRIDE='{0}'".format(modules), log=log)
def main(): if e('${PLAYGROUND}'): info('Type RETURN to kill VM') input() vm_proc.kill() return tests_total = len(glob('${TESTS_ROOT}/os/*.py')) tests_success = [] tests_failure = [] for t in sorted(glob('${TESTS_ROOT}/os/*.py')): testname = os.path.splitext(os.path.basename(t))[0] logfile = objdir('logs/test-${testname}.log') info('Running test {0} (logfile {1})', testname, logfile) mod = imp.load_source(testname, t) success, reason = mod.run(lambda x: ssh(x, logfile)) # Give VM a while if panic happened time.sleep(2) if vm_proc.returncode is not None: # VM crashed! error('Test {0} caused VM crash', testname) if success is None: error('Test {0} returned aborted test schedule: {1}', testname, reason) elif success: tests_success.append(testname) else: info('Failed: {0}', reason) tests_failure.append(testname) vm_proc.kill() info('{0} total tests', tests_total) info('{0} successes', len(tests_success)) info('{0} failures', len(tests_failure)) if len(tests_failure) > 0: info('Failed tests: {0}', ', '.join(tests_failure))
def installkernel(kconf, destdir, log, kodir=None, modules=None, conf="build"): info('Installing kernel in {0}', log) info('Log file: {0}', log) if modules is None: modules = config['kernel_modules'] if kodir is None: kodir = "/boot/kernel" makeconf = objdir("make-${conf}.conf") modules = ' '.join(modules) sh( "env MAKEOBJDIRPREFIX=${OBJDIR}", "make", "-C ${TRUEOS_ROOT}", "installkernel", "DESTDIR=${destdir}", "KERNCONF={0}".format(kconf), "KODIR={0}".format(kodir), "__MAKE_CONF=${makeconf}", "MODULES_OVERRIDE='{0}'".format(modules), log=log )
def setup_vm(): global vm_proc, termserv_proc info('Starting up VM') sh('bhyveload -m ${RAM_SIZE} -d ${OBJDIR}/test-root.ufs ${VM_NAME}') vm_proc = sh_spawn('bhyve -m ${RAM_SIZE} -A -H -P', '-s 0:0,hostbridge', '-s 1:0,virtio-net,${tapdev}', '-s 2:0,ahci-hd,${OBJDIR}/test-root.ufs', '-s 3:0,ahci-hd,${OBJDIR}/test-swap.bin', '-s 31,lpc -l com1,${CONSOLE_MASTER}', '${VM_NAME}') pid = vm_proc.pid logfile = objdir(e('logs/bhyve.${pid}.log')) info('Starting telnet server on port {0}', e('${TELNET_PORT}')) info('Console log file is {0}', logfile) termserv_proc = sh_spawn('python', '${BUILD_TOOLS}/terminal-server.py', '-l ${logfile}', '-c ${CONSOLE_SLAVE}', '-p ${TELNET_PORT}') on_abort(shutdown_vm)
def main(): if e('${PLAYGROUND}'): info('Type RETURN to kill VM') input() vm_proc.kill() return tests_total = len(glob('${TESTS_ROOT}/trueos/*.py')) tests_success = [] tests_failure = [] for t in sorted(glob('${TESTS_ROOT}/trueos/*.py')): testname = os.path.splitext(os.path.basename(t))[0] logfile = objdir('logs/test-${testname}.log') info('Running test {0} (logfile {1})', testname, logfile) mod = imp.load_source(testname, t) success, reason = mod.run(lambda x: ssh(x, logfile)) # Give VM a while if panic happened time.sleep(2) if vm_proc.returncode is not None: # VM crashed! error('Test {0} caused VM crash', testname) if success is None: error('Test {0} returned aborted test schedule: {1}', testname, reason) elif success: tests_success.append(testname) else: info('Failed: {0}', reason) tests_failure.append(testname) vm_proc.kill() info('{0} total tests', tests_total) info('{0} successes', len(tests_success)) info('{0} failures', len(tests_failure)) if len(tests_failure) > 0: info('Failed tests: {0}', ', '.join(tests_failure))
def stage_non_installed_ports(): """ If a port was given the `install` key and it was set to False, then the port was not installed but we still should save the associated *.txz file in the final release directory. """ config = load_profile_config() glob_pattern = '/*.txz' non_installed_ports = [] for i in config.ports: if isinstance(i, dict) and not i.get('install', True): if 'package' in i: non_installed_ports.append(i.package) else: non_installed_ports.append(i.name) if non_installed_ports: sh('mkdir -p ${RELEASE_STAGEDIR}/${BUILD_ARCH_SHORT}/${NON_INSTALLED_DIR}') pkgdir = subprocess.run( ['find', objdir('ports/data/packages'), '-name', 'All', '-type', 'd'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, ) if pkgdir.stdout: pkgdir = pkgdir.stdout.decode().strip() for i in non_installed_ports: # port name will have the directory it resides in # so make sure to remove it if it's there if '/' in i: i = i.split('/')[1] for t in glob(pkgdir + glob_pattern): pkg = t.split('/')[-1] if pkg.startswith(i): sh('cp ${t} ${RELEASE_STAGEDIR}/${BUILD_ARCH_SHORT}/${NON_INSTALLED_DIR}')
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os import sys import glob from dsl import load_profile_config from utils import (sh, objdir, info, error, e, on_abort, chroot, get_port_names, readfile) config = load_profile_config() logfile = objdir('logs/pkg-install') def mount_packages(): on_abort(umount_packages) jailname = readfile(e('${OBJDIR}/jailname')) sh('mkdir -p ${WORLD_DESTDIR}/usr/ports/packages') sh('mount -t nullfs ${OBJDIR}/ports/data/packages/${jailname}-p ${WORLD_DESTDIR}/usr/ports/packages' ) def fetch_binary_packages(): if e('${SKIP_PACKAGES_FETCH}'): return for i in config.binary_packages:
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os import subprocess import imp import threading import time from utils import sh, sh_str, sh_spawn, e, glob, objdir, info, debug, error, load_file, import_function, on_abort, appendfile load_file('${BUILD_CONFIG}/tests/bhyve.pyd', os.environ) installworldlog = objdir('logs/test-installworld') distributionlog = objdir('logs/test-distribution') buildkernellog = objdir('logs/test-buildkernel') installkernellog = objdir('logs/test-installkernel') buildkernel = import_function('build-os', 'buildkernel') installworld = import_function('build-os', 'installworld') installkernel = import_function('build-os', 'installkernel') vm_proc = None termserv_proc = None vm_wait_thread = None current_test = None shutdown = False tapdev = None ssh_args = ['ssh',
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os import subprocess import imp import threading import time from utils import sh, sh_str, sh_spawn, e, glob, objdir, info, debug, error, load_file, import_function, on_abort, appendfile load_file('${BUILD_CONFIG}/tests/bhyve.pyd', os.environ) installworldlog = objdir('logs/test-installworld') distributionlog = objdir('logs/test-distribution') buildkernellog = objdir('logs/test-buildkernel') installkernellog = objdir('logs/test-installkernel') buildkernel = import_function('build-os', 'buildkernel') installworld = import_function('build-os', 'installworld') installkernel = import_function('build-os', 'installkernel') vm_proc = None termserv_proc = None vm_wait_thread = None current_test = None shutdown = False tapdev = None ssh_args = [ 'ssh', '-o', 'LogLevel=QUIET', '-o', 'ServerAliveInterval=10', '-o',
import os import json import time import argparse import shutil import subprocess from utils import e, sh, objdir, info from xml.etree.ElementTree import Element, SubElement, tostring, parse from distutils.core import run_setup from xml.dom import minidom EXCLUDES = [ 'os', 'objs', 'ports', 'release', 'release.build.log', 'repo-manifest' ] venvdir = objdir('tests/venv') output_root = objdir('test-output') class Main(object): def __init__(self): self.test_suites = [] self.output_path = None self.excluded = ['os', 'objs', 'ports', 'release'] def find_tests(self): info('Looking for test manifests in ${{BE_ROOT}}') for dir in os.listdir(e('${BE_ROOT}')): if dir not in self.excluded: for root, _, files in os.walk( os.path.join(e('${BE_ROOT}'), dir)):
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os import sys from utils import sh, e, setup_env, objdir, info, import_function installworldlog = objdir('logs/jail-installworld') distributionlog = objdir('logs/jail-distribution') installkernellog = objdir('logs/jail-installkernel') installworld = import_function('build-os', 'installworld') installkernel = import_function('build-os', 'installkernel') if __name__ == '__main__': if e('${SKIP_INSTALL_JAIL}'): info('Skipping jail installation, as instructed by setting SKIP_INSTALL_JAIL') sys.exit(0) if os.path.isdir(e('${WORLD_DESTDIR}')): sh('chflags -fR 0 ${JAIL_DESTDIR}') sh('rm -rf ${JAIL_DESTDIR}')
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os import sys import glob from utils import env, e, setup_env, sh, sh_str, info, debug, error, walk, objdir logfile = objdir('logs/build-gui') def cleandirs(): sh('mkdir -p ${GUI_STAGEDIR}') sh('mkdir -p ${GUI_DESTDIR}') sh('rm -rf ${GUI_STAGEDIR}/*') sh('rm -rf ${GUI_DESTDIR}/*') def copy(): sh('cp -a ${BE_ROOT}/gui/ ${GUI_STAGEDIR}/') def install(): node_modules = e('${GUI_STAGEDIR}/node_modules')
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os import errno import shutil from utils import sh, e, info, objdir, sha256, is_elf output = objdir('${NAME}.debug.txz') def main(): sh('rm -rf ${DEBUG_WORLD}') sh('mkdir -p ${DEBUG_WORLD}') info('Saving debug information in ${{DEBUG_WORLD}}') for root, dirs, files in os.walk(e('${WORLD_DESTDIR}/')): for name in files: filename = os.path.join(root, name) relpath = os.path.relpath(filename, e('${WORLD_DESTDIR}')) destpath = os.path.join(e('${DEBUG_WORLD}'), relpath) ext = os.path.splitext(name)[1]
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os import sys from dsl import load_profile_config from utils import sh, sh_str, env, e, setup_env, objdir, info, debug, error, pathjoin config = load_profile_config() arch = env('TARGET_ARCH', 'amd64') makeconfbuild = objdir('make-build.conf') kernconf = objdir(e('${KERNCONF}')) kernlog = objdir('logs/buildkernel') worldlog = objdir('logs/buildworld') makejobs = None def calculate_make_jobs(): global makejobs jobs = sh_str('sysctl -n kern.smp.cpus') if not jobs: makejobs = 2 makejobs = 2 * int(jobs) + 1 debug('Using {0} make jobs', makejobs)
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os from dsl import load_file, load_profile_config from utils import sh, info, objdir, e, chroot, glob, readfile, setfile, template, sha256, import_function, get_port_names, on_abort, is_elf ports = load_file('${BUILD_CONFIG}/ports-installer.pyd', os.environ) installworld = import_function('build-os', 'installworld') installkernel = import_function('build-os', 'installkernel') installworldlog = objdir('logs/iso-installworld') installkernellog = objdir('logs/iso-installkernel') distributionlog = objdir('logs/iso-distribution') sysinstalllog = objdir('logs/iso-sysinstall') imgfile = objdir('base.ufs') output = objdir('${NAME}.iso') purge_dirs = ['/bin', '/sbin', '/usr/bin', '/usr/sbin'] files_to_preserve = [ '/bin/sleep', '/usr/bin/dialog', '/usr/bin/dirname', '/usr/bin/awk', '/usr/bin/cut', '/usr/bin/cmp', '/usr/bin/find', '/usr/bin/grep', '/usr/bin/logger', '/usr/bin/mkfifo', '/usr/bin/mktemp', '/usr/bin/sed', '/usr/bin/sort', '/usr/bin/scp', '/usr/bin/sftp', '/usr/bin/ssh', '/usr/bin/ssh-keygen', '/usr/bin/tr', '/usr/bin/uname', '/usr/bin/xargs', '/usr/sbin/diskinfo', '/usr/sbin/sshd', '/usr/sbin/swapinfo',
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # import os from dsl import load_file, load_profile_config from utils import sh, sh_str, sh_spawn, info, objdir, e load_profile_config() load_file(e('${BUILD_ROOT}/tests/freenas/config.pyd'), os.environ) testdir = objdir('tests') venvdir = objdir('tests/venv') def cleanup(): sh('bhyvectl --destroy --vm=${VM_NAME}', nofail=True) def setup_venv(): sh('virtualenv ${venvdir}') sh('${venvdir}/bin/pip install -U cython six paramiko nose2') sh('${venvdir}/bin/pip install -U ${BE_ROOT}/py-bsd') sh('${venvdir}/bin/pip install -U ${BE_ROOT}/py-netif') sh('${venvdir}/bin/pip install -U ${BE_ROOT}/py-dhcp') sh('${venvdir}/bin/pip install -U ${BE_ROOT}/py-freenas.utils') sh('${venvdir}/bin/pip install -U ${BE_ROOT}/dispatcher-client/python')
def main(): for i in dsl['early_customize_tasks']: logfile = objdir('logs/custom-${i}') sh('${BUILD_ROOT}/build/customize/${i}.py ${WORLD_DESTDIR}', log=logfile)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os import time import hashlib from dsl import load_profile_config from utils import sh, e, objdir, info, env config = load_profile_config() tooldir = objdir('pkgtools') pkgdir = objdir('packages') pkgtoolslog = objdir('logs/build-pkgtools') pkgversion = '' sequence = '' validators = [] def read_repo_manifest(): global pkgversion global sequence versions = [] f = open(e("${BE_ROOT}/repo-manifest")) o = open(e("${BE_ROOT}/objs/world/etc/repo-manifest"), "w") for i in f:
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import sys import os from utils import sh, e, objdir, info, import_function installworldlog = objdir('logs/dest-installworld') distributionlog = objdir('logs/dest-distribution') installkernellog = objdir('logs/dest-installkernel') installkerneldebuglog = objdir('logs/dest-installkerneldebug') installworld = import_function('build-os', 'installworld') installkernel = import_function('build-os', 'installkernel') if __name__ == '__main__': if e('${SKIP_INSTALL_WORLD}'): info('Skipping world installation, as instructed by setting SKIP_INSTALL_WORLD') sys.exit(0) if os.path.isdir(e('${WORLD_DESTDIR}')): sh('chflags -fR 0 ${WORLD_DESTDIR}') sh('rm -rf ${WORLD_DESTDIR}')
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os import sys from dsl import load_profile_config from utils import sh, sh_str, env, e, setup_env, objdir, info, debug, error, pathjoin config = load_profile_config() arch = env('TARGET_ARCH', 'amd64') makeconfbuild = objdir('make-build.conf') kernconf = objdir(e('${KERNCONF}')) kernconf_debug = objdir(e('${KERNCONF}-DEBUG')) kernlog = objdir('logs/buildkernel') kerndebuglog = objdir('logs/buildkernel-debug') worldlog = objdir('logs/buildworld') makejobs = None def calculate_make_jobs(): global makejobs jobs = sh_str('sysctl -n kern.smp.cpus') if not jobs: makejobs = 2
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os import sys from utils import sh, e, objdir, info, import_function installworldlog = objdir('logs/jail-installworld') distributionlog = objdir('logs/jail-distribution') installkernellog = objdir('logs/jail-installkernel') installworld = import_function('build-os', 'installworld') installkernel = import_function('build-os', 'installkernel') if __name__ == '__main__': if e('${SKIP_INSTALL_JAIL}'): info('Skipping jail installation, as instructed by setting SKIP_INSTALL_JAIL') sys.exit(0) if os.path.isdir(e('${WORLD_DESTDIR}')): sh('chflags -fR 0 ${JAIL_DESTDIR}') sh('rm -rf ${JAIL_DESTDIR}')
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os from dsl import load_file, load_profile_config from utils import sh, info, objdir, e, chroot, glob, readfile, setfile, template, sha256, import_function, get_port_names, on_abort ports = load_file('${BUILD_CONFIG}/ports-installer.pyd', os.environ) installworld = import_function('build-os', 'installworld') installkernel = import_function('build-os', 'installkernel') installworldlog = objdir('logs/iso-installworld') installkernellog = objdir('logs/iso-installkernel') distributionlog = objdir('logs/iso-distribution') sysinstalllog = objdir('logs/iso-sysinstall') imgfile = objdir('base.ufs') output = objdir('${NAME}.iso') purge_dirs = [ '/bin', '/sbin', '/usr/bin', '/usr/sbin' ] files_to_preserve = [
# ##################################################################### import os import sys import glob from dsl import load_profile_config from utils import ( sh, objdir, info, error, e, on_abort, chroot, get_port_names, readfile ) config = load_profile_config() logfile = objdir('logs/pkg-install') def mount_packages(): on_abort(umount_packages) jailname = readfile(e('${OBJDIR}/jailname')) sh('mkdir -p ${WORLD_DESTDIR}/usr/ports/packages') sh('mount -t nullfs ${OBJDIR}/ports/packages/${jailname}-p ${WORLD_DESTDIR}/usr/ports/packages') def fetch_binary_packages(): if e('${SKIP_PACKAGES_FETCH}'): return for i in config.binary_packages: _, name = os.path.split(i)
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os import errno import shutil from utils import sh, e, info, objdir, sha256, is_elf output = objdir('${NAME}.debug.txz') def main(): sh('rm -rf ${DEBUG_ROOT}') sh('mkdir -p ${DEBUG_ROOT}') info('Saving debug information in ${{DEBUG_ROOT}}') destpath = os.path.join(e('${DEBUG_ROOT}'), "usr/lib"); os.makedirs(destpath) shutil.move(os.path.join(e('${WORLD_DESTDIR}'), "usr/lib/debug"), destpath) for root, dirs, files in os.walk(e('${WORLD_DESTDIR}/')): for name in files:
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os import sys from dsl import load_profile_config from utils import sh, sh_str, env, e, objdir, info, debug, pathjoin config = load_profile_config() arch = env('TARGET_ARCH', 'amd64') makeconfbuild = objdir('make-build.conf') kernconf = objdir(e('${KERNCONF}')) kernconf_debug = objdir(e('${KERNCONF}-DEBUG')) kernlog = objdir('logs/buildkernel') kerndebuglog = objdir('logs/buildkernel-debug') worldlog = objdir('logs/buildworld') makejobs = None def calculate_make_jobs(): global makejobs jobs = sh_str('sysctl -n kern.smp.cpus') if not jobs: makejobs = 2
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import time import hashlib from dsl import load_profile_config from utils import sh, e, objdir, info config = load_profile_config() tooldir = objdir('pkgtools') pkgdir = objdir('packages') pkgtoolslog = objdir('logs/build-pkgtools') pkgversion = '' sequence = '' def read_repo_manifest(): global pkgversion global sequence versions = [] f = open(e("${BE_ROOT}/repo-manifest")) o = open(e("${BE_ROOT}/objs/world/etc/repo-manifest"), "w") for i in f:
# POSSIBILITY OF SUCH DAMAGE. # import os import ipaddress import subprocess import threading import time from dhcp.server import Server from dhcp.lease import Lease from dsl import load_file, load_profile_config from utils import sh, sh_str, sh_spawn, info, objdir, e load_profile_config() load_file(e('${BUILD_ROOT}/tests/freenas/config.pyd'), os.environ) destdir = objdir('tests') venvdir = objdir('tests/venv') isopath = objdir('${NAME}.iso') tapdev = None dhcp_server = None ready = threading.Event() def cleanup(): sh('bhyvectl --destroy --vm=${VM_NAME}', nofail=True) def setup_files(): sh('mkdir -p ${destdir}') sh('truncate -s 8G ${destdir}/boot.img') sh('truncate -s 20G ${destdir}/hd1.img')