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}')
# 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")
# 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')
# 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')