def main(): info("Available profiles:") for i in glob("${BUILD_PROFILES}/*"): dsl = load_file(e("${i}/config.pyd"), os.environ) if dsl is None: continue profile = dsl["profile"] selected = e("${PROFILE}") == profile["name"] info('* {0}{1}', profile["name"], " [selected]" if selected else "") info('\tDescription: {0}', profile["description"]) info('\tOwner: {0}', profile["owner"]) info('\tStatus: {0}', profile["status"])
def main(): info("Available profiles:") for i in glob("${BUILD_PROFILES}/*"): dsl = load_file(e("${i}/config.pyd"), os.environ) if dsl is None: continue profile = dsl["profile"] selected = e("${PROFILE}") == profile["name"] info('* {0}{1}', profile["name"], " [selected]" if selected else "") info('\tDescription: {0}', profile["description"]) info('\tOwner: {0}', profile["owner"]) info('\tStatus: {0}', profile["status"])
# 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 json from dsl import load_file from utils import e, sh, sh_str, readfile, setfile, template, setup_env, info dsl = load_file('${BUILD_CONFIG}/release.pyd', os.environ) url = dsl.url def stage_release(): sh('mkdir -p ${RELEASE_STAGEDIR}/${BUILD_ARCH_SHORT}') for ext in dsl.formats: path = e('${OBJDIR}/${NAME}.${ext}') if os.path.exists(path): info('Moving installation disk ISO to release directory') sh('mv ${path} ${RELEASE_STAGEDIR}/${BUILD_ARCH_SHORT}/') sh('mv ${path}.sha256 ${RELEASE_STAGEDIR}/${BUILD_ARCH_SHORT}/') info('ISO path: ${{RELEASE_STAGEDIR}}/${{BUILD_ARCH_SHORT}}') def get_aux_files_desc():
# 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, 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'
# 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, 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',
def setup_env(): signal.signal(signal.SIGINT, interrupt) dsl = load_file('${BUILD_CONFIG}/env.pyd', os.environ) for k, v in dsl.items(): if k.isupper(): os.environ[k] = v
import os import signal import sys import string from dsl import load_file, load_profile_config from utils import ( sh, sh_str, sh_spawn, env, e, glob, pathjoin, setfile, template, debug, error, on_abort, info ) makejobs = 1 jailname = None poudriere_proc = None config = load_profile_config() installer_ports = load_file('${BUILD_CONFIG}/ports-installer.pyd', os.environ) jailconf = load_file('${PROFILE_ROOT}/jail.pyd', os.environ) portslist = e('${POUDRIERE_ROOT}/etc/ports.conf') portoptions = e('${POUDRIERE_ROOT}/etc/poudriere.d/options') def calculate_make_jobs(): global makejobs jobs = sh_str('sysctl -n kern.smp.cpus') if not jobs: makejobs = 2 makejobs = int(jobs) + 1 debug('Using {0} make jobs', makejobs)
# 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 tempfile, shutil from dsl import load_file from utils import e, sh, import_function, env, info dsl = load_file('${BUILD_CONFIG}/upgrade.pyd', os.environ) create_aux_files = import_function('create-release-distribution', 'create_aux_files') def stage_upgrade(): sh('rm -rf ${UPGRADE_STAGEDIR}') sh('mkdir -p ${UPGRADE_STAGEDIR}') sh('cp -R ${OBJDIR}/packages/Packages ${UPGRADE_STAGEDIR}/') # If an update validation script is given, copy that if os.path.exists(e('${PROFILE_ROOT}/ValidateUpdate')): sh('cp ${PROFILE_ROOT}/ValidateUpdate ${UPGRADE_STAGEDIR}/ValidateUpdate' ) if os.path.exists(e('${PROFILE_ROOT}/ValidateInstall')): sh('cp ${PROFILE_ROOT}/ValidateUpdate ${UPGRADE_STAGEDIR}/ValidateInstall'
def setup_env(): signal.signal(signal.SIGINT, interrupt) dsl = load_file('${BUILD_CONFIG}/env.pyd', os.environ) for k, v in dsl.items(): if k.isupper(): os.environ[k] = v
# POSSIBILITY OF SUCH DAMAGE. # ##################################################################### import os import signal import sys import string from dsl import load_file, load_profile_config from utils import sh, sh_str, sh_spawn, env, e, glob, objdir, pathjoin, setfile, setup_env, template, debug, error, on_abort, info makejobs = 1 jailname = None poudriere_proc = None config = load_profile_config() installer_ports = load_file('${BUILD_CONFIG}/ports-installer.pyd', os.environ) jailconf = load_file('${PROFILE_ROOT}/jail.pyd', os.environ) portslist = e('${POUDRIERE_ROOT}/etc/ports.conf') portoptions = e('${POUDRIERE_ROOT}/etc/poudriere.d/options') def calculate_make_jobs(): global makejobs jobs = sh_str('sysctl -n kern.smp.cpus') if not jobs: makejobs = 2 makejobs = 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 import json from dsl import load_file from utils import e, sh, sh_str, readfile, setfile, template, info dsl = load_file('${BUILD_CONFIG}/release.pyd', os.environ) url = dsl.url def stage_release(): sh('mkdir -p ${RELEASE_STAGEDIR}/${BUILD_ARCH_SHORT}') for ext in dsl.formats: path = e('${OBJDIR}/${NAME}.${ext}') if os.path.exists(path): info('Moving installation disk ISO to release directory') sh('mv ${path} ${RELEASE_STAGEDIR}/${BUILD_ARCH_SHORT}/') sh('mv ${path}.sha256 ${RELEASE_STAGEDIR}/${BUILD_ARCH_SHORT}/') info('ISO path: ${{RELEASE_STAGEDIR}}/${{BUILD_ARCH_SHORT}}') def get_aux_files_desc():
# 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 from utils import e, sh, setup_env, import_function, env dsl = load_file('${BUILD_CONFIG}/upgrade.pyd', os.environ) create_aux_files = import_function('create-release-distribution', 'create_aux_files') def stage_upgrade(): sh('rm -rf ${UPGRADE_STAGEDIR}') sh('mkdir -p ${UPGRADE_STAGEDIR}') sh('cp -R ${OBJDIR}/packages/Packages ${UPGRADE_STAGEDIR}/') # If RESTART is given, save that if env('RESTART'): sh('echo ${RESTART} > ${UPGRADE_STAGEDIR}/RESTART') # And if REBOOT is given, put that in FORCEREBOOT if env('REBOOT'): sh('echo ${REBOOT} > ${UPGRADE_STAGEDIR}/FORCEREBOOT') sh('rm -f ${BE_ROOT}/release/LATEST')
# 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') sh('${venvdir}/bin/pip install -U ${BE_ROOT}/py-freenas.utils')