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()
Exemple #2
0
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)
Exemple #4
0
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} .')
Exemple #5
0
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()
Exemple #6
0
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)
Exemple #7
0
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))
Exemple #8
0
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
    )
Exemple #9
0
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}')
Exemple #12
0
# 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',
Exemple #14
0
# 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',
Exemple #15
0
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)):
Exemple #16
0
# 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]
Exemple #19
0
# 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',
Exemple #21
0
# 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')
Exemple #22
0
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)
Exemple #23
0
# 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:
Exemple #24
0
# 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}')
Exemple #25
0
# 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}')
Exemple #27
0
# 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)
Exemple #29
0
# 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:
Exemple #30
0
# 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:
Exemple #32
0
# 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')