Improve MakeCmd and remove Regtest
This commit is contained in:
parent
8af54476a8
commit
53804a4360
@ -98,15 +98,12 @@ function! s:ProjectSet(project_type, project_base_dir)
|
||||
execute 'set path-=./**'
|
||||
execute 'set path+=' . s:ProjectSrcDir.'/**'
|
||||
|
||||
let s:invoke_options = '' " used for --project=...
|
||||
|
||||
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
|
||||
set wildignore-=**/firmware/src/device-control/**
|
||||
set wildignore+=**/shg-firmware/**
|
||||
set titlestring=%<%t\ (%{expand('%:p:h')})%=project:\ %{g:project_type}\ \ \ \ compiler:\ %{g:Compiler_version()}
|
||||
@ -118,6 +115,10 @@ function! s:ProjectSet(project_type, project_base_dir)
|
||||
else
|
||||
let s:firware_file_name = 'DLCpro-archive.fw'
|
||||
endif
|
||||
let s:firmware_file = g:ProjectBuildDir.'/artifacts/'.s:firware_file_name
|
||||
let g:DeviceType = 'TApro'
|
||||
let g:PowerswitchIP = 'elab-stefan'
|
||||
let g:Powerplug = '1'
|
||||
let g:termdebugger = 'arm-none-eabi-gdb'
|
||||
let s:gdb_connect_script = g:ProjectBuildDir.'/gdbinit'
|
||||
command! DlcProGuiStart execute("!~/dlcpro/pc-gui/start-gui&")
|
||||
@ -170,6 +171,7 @@ function! s:ProjectSet(project_type, project_base_dir)
|
||||
let g:termdebugger = 'arm-none-eabi-gdb'
|
||||
let s:gdb_connect_script = g:ProjectBuildDir.'/gdbinit'
|
||||
let s:firware_file_name = 'TopMode-CHARM-Control-1.5.4-dev.fw'
|
||||
let s:firmware_file = g:ProjectBuildDir.'/artifacts/'.s:firware_file_name
|
||||
command! TopmodeGuiStart execute("!~/topmode/pc-gui/start-gui&")
|
||||
elseif (g:project_type == 'topmode-gui')
|
||||
let g:DebugRemote = v:false
|
||||
@ -214,6 +216,8 @@ function! s:ProjectSet(project_type, project_base_dir)
|
||||
echo "no project"
|
||||
endif
|
||||
|
||||
let g:BuildType = 'Default'
|
||||
|
||||
" Settings for invoke development
|
||||
let s:invoke = 'invoke'
|
||||
let s:tasks_file_dev = '/home/stefan/tools/invoke/'.g:project_type.'/tasks.py'
|
||||
@ -251,7 +255,7 @@ function! s:ProjectSet(project_type, project_base_dir)
|
||||
function! s:DeviceFirmwareUpdate()
|
||||
call s:Make('kill', 'bang')
|
||||
call s:Make('flash', 'bang')
|
||||
call s:Make('start', 'bang')
|
||||
call s:Make('run', 'bang')
|
||||
endfunction
|
||||
|
||||
command! DeviceDebug call s:DeviceDebug(0)
|
||||
@ -267,32 +271,45 @@ endfunction
|
||||
" Make
|
||||
" ====
|
||||
|
||||
" Add default value for all given options, if not already set
|
||||
function! s:SetDefaults(commandline, option_defaults)
|
||||
|
||||
let g:option_defaults = [
|
||||
\ {'name': '--project', 'value': g:project_type},
|
||||
\ {'name': '--device-ip', 'value': g:DeviceIP},
|
||||
\ {'name': '--build-type', 'value': g:BuildType},
|
||||
\ {'name': '--firmware-file', 'value': s:firmware_file},
|
||||
\ {'name': '--version-file', 'value': g:ProjectBuildDir.'/artifacts/VERSION'},
|
||||
\ {'name': '--laser1-type', 'value': g:DeviceType},
|
||||
\ {'name': '--powerswitch-ip', 'value': g:PowerswitchIP},
|
||||
\ {'name': '--powerplug', 'value': g:Powerplug},
|
||||
\ {'name': '--firmware-file', 'value': s:firmware_file},
|
||||
\ ]
|
||||
|
||||
let commandline = a:commandline
|
||||
let task = split(commandline)[0]
|
||||
let options_allowed = system(s:invoke.' --complete -- '.task.' -')
|
||||
for option_default in a:option_defaults
|
||||
let option = option_default['name']
|
||||
let value = option_default['value']
|
||||
if options_allowed =~ option && commandline !~ option
|
||||
let commandline .= ' '.option.'='.value
|
||||
endif
|
||||
endfor
|
||||
return commandline
|
||||
endfunction
|
||||
|
||||
function! s:Make(args, async_mode)
|
||||
call asyncrun#quickfix_toggle(10, 1)
|
||||
let l:makeprg = s:invoke.' -e'
|
||||
let l:args = a:args
|
||||
if l:args == ''
|
||||
let l:args = 'build' " needed for --project
|
||||
endif
|
||||
" Add defaults for options
|
||||
let l:options = s:SetDefaults(a:args, g:option_defaults)
|
||||
|
||||
let task = split(l:args)[0]
|
||||
let options = system(s:invoke.' --complete -- '.task.' -')
|
||||
|
||||
" Add --project if necessary
|
||||
if options =~ '--project' && a:args !~ '--project'
|
||||
let l:args .= ' --project='.g:project_type
|
||||
if (a:async_mode == 'background')
|
||||
call system(s:invoke.' -e '.l:options.'&')
|
||||
else
|
||||
call asyncrun#quickfix_toggle(10, 1)
|
||||
let &makeprg = s:invoke.' -e'
|
||||
execute 'AsyncRun -mode='.a:async_mode.' -save=2 -program=make @ '.l:options
|
||||
endif
|
||||
" Add --device-ip if necessary
|
||||
if options =~ '--device-ip' && l:args !~ '--device-ip'
|
||||
let l:args .= ' --device-ip='.g:DeviceIP
|
||||
endif
|
||||
" Add --build-type=Debug
|
||||
if options =~ '--build-type' && l:args !~ '--build-type'
|
||||
let l:args .= ' --build-type=Debug'
|
||||
endif
|
||||
|
||||
let &makeprg = l:makeprg
|
||||
execute 'AsyncRun -mode='.a:async_mode.' -save=2 -program=make @ '.l:args
|
||||
endfunction
|
||||
|
||||
" Tab-completion is done with plugin vim-bash-completion
|
||||
@ -308,16 +325,6 @@ function! GetAllMakeCompletions(ArgLead, CmdLine, CursorPos)
|
||||
return bash#complete(l:command)
|
||||
endfunction
|
||||
|
||||
function! s:Call_and_log(cmd)
|
||||
echom a:cmd
|
||||
let r = system(a:cmd)
|
||||
let e = v:shell_error
|
||||
if (e != 0)
|
||||
echom 'return value: '.e.', output: "'.r.'"'
|
||||
endif
|
||||
return v:shell_error
|
||||
endfunction
|
||||
|
||||
function! g:JLinkSWOviewer()
|
||||
let cmd = '/JLinkSWOViewerCLExe -device STM32H743ZI -itmmask 0xffffffff -swofreq 450000'
|
||||
call asyncrun#quickfix_toggle(10, 1)
|
||||
@ -336,29 +343,15 @@ function! s:StartDebugger(elffile, attach)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
let g:DlcproBasePath = "/jenkins/workspace/pro--firmware_release_1.9.0-DCESJ5C5R577IG5QFEWTML22UFDDZCJDGFLMDA4DCD3V2ZAGVEJA/source/"
|
||||
function! s:DeviceDebug(attach)
|
||||
if g:DebugRemote
|
||||
let kill_cmd = s:invoke.' -e kill'
|
||||
if exists('g:DeviceIP')
|
||||
let kill_cmd .= ' --device-ip='.g:DeviceIP
|
||||
endif
|
||||
call system(kill_cmd)
|
||||
call s:Make('kill', 'bang')
|
||||
" Close quickfix window
|
||||
execute 'cclose'
|
||||
autocmd! User TermdebugStartPre
|
||||
autocmd! User TermdebugStartPost
|
||||
autocmd! User TermdebugStopPost
|
||||
let gdb_server_cmd = s:invoke.' -e gdb-server'
|
||||
if exists('g:DeviceIP')
|
||||
let gdb_server_cmd .= ' --device-ip='.g:DeviceIP
|
||||
endif
|
||||
let gdb_server_cmd .= s:invoke_options
|
||||
if v:true
|
||||
call system(gdb_server_cmd.'&')
|
||||
else
|
||||
call asyncrun#quickfix_toggle(3, 1)
|
||||
execute 'AsyncRun '.gdb_server_cmd
|
||||
autocmd User TermdebugStopPost execute 'AsyncStop'
|
||||
endif
|
||||
call s:Make('gdb-server', 'background')
|
||||
sleep 2
|
||||
if exists('s:gdb_connect_script')
|
||||
autocmd User TermdebugStartPost call term_sendkeys('',"source ".s:gdb_connect_script."\n")
|
||||
@ -375,89 +368,6 @@ function! s:DeviceDebug(attach)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" ================
|
||||
" Regression Tests
|
||||
" ================
|
||||
|
||||
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_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:TopmodeRegtest_smoke = 0
|
||||
|
||||
function! s:DlcproRegtest(device_ip, laser1_type, marks, tests)
|
||||
execute "wa"
|
||||
|
||||
let regtest_cmd = 'time'
|
||||
\.' '.s:invoke
|
||||
\.' -e'
|
||||
\.' regtest'
|
||||
\.' --device-ip='.a:device_ip
|
||||
\.' --laser1-type='.a:laser1_type
|
||||
|
||||
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
|
||||
let regtest_cmd .= ' --fast-restart'
|
||||
endif
|
||||
if g:DlcproRegtest_fw_update == 1
|
||||
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('', '<args>')
|
||||
function! s:TopmodeRegtest(marks, tests)
|
||||
execute "wa"
|
||||
|
||||
let regtest_cmd = 'time'
|
||||
\.' '.s:invoke
|
||||
\.' -e'
|
||||
\.' regtest'
|
||||
\.' --device-ip='.g:DeviceIP
|
||||
" \.' --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:TopmodeRegtest_smoke == 1
|
||||
let regtest_cmd .= ' --smoke'
|
||||
endif
|
||||
let regtest_cmd .= ' --marks="'.a:marks.'"'
|
||||
if (a:tests != "")
|
||||
let regtest_cmd .= ' --tests="'.a:tests.'"'
|
||||
endif
|
||||
|
||||
echo regtest_cmd
|
||||
execute "terminal ++shell " . regtest_cmd
|
||||
endfunction
|
||||
|
||||
" ------
|
||||
" Pandoc
|
||||
" ------
|
||||
|
Loading…
x
Reference in New Issue
Block a user