updates for invoke

This commit is contained in:
Stefan Liebl 2025-01-23 18:13:58 +01:00
parent 88222b2dbe
commit 4368a334cc

View File

@ -12,6 +12,7 @@ command -nargs=1 -complete=dir DigiFalc call s:ProjectSet('digifalc', '<args>')
command -nargs=1 -complete=dir ServoBoard call s:ProjectSet('servoboard', '<args>') command -nargs=1 -complete=dir ServoBoard call s:ProjectSet('servoboard', '<args>')
command -nargs=1 -complete=dir DlMotor call s:ProjectSet('dl-motor', '<args>') command -nargs=1 -complete=dir DlMotor call s:ProjectSet('dl-motor', '<args>')
command -nargs=1 -complete=dir Pfd call s:ProjectSet('pfd', '<args>') command -nargs=1 -complete=dir Pfd call s:ProjectSet('pfd', '<args>')
command -nargs=1 -complete=dir Tiny call s:ProjectSet('tiny', '<args>')
command -nargs=1 -complete=dir OperationPanelF1 call s:ProjectSet('operation-panel-f1', '<args>') command -nargs=1 -complete=dir OperationPanelF1 call s:ProjectSet('operation-panel-f1', '<args>')
command -nargs=1 -complete=dir OperationPanelF4 call s:ProjectSet('operation-panel-f4', '<args>') command -nargs=1 -complete=dir OperationPanelF4 call s:ProjectSet('operation-panel-f4', '<args>')
command -nargs=1 -complete=dir DeCoF call s:ProjectSet('decof', '<args>') command -nargs=1 -complete=dir DeCoF call s:ProjectSet('decof', '<args>')
@ -22,6 +23,7 @@ let s:path_orig = $PATH
set titlestring= set titlestring=
function! s:ProjectSet(project_type, project_base_dir) function! s:ProjectSet(project_type, project_base_dir)
execute "DirenvExport"
let g:project_type = a:project_type let g:project_type = a:project_type
let g:jenkins_url = 'http://jenkins.toptica.com' let g:jenkins_url = 'http://jenkins.toptica.com'
@ -72,6 +74,9 @@ function! s:ProjectSet(project_type, project_base_dir)
let g:ProjectSrcDirRel = 'src' let g:ProjectSrcDirRel = 'src'
let s:ProjectSrcDir = s:ProjectBaseDir.'/'.g:ProjectSrcDirRel let s:ProjectSrcDir = s:ProjectBaseDir.'/'.g:ProjectSrcDirRel
" Direnv
let $DIRENV_DIR = s:ProjectBaseDir
function! g:Compiler_version() function! g:Compiler_version()
if exists('g:ProjectBuildDir') if exists('g:ProjectBuildDir')
let cmakefile = g:ProjectBuildDir . '/CMakeCache.txt' let cmakefile = g:ProjectBuildDir . '/CMakeCache.txt'
@ -92,11 +97,15 @@ function! s:ProjectSet(project_type, project_base_dir)
execute 'cd '.s:ProjectSrcDir execute 'cd '.s:ProjectSrcDir
execute 'set path-=./**' execute 'set path-=./**'
execute 'set path+=' . s:ProjectSrcDir.'/**' execute 'set path+=' . s:ProjectSrcDir.'/**'
" execute 'set path+=' . g:ProjectBuildDir.'/**'
let s:invoke_options = '' " used for --project=... let s:invoke_options = '' " used for --project=...
if (g:project_type == 'dlcpro-new') || (g:project_type == 'dlcpro') if (count(['pfd', 'tiny'], g:project_type) > 0)
let g:ProjectBuildDir = s:ProjectSrcDir.'/.build/target/firmware/Debug'
let g:DebugRemote = v:true
let g:termdebugger = 'arm-none-eabi-gdb'
let s:gdb_connect_script = g:ProjectBuildDir.'/gdbinit'
elseif (count(['dlcpro', 'dlcpro-new'], g:project_type) > 0)
let s:invoke_options = ' --project='.g:project_type let s:invoke_options = ' --project='.g:project_type
set wildignore-=**/firmware/src/device-control/** set wildignore-=**/firmware/src/device-control/**
set wildignore+=**/shg-firmware/** set wildignore+=**/shg-firmware/**
@ -104,12 +113,18 @@ function! s:ProjectSet(project_type, project_base_dir)
let g:DeviceIP = 'dlc_pro__040083' let g:DeviceIP = 'dlc_pro__040083'
let g:DebugRemote = v:true let g:DebugRemote = v:true
let g:ProjectBuildDir = s:ProjectSrcDir.'/.build/'.g:project_type let g:ProjectBuildDir = s:ProjectSrcDir.'/.build/'.g:project_type
if (g:project_type == 'dlcpro-new')
let s:firware_file_name = 'DLCpro-archive-SSW7.fw'
else
let s:firware_file_name = 'DLCpro-archive.fw'
endif
" if (g:project_type == 'dlcpro-new') " if (g:project_type == 'dlcpro-new')
let g:termdebugger = 'arm-v7a-linux-gnueabihf-gdb' " FIXME: get from ??? let g:termdebugger = 'arm-v7a-linux-gnueabihf-gdb' " FIXME: get from ???
" else " else
" let g:termdebugger = 'arm-cortexa8-linux-gnueabi-gdb' " FIXME: get from ??? " let g:termdebugger = 'arm-cortexa8-linux-gnueabi-gdb' " FIXME: get from ???
" endif " endif
let s:gdb_connect_script = g:ProjectBuildDir.'/gdb-connect.txt' let s:gdb_connect_script = g:ProjectBuildDir.'/gdbinit'
command! DlcProGuiStart execute("!~/dlcpro/pc-gui/start-gui&")
elseif ((g:project_type == 'dlcpro-tui') || (g:project_type == 'dlcpro-tui-simulator')) elseif ((g:project_type == 'dlcpro-tui') || (g:project_type == 'dlcpro-tui-simulator'))
let s:Program = '/user-interface/src/user-interface' let s:Program = '/user-interface/src/user-interface'
let s:Elffile = s:Program let s:Elffile = s:Program
@ -151,11 +166,18 @@ function! s:ProjectSet(project_type, project_base_dir)
let s:Elffile = s:Program let s:Elffile = s:Program
let g:termdebugger = 'gdb' let g:termdebugger = 'gdb'
let g:DebugRemote = v:false let g:DebugRemote = v:false
command! DlcProGuiStart execute("!~/dlcpro/pc-gui/start-gui&")
elseif (g:project_type == 'topmode') elseif (g:project_type == 'topmode')
let g:ProjectBuildDir = s:ProjectSrcDir.'/.build/'
let g:DeviceIP = 'topmode_stefan' let g:DeviceIP = 'topmode_stefan'
let g:DebugRemote = v:true let g:DebugRemote = v:true
let g:termdebugger = 'arm-v7a-linux-gnueabihf-gdb' " FIXME: get from ???
let s:gdb_connect_script = g:ProjectBuildDir.'/gdbinit'
let s:firware_file_name = 'TopMode-CHARM-Control-1.5.4-dev.fw'
command! TopmodeGuiStart execute("!~/topmode/pc-gui/start-gui&")
elseif (g:project_type == 'topmode-gui') elseif (g:project_type == 'topmode-gui')
let g:DebugRemote = v:false let g:DebugRemote = v:false
command! TopmodeGuiStart execute("!~/topmode/pc-gui/start-gui&")
elseif (g:project_type == 'digifalc') elseif (g:project_type == 'digifalc')
let s:Program = '/digifalc-image.bin' let s:Program = '/digifalc-image.bin'
let s:Elffile = '/application/digifalc.elf' let s:Elffile = '/application/digifalc.elf'
@ -171,13 +193,6 @@ function! s:ProjectSet(project_type, project_base_dir)
let s:Elffile = '/application/dl-motor.elf' let s:Elffile = '/application/dl-motor.elf'
let g:DebugRemote = v:true let g:DebugRemote = v:true
let g:termdebugger = 'arm-none-eabi-gdb' let g:termdebugger = 'arm-none-eabi-gdb'
elseif (g:project_type == 'pfd')
let g:ProjectBuildDir = s:ProjectSrcDir.'/.build/target/firmware/Debug'
let s:Program = '/pfd-firmware.bin'
let s:Elffile = '/pfd-firmware.elf'
let g:DebugRemote = v:true
let g:termdebugger = 'arm-none-eabi-gdb'
let s:gdb_connect_script = g:ProjectBuildDir.'/gdb-connect.txt'
elseif (g:project_type == 'operation-panel-f1') elseif (g:project_type == 'operation-panel-f1')
let g:stm32_target = 'STM32F10X' let g:stm32_target = 'STM32F10X'
let s:Program = '/firmware/operation_panel_'.g:stm32_target.'.bin' let s:Program = '/firmware/operation_panel_'.g:stm32_target.'.bin'
@ -297,23 +312,26 @@ function! s:Make(args, async_mode)
let l:makeprg = s:invoke.' -e' let l:makeprg = s:invoke.' -e'
let l:args = a:args let l:args = a:args
if l:args == '' if l:args == ''
let l:args = 'build' " default let l:args = 'build' " needed for --project
endif endif
let task = split(l:args)[0] let task = split(l:args)[0]
let options = system(s:invoke.' --complete -- '.task.' -') let options = system(s:invoke.' --complete -- '.task.' -')
" Add --project if necessary " Add --project if necessary
" if '--project' =~ options && '--project' !~ l:args
if options =~ '--project' && '--project' !~ l:args if options =~ '--project' && '--project' !~ l:args
let l:args .= ' --project='.g:project_type let l:args .= ' --project='.g:project_type
endif endif
" Add --device-ip if necessary " Add --device-ip if necessary
" if '--device-ip' =~ options && '--device-ip' !~ l:args
if options =~ '--device-ip' && '--device-ip' !~ l:args if options =~ '--device-ip' && '--device-ip' !~ l:args
let l:args .= ' --device-ip='.g:DeviceIP let l:args .= ' --device-ip='.g:DeviceIP
endif endif
" Add --config=Debug " Add --build-type=Debug
if options =~ '--config' && '--config' !~ l:args " if '--build-type' =~ options && '--build-type' !~ l:args
let l:args .= ' --config=Debug' if options =~ '--build-type' && '--build-type' !~ l:args
let l:args .= ' --build-type=Debug'
endif endif
let &makeprg = l:makeprg let &makeprg = l:makeprg
@ -390,47 +408,78 @@ endfunction
" ================ " ================
" Regression Tests " Regression Tests
" ================ " ================
" function! g:DlcproRegtestCmd(arguments)
" return s:DlcproRegtestCmd('', '', '0', '1', '', '--capture=no', a:arguments)
" endfunction
" function! g:DlcproRegtestDlProCmd(arguments)
" return s:DlcproRegtestCmd('dlc_pro_proto_050003', 'elab-dlcpro2', '2', '1', 'DLpro', '', a:arguments)
" endfunction
" function! g:DlcproRegtestTaProCmd(arguments)
" return s:DlcproRegtestCmd('dlc_pro_045396', 'elab-dlcpro2', '3', '1', 'TApro', '-m "not usb and not usbstick"', a:arguments)
" endfunction
" function! g:DlcproRegtestCtlCmd(arguments)
" return s:DlcproRegtestCmd('dlc_pro__040120', 'elab-dlcpro2', '1', '1', 'CTL', '-m "not usb and not usbstick"', a:arguments)
" endfunction
" function! g:DlcproRegtestDualDlCmd(arguments)
" return s:DlcproRegtestCmd('dlc_pro_041299', 'elab-dlcpro2', '4', '2', 'DLpro', '-m "not usb and not usbstick"', a:arguments)
" endfunction
" function! g:DlcproRegtestDualDl1Cmd(arguments)
" return s:DlcproRegtestCmd('dlc_pro_041299', 'elab-dlcpro2', '4', '1', 'DLpro', '-m "not usb and not usbstick"', a:arguments)
" endfunction
" function! g:DlcproRegtestShgProCmd(arguments)
" return s:DlcproRegtestCmd('dlc_pro_041355', 'elab-dlcpro2', '7', '1', 'TA-SHGpro', '-m "not usb and not usbstick"', a:arguments)
" endfunction
command -nargs=1 -complete=file DlcproRegtest call s:DlcproRegtest('<args>') command -nargs=1 -complete=file DlcproRegtest call s:DlcproRegtest(g:DeviceIP, 'DL-CBCpro', g:DlcproRegtest_marks, '<args>')
command -nargs=? -complete=file DlcproRegtestDL call s:DlcproRegtest('dl', 'DLpro', '', '<args>')
command -nargs=? -complete=file DlcproRegtestCTL call s:DlcproRegtest('ctl', 'CTL', '', '<args>')
command -nargs=? -complete=file DlcproRegtestSHG call s:DlcproRegtest('shg', 'TA-SHGpro', '', '<args>')
command -nargs=? -complete=file DlcproRegtestDual call s:DlcproRegtest('dual-dl', '', '', '<args>')
command -nargs=? -complete=file DlcproRegtestQuad call s:DlcproRegtest('quad-dl', 'DLpro', '', '<args>')
let g:DlcproRegtest_fast_restart = 1 let g:DlcproRegtest_fast_restart = 1
let g:DlcproRegtest_smoke = 1
let g:DlcproRegtest_fw_update = 0
let g:DlcproRegtest_marks = 'usb, usbstick, si, si1, servo_control, eom, cavity, cell_spectroscopy, falc, pfd, smc' let g:DlcproRegtest_marks = 'usb, usbstick, si, si1, servo_control, eom, cavity, cell_spectroscopy, falc, pfd, smc'
function! s:DlcproRegtest(test_cmd) function! s:DlcproRegtest(device_ip, laser1_type, marks, tests)
execute "wa" execute "wa"
let regtest_cmd = s:invoke let regtest_cmd = 'time'
\.' '.s:invoke
\.' -e' \.' -e'
\.' regtest' \.' regtest'
\.' --device-ip='.g:DeviceIP \.' --device-ip='.a:device_ip
\.' --laser1-type=DL-CBCpro' \.' --laser1-type='.a:laser1_type
let regtest_cmd .= ' --marks="'.g:DlcproRegtest_marks.'"'
let firmware_file = g:ProjectBuildDir.'/artifacts/'.s:firware_file_name
if filereadable(firmware_file)
let regtest_cmd .= ' --firmware-file='.firmware_file
\.' --version-file='.g:ProjectBuildDir.'/artifacts/VERSION'
endif
let regtest_cmd .= ' --marks="'.a:marks.'"'
if g:DlcproRegtest_fast_restart == 1 if g:DlcproRegtest_fast_restart == 1
let regtest_cmd .= ' --fast-restart' let regtest_cmd .= ' --fast-restart'
endif endif
if (a:test_cmd != "") if g:DlcproRegtest_fw_update == 1
let regtest_cmd .= ' --tests="'.a:test_cmd.'"' let regtest_cmd .= ' --do-fw-update'
endif
if g:DlcproRegtest_smoke == 1
let regtest_cmd .= ' --smoke'
endif
if (a:tests != "")
let regtest_cmd .= ' --tests="'.a:tests.'"'
endif
echo regtest_cmd
execute "terminal ++shell " . regtest_cmd
endfunction
command -nargs=? -complete=file TopmodeRegtest call s:TopmodeRegtest('topmode_stefan', '', '<args>')
function! s:TopmodeRegtest(device_ip, marks, tests)
execute "wa"
let regtest_cmd = 'time'
\.' '.s:invoke
\.' -e'
\.' regtest'
\.' --device-ip='.a:device_ip
" \.' --do-fw-update'
" \.' --smoke'
let firmware_file = g:ProjectBuildDir.'/artifacts/'.s:firware_file_name
if filereadable(firmware_file)
let regtest_cmd .= ' --firmware-file='.firmware_file
endif
if g:DlcproRegtest_fw_update == 1
let regtest_cmd .= ' --do-fw-update'
endif
if g:DlcproRegtest_smoke == 1
let regtest_cmd .= ' --smoke'
endif
let regtest_cmd .= ' --marks="'.a:marks.'"'
if (a:tests != "")
let regtest_cmd .= ' --tests="'.a:tests.'"'
endif endif
echo regtest_cmd echo regtest_cmd