Skip to content

Commit 807d22e

Browse files
author
olevole
committed
link LPC menu to bconstruct-tui
1 parent 7344439 commit 807d22e

File tree

4 files changed

+77
-18
lines changed

4 files changed

+77
-18
lines changed

bhyvectl/bconstruct-tui

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,9 @@ dialog_menu_main()
244244
menu_list="${menu_list} '${item_num} vm_cpu_topology' '$(curval vm_cpu_topology)' 'Select VM CPU topology'"
245245
inc_menu_index item_num
246246

247+
menu_list="${menu_list} '${item_num} LPC' 'LPC devices >>' 'cbsd blpc'"
248+
inc_menu_index item_num
249+
247250
# FreeBSD-13+ only
248251
if [ ${freebsdhostversion} -gt 1300033 ]; then
249252
inc_menu_index item_num
@@ -416,6 +419,8 @@ else
416419
apply_vm_package
417420
fi
418421

422+
lpc_temp_sql=
423+
419424
while [ 1 ]; do
420425
pkgnum=0
421426
[ -n "${pkglist}" -a "${pkglist}" != "NO" ] && pkgnum=$( ${WC_CMD} -w ${pkglist} | ${AWK_CMD} '{printf $1}' )
@@ -469,6 +474,36 @@ while [ 1 ]; do
469474
invert_checkbox ${mychoice}
470475
continue
471476
;;
477+
LPC)
478+
if [ -z "${lpc_temp_sql}" ]; then
479+
lpc_temp_sql=$( ${MKTEMP_CMD} )
480+
# keep in sync with bcreate
481+
/usr/local/bin/cbsd ${miscdir}/updatesql ${lpc_temp_sql} ${distdir}/share/local-bhyve-lpc.schema lpc
482+
483+
[ -n "${otpm}" ] && tpm="${tpm}"
484+
[ -n "${obootrom}" ] && bootrom="${obootrom}"
485+
[ -n "${ocom1}" ] && com1="${ocom1}"
486+
[ -n "${ocom2}" ] && com2="${ocom2}"
487+
[ -n "${ocom3}" ] && com3="${ocom3}"
488+
[ -n "${ocom4}" ] && com4="${ocom4}"
489+
490+
[ -z "${tpm}" ] && tpm="0"
491+
[ -z "${bootrom}" ] && bootrom="${distdir}/upgrade/patch/efi.fd"
492+
[ -z "${com1}" ] && com1="stdio"
493+
[ -z "${com2}" ] && com2="0"
494+
[ -z "${com3}" ] && com3="0"
495+
[ -z "${com4}" ] && com4="0"
496+
497+
${miscdir}/sqlcli ${lpc_temp_sql} "INSERT INTO 'lpc' ( 'lpcslot_name', 'lpcslot_desc', 'lpcslot_value' ) VALUES ( 'bootrom', 'bootrom device', '${bootrom}' ), ( 'com1', 'com1 device', '${com1}' ), ( 'com2', 'com2 device', '${com2}' ), ( 'com3', 'com3 device', '${com3}' ), ( 'com4', 'com4 device', '${com4}' ), ( 'tpm', 'TPM device', '${tpm}' );"
498+
trap "${RM_CMD} -f ${lpc_temp_sql} ${lpc_temp_sql}-shm ${lpc_temp_sql}-wal" HUP INT ABRT BUS TERM EXIT
499+
fi
500+
if [ -z "${jname}" ]; then
501+
f_dialog_msgbox "please set jname first" "Error"
502+
continue
503+
fi
504+
blpc-tui jname="${jname}" out="${lpc_temp_sql}"
505+
trap "${RM_CMD} -f ${lpc_temp_sql}-shm ${lpc_temp_sql}-wal" HUP INT ABRT BUS TERM EXIT
506+
;;
472507
*)
473508
get_construct_${mychoice}
474509
;;

bhyvectl/blpc-tui

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/usr/local/bin/cbsd
22
#v14.2.5
3-
MYARG="jname"
4-
MYOPTARG=""
3+
MYARG=""
4+
MYOPTARG="out jname"
55
CBSDMODULE="bhyve"
66
MYDESC="Ncurses based bhyve LPC configurator"
77
EXTHELP="wf_jorder"
@@ -34,7 +34,7 @@ dialog_menu_main()
3434

3535
OIFS="${IFS}"
3636
IFS="|"
37-
eval $( cbsdsqlro ${jailsysdir}/${jname}/local.sqlite "SELECT lpcslot_name,lpcslot_value,lpcslot_desc FROM lpc ORDER BY CAST(lpcslot_name AS TEXT) ASC;" | while read _name _value _desc; do
37+
eval $( cbsdsqlro ${sqlite_database} "SELECT lpcslot_name,lpcslot_value,lpcslot_desc FROM lpc ORDER BY CAST(lpcslot_name AS TEXT) ASC;" | while read _name _value _desc; do
3838
IFS="${OIFS}"
3939
#echo "[${_name}][${_value}][${_desc}]" >> /tmp/ok.txt
4040
echo "export lpc_${jnum}_name=\"${_name}\""
@@ -50,7 +50,7 @@ dialog_menu_main()
5050
#echo "NUM: ${lpc_num}"
5151

5252
if [ "${lpc_num}" = "0" ]; then
53-
err 1 "${N1_COLOR}${CBSD_APP} error: wrong 'lpc' table in ${jailsysdir}/${jname}/local.sqlite: ${N2_COLOR}${jname}${N0_COLOR}"
53+
err 1 "${N1_COLOR}${CBSD_APP} error: wrong 'lpc' table in ${sqlite_database}: ${N2_COLOR}${jname}${N0_COLOR}"
5454
fi
5555

5656
item_num="0"
@@ -91,6 +91,16 @@ f_dialog_title "$msg_system_console_configuration"
9191
f_dialog_backtitle "${ipgm:+bsdconfig }$pgm"
9292
f_mustberoot_init
9393

94+
### MAIN ###
95+
if [ -z "${out}" ]; then
96+
[ -z "${jname}" ] && jname="${1}"
97+
[ -z "${jname}" ] && select_jail_by_list -s "List of local bhyves:" -r 0 -e bls
98+
[ -z "${jname}" ] && err 1 "please specify jname"
99+
sqlite_database="${jailsysdir}/${jname}/local.sqlite"
100+
else
101+
sqlite_database="${out}"
102+
fi
103+
94104
while [ 1 ]; do
95105
dialog_menu_main || f_die
96106
retval=$?
@@ -109,21 +119,23 @@ while [ 1 ]; do
109119
;;
110120
bootrom)
111121
# bhyve form for $efi_firmware
112-
bootrom=$( cbsdsqlro ${jailsysdir}/${jname}/local.sqlite "SELECT lpcslot_value FROM lpc WHERE lpcslot_name='bootrom'" )
122+
bootrom=$( cbsdsqlro ${sqlite_database} "SELECT lpcslot_value FROM lpc WHERE lpcslot_name='bootrom'" )
113123
obootrom="${bootrom}"
114124
get_construct_bootrom
115-
[ "${obootrom}" != "bootrom" ] && cbsdsqlrw ${jailsysdir}/${jname}/local.sqlite "UPDATE lpc SET lpcslot_value='${bootrom}' WHERE lpcslot_name='bootrom'"
125+
[ "${obootrom}" != "bootrom" ] && cbsdsqlrw ${sqlite_database} "UPDATE lpc SET lpcslot_value='${bootrom}' WHERE lpcslot_name='bootrom'"
116126
;;
117127
com*)
118128
eval cfg_name="\$mychoice"
119129
# bhyve form for $com
120-
com=$( cbsdsqlro ${jailsysdir}/${jname}/local.sqlite "SELECT lpcslot_value FROM lpc WHERE lpcslot_name='${cfg_name}'" )
130+
com=$( cbsdsqlro ${sqlite_database} "SELECT lpcslot_value FROM lpc WHERE lpcslot_name='${cfg_name}'" )
121131
ocom="${orig_val}"
122132
get_construct_com "${cfg_name}"
123-
[ "${com}" != "${ocom}" ] && cbsdsqlrw ${jailsysdir}/${jname}/local.sqlite "UPDATE lpc SET lpcslot_value='${com}' WHERE lpcslot_name='${cfg_name}'"
133+
[ "${com}" != "${ocom}" ] && cbsdsqlrw ${sqlite_database} "UPDATE lpc SET lpcslot_value='${com}' WHERE lpcslot_name='${cfg_name}'"
124134
;;
125135
*)
126136
get_new_value ${mychoice} ${index}
127137
;;
128138
esac
129139
done
140+
141+
exit 0

subr/settings-tui-bhyve.subr

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -787,6 +787,8 @@ bhyvestop_wrapper="${bhyvestop_wrapper}"
787787
bhyve_cmd="${bhyve_cmd}";
788788
# alternative UEFI firmware path
789789
efi_firmware="${efi_firmware}";
790+
# lpc table
791+
lpc_temp_sql="${lpc_temp_sql}";
790792
EOF
791793

792794
[ ${is_cloud} -eq 0 ] && return 0

sudoexec/bcreate

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -694,17 +694,27 @@ fi
694694
/usr/local/bin/cbsd ${miscdir}/updatesql ${jailsysdir}/${jname}/local.sqlite ${distdir}/share/local-bhyve-soundhw.schema bhyve_soundhw
695695
${miscdir}/sqlcli ${jailsysdir}/${jname}/local.sqlite "INSERT INTO bhyve_soundhw ( soundhw_play, soundhw_rec ) VALUES ( '/dev/dsp', '/dev/dsp' )"
696696

697-
/usr/local/bin/cbsd ${miscdir}/updatesql ${jailsysdir}/${jname}/local.sqlite ${distdir}/share/local-bhyve-lpc.schema lpc
698-
${miscdir}/sqlcli ${jailsysdir}/${jname}/local.sqlite "INSERT INTO bhyve_soundhw ( soundhw_play, soundhw_rec ) VALUES ( '/dev/dsp', '/dev/dsp' )"
699-
700-
[ -n "${otpm}" ] && tpm="${tpm}"
701-
[ -n "${obootrom}" ] && bootrom="${obootrom}"
702-
[ -n "${ocom1}" ] && com1="${ocom1}"
703-
[ -n "${ocom2}" ] && com2="${ocom2}"
704-
[ -n "${ocom3}" ] && com3="${ocom3}"
705-
[ -n "${ocom4}" ] && com4="${ocom4}"
697+
if [ -n "${lpc_temp_sql}" ]; then
698+
[ ! -r "${lpc_temp_sql}" ] && err 1 "${N1_COLOR}${CBSD_APP}: lpc_temp_sql file not readable: ${N2_COLOR}${lpc_temp_sql}${N0_COLOR}"
699+
[ ! -r ${jailsysdir}/${jname}/local.sqlite ] && /usr/local/bin/cbsd ${miscdir}/updatesql ${jailsysdir}/${jname}/local.sqlite ${distdir}/share/local-bhyve-lpc.schema lpc
700+
# dump and import lpc table
701+
_tmp_table_file=$( ${MKTEMP_CMD} )
702+
[ ${quiet} -ne 1 ] && ${ECHO} "${N1_COLOR}${CBSD_APP}: import lpc data from: ${N2_COLOR}${lpc_temp_sql} ${N1_COLOR}via${N2_COLOR} ${_tmp_table_file}${N1_COLOR} dump${N0_COLOR}"
703+
${SQLITE3_CMD} ${lpc_temp_sql} .dump > ${_tmp_table_file}
704+
${SQLITE3_CMD} ${jailsysdir}/${jname}/local.sqlite < ${_tmp_table_file}
705+
${RM_CMD} -f ${_tmp_table_file} ${lpc_temp_sql} ${lpc_temp_sql}-shm ${lpc_temp_sql}-wal
706+
else
707+
# keep in sync with bconstruct-tui
708+
/usr/local/bin/cbsd ${miscdir}/updatesql ${jailsysdir}/${jname}/local.sqlite ${distdir}/share/local-bhyve-lpc.schema lpc
709+
[ -n "${otpm}" ] && tpm="${otpm}"
710+
[ -n "${obootrom}" ] && bootrom="${obootrom}"
711+
[ -n "${ocom1}" ] && com1="${ocom1}"
712+
[ -n "${ocom2}" ] && com2="${ocom2}"
713+
[ -n "${ocom3}" ] && com3="${ocom3}"
714+
[ -n "${ocom4}" ] && com4="${ocom4}"
715+
${miscdir}/sqlcli ${jailsysdir}/${jname}/local.sqlite "INSERT INTO 'lpc' ( 'lpcslot_name', 'lpcslot_desc', 'lpcslot_value' ) VALUES ( 'bootrom', 'bootrom device', '${bootrom}' ), ( 'com1', 'com1 device', '${com1}' ), ( 'com2', 'com2 device', '${com2}' ), ( 'com3', 'com3 device', '${com3}' ), ( 'com4', 'com4 device', '${com4}' ), ( 'tpm', 'TPM device', '${tpm}' );"
716+
fi
706717

707-
${miscdir}/sqlcli ${jailsysdir}/${jname}/local.sqlite "INSERT INTO 'lpc' ( 'lpcslot_name', 'lpcslot_desc', 'lpcslot_value' ) VALUES ( 'bootrom', 'bootrom device', '${bootrom}' ), ( 'com1', 'com1 device', '${com1}' ), ( 'com2', 'com2 device', '${com2}' ), ( 'com3', 'com3 device', '${com3}' ), ( 'com4', 'com4 device', '${com4}' ), ( 'tpm', 'TPM device', '${tpm}' );"
708718
[ -n "${fstablocal}" -a -f "${fstablocal}" ] && ${CP_CMD} ${fstablocal} ${jailfstabdir}/${jailfstabpref}${jname}.local
709719

710720
${CP_CMD} ${jconf_tmp} ${rcconf}

0 commit comments

Comments
 (0)