@@ -5,7 +5,7 @@ set -euo pipefail
55TEMP_DIR=" "
66
77usage () {
8- echo " Usage: $0 <amd64|arm64>" >&2
8+ echo " Usage: $0 <amd64|arm64> [deb-file] " >&2
99 exit 1
1010}
1111
@@ -67,6 +67,11 @@ assert_loadable_native_module() {
6767 local electron_bin=" $1 "
6868 local native_module=" $2 "
6969
70+ if [[ " ${VERIFY_LOAD:- 1} " != " 1" ]]; then
71+ echo " [deb-verify] skipping native module load check for ${native_module} (VERIFY_LOAD=${VERIFY_LOAD:- 1} )"
72+ return
73+ fi
74+
7075 echo " [deb-verify] loading native module with packaged Electron runtime: ${native_module} "
7176 ELECTRON_RUN_AS_NODE=1 " ${electron_bin} " -e '
7277 const path = require("node:path");
@@ -75,8 +80,56 @@ assert_loadable_native_module() {
7580 ' " ${native_module} "
7681}
7782
83+ resolve_file_from_glob () {
84+ local search_dir=" $1 "
85+ local pattern=" $2 "
86+ find " ${search_dir} " -maxdepth 1 -type f -name " ${pattern} " -print | sort | head -n 1
87+ }
88+
89+ resolve_single_file () {
90+ local search_dir=" $1 "
91+ local pattern=" $2 "
92+ local file
93+
94+ file=" $( resolve_file_from_glob " ${search_dir} " " ${pattern} " ) "
95+ if [[ -z " ${file} " ]]; then
96+ echo " [deb-verify] no file matched ${pattern} under ${search_dir} " >&2
97+ exit 1
98+ fi
99+
100+ echo " ${file} "
101+ }
102+
103+ resolve_serialport_prebuild () {
104+ local root=" $1 "
105+ local arch=" $2 "
106+ local prebuild_dir=" ${root} /prebuilds/linux-${arch} "
107+ local file
108+
109+ file=" $( find " ${prebuild_dir} " -maxdepth 1 -type f -name ' @serialport+bindings-cpp*.glibc.node' -print | sort | head -n 1) "
110+ if [[ -z " ${file} " ]]; then
111+ echo " [deb-verify] serialport glibc prebuild not found under ${prebuild_dir} " >&2
112+ exit 1
113+ fi
114+
115+ echo " ${file} "
116+ }
117+
118+ verify_native_module () {
119+ local label=" $1 "
120+ local electron_bin=" $2 "
121+ local file=" $3 "
122+ local expected_machine=" $4 "
123+
124+ assert_exists " ${file} "
125+ echo " [deb-verify] verifying ${label} "
126+ log_file_info " ${file} "
127+ assert_file_arch " ${file} " " ${expected_machine} "
128+ assert_loadable_native_module " ${electron_bin} " " ${file} "
129+ }
130+
78131main () {
79- if [[ $# -ne 1 ]]; then
132+ if [[ $# -lt 1 || $# -gt 2 ]]; then
80133 usage
81134 fi
82135
@@ -89,6 +142,9 @@ main() {
89142 local main_binary
90143 local build_release_pty
91144 local prebuild_pty
145+ local serialport_root
146+ local build_release_serialport
147+ local prebuild_serialport
92148
93149 require_cmd dpkg-deb
94150 require_cmd file
@@ -107,10 +163,11 @@ main() {
107163 ;;
108164 esac
109165
110- deb_file=" $( find release -maxdepth 1 -type f -name " *-linux-${deb_arch} .deb" -print | sort | head -n 1) "
111- if [[ -z " ${deb_file} " ]]; then
112- echo " [deb-verify] no deb artifact found for ${deb_arch} under release/" >&2
113- exit 1
166+ if [[ $# -eq 2 ]]; then
167+ deb_file=" $2 "
168+ assert_exists " ${deb_file} "
169+ else
170+ deb_file=" $( resolve_single_file " release" " *-linux-${deb_arch} .deb" ) "
114171 fi
115172
116173 echo " [deb-verify] verifying deb artifact: ${deb_file} "
@@ -131,22 +188,19 @@ main() {
131188 main_binary=" ${TEMP_DIR} /opt/Netcatty/netcatty"
132189 build_release_pty=" ${TEMP_DIR} /opt/Netcatty/resources/app.asar.unpacked/node_modules/node-pty/build/Release/pty.node"
133190 prebuild_pty=" ${TEMP_DIR} /opt/Netcatty/resources/app.asar.unpacked/node_modules/node-pty/prebuilds/linux-${prebuild_arch} /pty.node"
191+ serialport_root=" ${TEMP_DIR} /opt/Netcatty/resources/app.asar.unpacked/node_modules/@serialport/bindings-cpp"
192+ build_release_serialport=" ${serialport_root} /build/Release/bindings.node"
193+ prebuild_serialport=" $( resolve_serialport_prebuild " ${serialport_root} " " ${prebuild_arch} " ) "
134194
135195 assert_executable " ${electron_bin} "
136- assert_exists " ${build_release_pty} "
137- assert_exists " ${prebuild_pty} "
138196
139197 echo " [deb-verify] verifying packaged binary architectures"
140198 log_file_info " ${main_binary} "
141- log_file_info " ${build_release_pty} "
142- log_file_info " ${prebuild_pty} "
143-
144199 assert_file_arch " ${main_binary} " " ${expected_machine} "
145- assert_file_arch " ${build_release_pty} " " ${expected_machine} "
146- assert_file_arch " ${prebuild_pty} " " ${expected_machine} "
147-
148- assert_loadable_native_module " ${electron_bin} " " ${build_release_pty} "
149- assert_loadable_native_module " ${electron_bin} " " ${prebuild_pty} "
200+ verify_native_module " node-pty build/Release" " ${electron_bin} " " ${build_release_pty} " " ${expected_machine} "
201+ verify_native_module " node-pty prebuild" " ${electron_bin} " " ${prebuild_pty} " " ${expected_machine} "
202+ verify_native_module " serialport build/Release" " ${electron_bin} " " ${build_release_serialport} " " ${expected_machine} "
203+ verify_native_module " serialport glibc prebuild" " ${electron_bin} " " ${prebuild_serialport} " " ${expected_machine} "
150204
151205 echo " [deb-verify] deb artifact verification passed for ${deb_file} "
152206}
0 commit comments