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-=./**'
|
||||||
execute 'set path+=' . s:ProjectSrcDir.'/**'
|
execute 'set path+=' . s:ProjectSrcDir.'/**'
|
||||||
|
|
||||||
let s:invoke_options = '' " used for --project=...
|
|
||||||
|
|
||||||
if (count(['pfd', 'tiny'], g:project_type) > 0)
|
if (count(['pfd', 'tiny'], g:project_type) > 0)
|
||||||
let g:ProjectBuildDir = s:ProjectSrcDir.'/.build/target/firmware/Debug'
|
let g:ProjectBuildDir = s:ProjectSrcDir.'/.build/target/firmware/Debug'
|
||||||
let g:DebugRemote = v:true
|
let g:DebugRemote = v:true
|
||||||
let g:termdebugger = 'arm-none-eabi-gdb'
|
let g:termdebugger = 'arm-none-eabi-gdb'
|
||||||
let s:gdb_connect_script = g:ProjectBuildDir.'/gdbinit'
|
let s:gdb_connect_script = g:ProjectBuildDir.'/gdbinit'
|
||||||
elseif (count(['dlcpro', 'dlcpro-new'], g:project_type) > 0)
|
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-=**/firmware/src/device-control/**
|
||||||
set wildignore+=**/shg-firmware/**
|
set wildignore+=**/shg-firmware/**
|
||||||
set titlestring=%<%t\ (%{expand('%:p:h')})%=project:\ %{g:project_type}\ \ \ \ compiler:\ %{g:Compiler_version()}
|
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
|
else
|
||||||
let s:firware_file_name = 'DLCpro-archive.fw'
|
let s:firware_file_name = 'DLCpro-archive.fw'
|
||||||
endif
|
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 g:termdebugger = 'arm-none-eabi-gdb'
|
||||||
let s:gdb_connect_script = g:ProjectBuildDir.'/gdbinit'
|
let s:gdb_connect_script = g:ProjectBuildDir.'/gdbinit'
|
||||||
command! DlcProGuiStart execute("!~/dlcpro/pc-gui/start-gui&")
|
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 g:termdebugger = 'arm-none-eabi-gdb'
|
||||||
let s:gdb_connect_script = g:ProjectBuildDir.'/gdbinit'
|
let s:gdb_connect_script = g:ProjectBuildDir.'/gdbinit'
|
||||||
let s:firware_file_name = 'TopMode-CHARM-Control-1.5.4-dev.fw'
|
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&")
|
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
|
||||||
@ -214,6 +216,8 @@ function! s:ProjectSet(project_type, project_base_dir)
|
|||||||
echo "no project"
|
echo "no project"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let g:BuildType = 'Default'
|
||||||
|
|
||||||
" Settings for invoke development
|
" Settings for invoke development
|
||||||
let s:invoke = 'invoke'
|
let s:invoke = 'invoke'
|
||||||
let s:tasks_file_dev = '/home/stefan/tools/invoke/'.g:project_type.'/tasks.py'
|
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()
|
function! s:DeviceFirmwareUpdate()
|
||||||
call s:Make('kill', 'bang')
|
call s:Make('kill', 'bang')
|
||||||
call s:Make('flash', 'bang')
|
call s:Make('flash', 'bang')
|
||||||
call s:Make('start', 'bang')
|
call s:Make('run', 'bang')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
command! DeviceDebug call s:DeviceDebug(0)
|
command! DeviceDebug call s:DeviceDebug(0)
|
||||||
@ -267,32 +271,45 @@ endfunction
|
|||||||
" Make
|
" 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)
|
function! s:Make(args, async_mode)
|
||||||
call asyncrun#quickfix_toggle(10, 1)
|
" Add defaults for options
|
||||||
let l:makeprg = s:invoke.' -e'
|
let l:options = s:SetDefaults(a:args, g:option_defaults)
|
||||||
let l:args = a:args
|
|
||||||
if l:args == ''
|
|
||||||
let l:args = 'build' " needed for --project
|
|
||||||
endif
|
|
||||||
|
|
||||||
let task = split(l:args)[0]
|
if (a:async_mode == 'background')
|
||||||
let options = system(s:invoke.' --complete -- '.task.' -')
|
call system(s:invoke.' -e '.l:options.'&')
|
||||||
|
else
|
||||||
" Add --project if necessary
|
call asyncrun#quickfix_toggle(10, 1)
|
||||||
if options =~ '--project' && a:args !~ '--project'
|
let &makeprg = s:invoke.' -e'
|
||||||
let l:args .= ' --project='.g:project_type
|
execute 'AsyncRun -mode='.a:async_mode.' -save=2 -program=make @ '.l:options
|
||||||
endif
|
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
|
endfunction
|
||||||
|
|
||||||
" Tab-completion is done with plugin vim-bash-completion
|
" Tab-completion is done with plugin vim-bash-completion
|
||||||
@ -308,16 +325,6 @@ function! GetAllMakeCompletions(ArgLead, CmdLine, CursorPos)
|
|||||||
return bash#complete(l:command)
|
return bash#complete(l:command)
|
||||||
endfunction
|
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()
|
function! g:JLinkSWOviewer()
|
||||||
let cmd = '/JLinkSWOViewerCLExe -device STM32H743ZI -itmmask 0xffffffff -swofreq 450000'
|
let cmd = '/JLinkSWOViewerCLExe -device STM32H743ZI -itmmask 0xffffffff -swofreq 450000'
|
||||||
call asyncrun#quickfix_toggle(10, 1)
|
call asyncrun#quickfix_toggle(10, 1)
|
||||||
@ -336,29 +343,15 @@ function! s:StartDebugger(elffile, attach)
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
let g:DlcproBasePath = "/jenkins/workspace/pro--firmware_release_1.9.0-DCESJ5C5R577IG5QFEWTML22UFDDZCJDGFLMDA4DCD3V2ZAGVEJA/source/"
|
|
||||||
function! s:DeviceDebug(attach)
|
function! s:DeviceDebug(attach)
|
||||||
if g:DebugRemote
|
if g:DebugRemote
|
||||||
let kill_cmd = s:invoke.' -e kill'
|
call s:Make('kill', 'bang')
|
||||||
if exists('g:DeviceIP')
|
" Close quickfix window
|
||||||
let kill_cmd .= ' --device-ip='.g:DeviceIP
|
execute 'cclose'
|
||||||
endif
|
|
||||||
call system(kill_cmd)
|
|
||||||
autocmd! User TermdebugStartPre
|
autocmd! User TermdebugStartPre
|
||||||
autocmd! User TermdebugStartPost
|
autocmd! User TermdebugStartPost
|
||||||
autocmd! User TermdebugStopPost
|
autocmd! User TermdebugStopPost
|
||||||
let gdb_server_cmd = s:invoke.' -e gdb-server'
|
call s:Make('gdb-server', 'background')
|
||||||
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
|
|
||||||
sleep 2
|
sleep 2
|
||||||
if exists('s:gdb_connect_script')
|
if exists('s:gdb_connect_script')
|
||||||
autocmd User TermdebugStartPost call term_sendkeys('',"source ".s:gdb_connect_script."\n")
|
autocmd User TermdebugStartPost call term_sendkeys('',"source ".s:gdb_connect_script."\n")
|
||||||
@ -375,89 +368,6 @@ function! s:DeviceDebug(attach)
|
|||||||
endif
|
endif
|
||||||
endfunction
|
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
|
" Pandoc
|
||||||
" ------
|
" ------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user