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}')
Exemplo n.º 2
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 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")
Exemplo n.º 3
0
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# 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.
#
#####################################################################

from dsl import load_profile_config
from utils import sh, objdir, info


dsl = load_profile_config()


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)


if __name__ == '__main__':
    info('Running early customization tasks')
    main()
    info('Early customization done')
Exemplo n.º 4
0
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
# 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')