def hlpr_instructions()

in src/helperscripts/neuronsetuphelper.py [0:0]


def hlpr_instructions(nr_setup, neuron_version):
    
    cmd_string = ''

    setup_mode=nr_setup.mode



    # look for conda environment for this framework version
    for fw_env in nr_setup.dlami_conda_env:
        if fw_env != nr_setup.framework:
            continue
        fw_ver_conda_env=nr_setup.dlami_conda_env[fw_env]
        for conda_env_fw_ver in fw_ver_conda_env:
            if (conda_env_fw_ver == nr_setup.fw_package_dict[nr_setup.fw_comp]['framework_version']):
                nr_setup.conda_env=nr_setup.dlami_conda_env[fw_env][conda_env_fw_ver][0]
                nr_setup.generic_conda_env=nr_setup.dlami_conda_env[fw_env][conda_env_fw_ver][1]
                break


    # look what runtime works with this framework version     
    fal_rtd=False
    fal_libnrt=False
    for fw in nr_setup.fal_supported_runtime:
        if fw != nr_setup.framework:
            continue
        if fw == nr_setup.framework:
            if (nr_setup.framework_version == None):
                fw_ver= nr_setup.releases_info[neuron_version].release_frameworks_main[nr_setup.framework]['framework_version']
                fal_version= nr_setup.releases_info[neuron_version].release_frameworks_main[nr_setup.framework]['version']
            else:
                fw_ver= nr_setup.releases_info[neuron_version].release_frameworks_all[nr_setup.framework_version]['framework_version']
                fal_version= nr_setup.releases_info[neuron_version].release_frameworks_all[nr_setup.framework_version]['version']
            fal_supported_rtd=nr_setup.fal_supported_runtime[fw][fw_ver]['neuron-rtd']
            fal_supported_libnrt=nr_setup.fal_supported_runtime[fw][fw_ver]['libnrt']            
            if (parse(fal_version) >= parse(fal_supported_rtd[0])) &  \
                (parse(fal_version) <= parse(fal_supported_rtd[1])):
                fal_rtd=True
            elif (parse(fal_version) >= parse(fal_supported_libnrt[0])) &  \
                (parse(fal_version) <= parse(fal_supported_libnrt[1])):
                fal_libnrt=True

    if nr_setup.conda_env == "None":
        dlami_ev_exists=False
    else:
        dlami_ev_exists=True

    #cmd_string += hlpr_print_config(nr_setup, neuron_version)

    if (nr_setup.framework_version==None):
        fw_package_dict= nr_setup.releases_info[neuron_version].release_frameworks_main
        fw_comp=nr_setup.framework
    else:
        fw_package_dict= nr_setup.releases_info[neuron_version].release_frameworks_all
        fw_comp=nr_setup.framework_version



    if (nr_setup.framework !=None): #if install or update
        # If we are not using DLAMI
        if (nr_setup.ami=='non-dlami') | \
            ((nr_setup.ami=='dlami') & \
                (
                (nr_setup.action == 'Update') | \
                (dlami_ev_exists==False) | \
                (nr_setup.is_latest_neuron==False)) \
                ):
         
           

            if (nr_setup.ami=='dlami') & (dlami_ev_exists==False):
                cmd_string += '\n'
                cmd_string += '# Note: There is no DLAMI Conda environment for this framework version'+ '\n'
                cmd_string += '#       Framework will be installed/updated inside a Python environment'+ '\n'


            if (setup_mode == 'develop') | (setup_mode == 'deploy'):
                if (nr_setup.action =='Install')&(nr_setup.ami!='dlami'):
                    # For First install, setup Neuron OS packagaes repo (yum or apt)
                    cmd_string += hlpr_os_packages_first_setup(nr_setup)

                # Always update to latest OS packages
                cmd_string += hlpr_os_packages_update(nr_setup)

                cmd_string += hlpr_os_comp_setup_cmd(nr_setup, neuron_version, comp='driver',optional=False,pkg=None)


                #FIXME Temporary check for MXNET 1.5 in maintenance mode
                if (neuron_version == "1.16.0") & (nr_setup.framework=="mxnet")&    \
                    (fw_package_dict[fw_comp]['framework_version']=="1.5.1"):
                    cmd_string += hlpr_os_comp_setup_cmd(nr_setup, neuron_version="1.15.2", comp='runtime-server',optional=False,pkg=None)
                elif (fal_rtd):
                    cmd_string += hlpr_os_comp_setup_cmd(nr_setup, neuron_version, comp='runtime-server',optional=False,pkg=None)

                #if mode = develop, install tools
                if (setup_mode == 'develop'):
                    cmd_string += hlpr_os_comp_setup_cmd(nr_setup, neuron_version, comp='tools',optional=False,pkg=None)
                    if (nr_setup.framework == 'tensorflow'):
                        cmd_string +=  hlpr_build_pip_command(nr_setup, neuron_version, component='tensorboard',include_compiler=False,optional=False)
            
                if (nr_setup.action =='Install'):
                    cmd_string += hlpr_os_export_path(nr_setup)

            if (nr_setup.ami=='non-dlami') | \
                ((nr_setup.ami=='dlami')&(nr_setup.generic_conda_env=="None")):

                if (nr_setup.action =='Install'):
                    # For first install , install python venv and activate a venv
                    cmd_string += hlpr_pip_install_create_python_venv(nr_setup)
                elif (nr_setup.action =='Update'):
                    # For nect times, activate the venv used for initial install
                    cmd_string += hlpr_pip_activate_python_venv(nr_setup)
            elif (nr_setup.ami=='dlami'):
                cmd_string += hlpr_framework_dlami_activate(nr_setup)
                
            # Setup Neuron pip packages
            cmd_string += hlpr_pip_repos_setup()
            
            # Now install framework
            if (setup_mode == 'deploy'):
                # do not install compiler when deploying
                cmd_string += hlpr_framework_compiler_setup(nr_setup, neuron_version,  include_compiler=False)
            else:
                # install compiler when mode = developer or mode = compile
                cmd_string += hlpr_framework_compiler_setup(nr_setup, neuron_version,  include_compiler=True)
        

            #if mode = deploy, install model server
            if (setup_mode != 'compile'):
                    if (nr_setup.framework == 'tensorflow'):
                        if (nr_setup.framework_version==None):
                            tf_package= nr_setup.releases_info[neuron_version].release_frameworks_main[nr_setup.framework]['package_name']
                        else:
                            tf_package= nr_setup.releases_info[neuron_version].release_frameworks_all[nr_setup.framework_version]['package_name']                         
                        cmd_string += hlpr_os_comp_setup_cmd(nr_setup, neuron_version, comp='tensorflow-model-server',optional=True,pkg= nr_setup.releases_info[neuron_version].release_tf_package_to_model_server_package[tf_package])


        # if running DLAMI
        elif (nr_setup.ami=='dlami'):
            if (nr_setup.action =='Install'):

                cmd_string += '\n'
                cmd_string += '# Neuron is pre-installed on Deep Learning AMI (DLAMI), latest DLAMI version may not include latest Neuron versions '+ '\n'
                cmd_string += '# To update to latest Neuron version, follow "Update to latest release" instruction on Neuron documentation'+ '\n'

                # WARNING: Exception
                # Starting Neuron 1.16.0 , new kernel is needed to work with Runtime 2.x (library mode)
                if (parse(neuron_version)>=parse('1.16.0')):
                    if (setup_mode == 'develop') | (setup_mode == 'deploy'):
                        cmd_string += hlpr_os_comp_setup_cmd(nr_setup, neuron_version, comp='driver',optional=False,pkg=None)

                #FIXME Temporary check for MXNET 1.5 in maintenance mode
                if (neuron_version == "1.16.0") & (nr_setup.framework=="mxnet")&    \
                    (fw_package_dict[fw_comp]['framework_version']=="1.5.1"):
                    cmd_string += hlpr_os_comp_setup_cmd(nr_setup, neuron_version="1.15.2", comp='runtime-server',optional=False,pkg=None)

                cmd_string += '\n'
                cmd_string += hlpr_framework_dlami_activate(nr_setup)


 
    return cmd_string