Skip to content

Commit 02af480

Browse files
committed
Make RPM package verifier diagnostic
1 parent 9aefea1 commit 02af480

1 file changed

Lines changed: 22 additions & 7 deletions

File tree

packaging/scripts/verify-rpm-package.sh

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,19 @@ repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
55
tmp="$(mktemp -d)"
66
trap 'rm -rf "$tmp"' EXIT
77

8+
require_line() {
9+
pattern="$1"
10+
file="$2"
11+
label="$3"
12+
if ! grep -q "$pattern" "$file"; then
13+
echo "missing expected RPM path: $label" >&2
14+
echo "expected pattern: $pattern" >&2
15+
echo "available paths:" >&2
16+
cat "$file" >&2
17+
exit 1
18+
fi
19+
}
20+
821
mkdir -p "$repo_root/target/release"
922
for binary in wezterm wezterm-gui wezterm-mux-server; do
1023
cat > "$repo_root/target/release/$binary" <<'EOF'
@@ -17,6 +30,7 @@ done
1730
rpm="$(TURTLE_TERM_OUT_DIR="$tmp" TURTLE_TERM_VERSION="0.1.0" TURTLE_TERM_RPM_ARCH="$(uname -m)" \
1831
"$repo_root/packaging/scripts/build-rpm-package.sh")"
1932
contents="$tmp/rpm-contents.txt"
33+
payload="$tmp/rpm-payload.cpio"
2034
extract="$tmp/extract"
2135

2236
test -f "$rpm"
@@ -42,22 +56,23 @@ rpm -qp --queryformat '%{VERSION}\n' "$rpm" | grep -qx '0.1.0'
4256
rpm -qpl "$rpm" > "$contents"
4357

4458
for command in turtleterm turtle-agentctl turtle-agent-status turtle-cloudfog turtle-superconscious turtle-agent-machine turtle-language turtle-session; do
45-
grep -q "^/usr/bin/$command$" "$contents"
59+
require_line "^/usr/bin/$command$" "$contents" "/usr/bin/$command"
4660
done
4761

48-
grep -q '^/etc/turtle-term/turtleterm.lua$' "$contents"
49-
grep -q '^/usr/share/applications/ai.sourceos.TurtleTerm.desktop$' "$contents"
50-
grep -q '^/usr/share/metainfo/ai.sourceos.TurtleTerm.metainfo.xml$' "$contents"
51-
grep -q '^/usr/share/icons/hicolor/scalable/apps/ai.sourceos.TurtleTerm.svg$' "$contents"
52-
grep -q '^/usr/libexec/turtle-term/wezterm-gui$' "$contents"
62+
require_line '^/etc/turtle-term/turtleterm.lua$' "$contents" '/etc/turtle-term/turtleterm.lua'
63+
require_line '^/usr/share/applications/ai.sourceos.TurtleTerm.desktop$' "$contents" '/usr/share/applications/ai.sourceos.TurtleTerm.desktop'
64+
require_line '^/usr/share/metainfo/ai.sourceos.TurtleTerm.metainfo.xml$' "$contents" '/usr/share/metainfo/ai.sourceos.TurtleTerm.metainfo.xml'
65+
require_line '^/usr/share/icons/hicolor/scalable/apps/ai.sourceos.TurtleTerm.svg$' "$contents" '/usr/share/icons/hicolor/scalable/apps/ai.sourceos.TurtleTerm.svg'
66+
require_line '^/usr/libexec/turtle-term/wezterm-gui$' "$contents" '/usr/libexec/turtle-term/wezterm-gui'
5367

5468
if grep -q '^/usr/bin/wezterm-gui$' "$contents"; then
5569
echo 'private runtime leaked onto product PATH in rpm' >&2
5670
exit 1
5771
fi
5872

5973
mkdir -p "$extract"
60-
(cd "$extract" && rpm2cpio "$rpm" | cpio -idmu >/dev/null 2>&1)
74+
rpm2cpio "$rpm" > "$payload"
75+
(cd "$extract" && cpio -idmu < "$payload" >/dev/null 2>&1)
6176
grep -q 'TURTLE_TERM_RUNTIME_DIR="/usr/libexec/turtle-term"' "$extract/usr/bin/turtleterm"
6277
grep -q 'TURTLETERM_CONFIG="/etc/turtle-term/turtleterm.lua"' "$extract/usr/bin/turtleterm"
6378
grep -q 'exec "/usr/libexec/turtle-term/turtleterm"' "$extract/usr/bin/turtleterm"

0 commit comments

Comments
 (0)