<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def genesis_block_load(module_path=None):
 """ Make sure the genesis block is good to go. Load and instantiate it. """

    if os.environ.get('BLOCKSTACK_GENESIS_BLOCK_PATH') is not None:
        log.warning('Using envar-given genesis block')
        module_path = os.environ['BLOCKSTACK_GENESIS_BLOCK_PATH']

    genesis_block = None
    genesis_block_stages = None

    if module_path:
        log.debug('Load genesis block from {}'.format(module_path))
        genesis_block_path = module_path
        try:
            genesis_block_mod = imp.load_source('genesis_block', genesis_block_path)
            genesis_block = genesis_block_mod.GENESIS_BLOCK
            genesis_block_stages = genesis_block_mod.GENESIS_BLOCK_STAGES

            if BLOCKSTACK_TEST:
                print ''
                print 'genesis block'
                print json.dumps(genesis_block, indent=4, sort_keys=True)
                print ''

        except Exception as e:
            log.exception(e)
            log.fatal('Failed to load genesis block')
            os.abort()

    else:
        log.debug('Load built-in genesis block')
        genesis_block = get_genesis_block()
        genesis_block_stages = get_genesis_block_stages()

    try:
        for stage in genesis_block_stages:
            jsonschema.validate(GENESIS_BLOCK_SCHEMA, stage)

        jsonschema.validate(GENESIS_BLOCK_SCHEMA, genesis_block)

        set_genesis_block(genesis_block)
        set_genesis_block_stages(genesis_block_stages)

        log.debug('Genesis block has {} stages'.format(len(genesis_block_stages)))
        for i, stage in enumerate(genesis_block_stages):
            log.debug('Stage {} has {} row(s)'.format(i+1, len(stage['rows'])))

    except Exception as e:
        log.fatal("Invalid genesis block")
        os.abort()

    return True