Remove CEF: the web content crate, ElyMark's page, their packaging, licences and tests (C14.5)

PRD and agents.md name the native route; ElyMail's body will not use
CEF or Electron. ElyMark's package carries the KaTeX fonts' OFL.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-10-12 03:15:30 -04:00
1 parent 2e8379b0b1
commit 8a942e6d80
77 files changed
+105 -10718

No files matched your search

+4 -3
View File
@@ -21,7 +21,6 @@ put . "$root/LICENSE"
case $slug in
ely-doc | ely-table | ely-show) crates=(ely-lok) ;;
ely-pdf) crates=(ely-pdf-engine) ;;
ely-mark) crates=(ely-web-content) ;;
*) crates=() ;;
esac
python3 "$root/packaging/crates.py" "$slug" ${crates[@]+"${crates[@]}"} >"$out/rust-crates.txt"
@@ -81,8 +80,10 @@ case $slug in
put GreatVibes "$root/crates/ely-pdf-engine/fonts/OFL.txt"
;;
ely-mark)
put CEF "$root/reference/cef/LICENSE.txt" "${ELY_CEF:-$root/engines/cef}/CREDITS.html"
put content "$root/engines/content/ely-mark/THIRD-PARTY-NOTICES.txt"
# RaTeX embeds KaTeX's fonts.
katex=$(cargo metadata --format-version 1 --locked --manifest-path "$root/Cargo.toml" |
python3 -c 'import json, pathlib, sys; print(next(pathlib.Path(p["manifest_path"]).parent for p in json.load(sys.stdin)["packages"] if p["name"] == "ratex-katex-fonts"))')
put KaTeX "$katex/fonts/OFL.txt" "$katex/fonts/FONT_NOTICE.txt"
;;
esac
# ElyTree carries Git; on Windows and Linux ElyMark does too.
+1 -12
View File
@@ -106,20 +106,9 @@ for helper in ely-lok-worker ely-pdf-worker; do
deployed+=(--executable "$bin/$helper")
fi
done
if [ -f "$bin/libcef.so" ]; then
# Binaries here load from usr/lib; CEF's data sits with libcef.
cef=${ELY_CEF:-$root/engines/cef}
mkdir -p "$appdir/usr/lib"
for item in "$bin"/*; do
if [ -e "$cef/${item##*/}" ]; then
mv "$item" "$appdir/usr/lib/"
fi
done
deployed+=(--library "$appdir/usr/lib/libcef.so")
fi
# linuxdeploy bundles libraries and fails on a missing one.
LD_LIBRARY_PATH=$appdir/usr/lib "$deploy" --appimage-extract-and-run --appdir "$appdir" "${deployed[@]}" \
"$deploy" --appimage-extract-and-run --appdir "$appdir" "${deployed[@]}" \
--desktop-file "$work/$slug.desktop" --icon-file "$icon"
mkdir -p "$dist"
+3 -57
View File
@@ -66,7 +66,7 @@ if uses ely-lok; then
echo "bundle.sh: $binary is not code; Frameworks holds only code" >&2
exit 1
fi
done < <(find "$app/Contents/Frameworks" -type f -not -path "*/Chromium Embedded Framework.framework/*")
done < <(find "$app/Contents/Frameworks" -type f)
fi
if uses ely-pdf-engine; then
tessdata=${ELY_TESSDATA:-$root/engines/tessdata}
@@ -84,53 +84,6 @@ if [ "$slug" = ely-tree ]; then
file -b "$binary" | grep -q '^Mach-O' && inner+=("$binary")
done < <(find "$app/Contents/Resources/git" -type f -perm -111)
fi
# Web content apps carry CEF and their bundled pages.
framework=
helpers=()
if grep -q '^ely-web-content' "$root/apps/$slug/Cargo.toml"; then
cef=${ELY_CEF:-$root/engines/cef}
[ -d "$cef/Chromium Embedded Framework.framework" ] || {
echo "bundle.sh: no CEF at $cef; run scripts/fetch-cef.sh" >&2
exit 1
}
mkdir -p "$app/Contents/Frameworks"
framework="$app/Contents/Frameworks/Chromium Embedded Framework.framework"
cp -R "$cef/Chromium Embedded Framework.framework" "$framework"
case $profile in
release) cargo build --manifest-path "$root/Cargo.toml" --release -p ely-web-content --bin ely-web-helper ;;
debug) cargo build --manifest-path "$root/Cargo.toml" -p ely-web-content --bin ely-web-helper ;;
esac
# Chromium looks for these five, named after the app's binary.
for kind in "" " (GPU)" " (Renderer)" " (Plugin)" " (Alerts)"; do
helper="$slug Helper$kind"
contents="$app/Contents/Frameworks/$helper.app/Contents"
mkdir -p "$contents/MacOS"
cp "$root/target/$profile/ely-web-helper" "$contents/MacOS/$helper"
id=$(echo "${slug#ely-}.helper$kind" | tr -d '()' | tr ' ' '.' | tr 'A-Z' 'a-z')
cat >"$contents/Info.plist" <<HELPER
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key><string>$helper</string>
<key>CFBundleIdentifier</key><string>$prefix.$id</string>
<key>CFBundleName</key><string>$helper</string>
<key>CFBundlePackageType</key><string>APPL</string>
<key>CFBundleShortVersionString</key><string>$version</string>
<key>LSMinimumSystemVersion</key><string>14.0</string>
<key>LSUIElement</key><string>1</string>
</dict>
</plist>
HELPER
helpers+=("$app/Contents/Frameworks/$helper.app")
done
content=$root/engines/content/$slug
[ -f "$content/index.html" ] || {
echo "bundle.sh: no page at $content; run its scripts/build-*-content.sh" >&2
exit 1
}
cp -R "$content" "$app/Contents/Resources/content"
fi
"$root/packaging/licenses.sh" "$slug" "$app/Contents/Resources/Licenses"
cat >"$app/Contents/Info.plist" <<PLIST
<?xml version="1.0" encoding="UTF-8"?>
@@ -153,18 +106,11 @@ $("$root/packaging/macos/documents.sh" "$slug")
</plist>
PLIST
# Nested code is signed before the app that holds it.
for target in ${inner[@]+"${inner[@]}"} ${framework:+"$framework"} ${helpers[@]+"${helpers[@]}"} "$app"; do
for target in ${inner[@]+"${inner[@]}"} "$app"; do
if [ "$identity" = - ]; then
codesign --force --sign - "$target"
else
# Hardened runtime: V8 in CEF's helpers needs its entitlements.
entitled=()
case $target in
*" Helper (Renderer).app") entitled=(--entitlements "$root/packaging/macos/entitlements/renderer.plist") ;;
*" Helper (GPU).app") entitled=(--entitlements "$root/packaging/macos/entitlements/gpu.plist") ;;
*" Helper (Plugin).app") entitled=(--entitlements "$root/packaging/macos/entitlements/plugin.plist") ;;
esac
codesign --force --options runtime --timestamp ${entitled[@]+"${entitled[@]}"} --sign "$identity" "$target"
codesign --force --options runtime --timestamp --sign "$identity" "$target"
fi
done
echo "$app"
-7
View File
@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key><true/>
</dict>
</plist>
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
<key>com.apple.security.cs.disable-library-validation</key><true/>
</dict>
</plist>
@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key><true/>
</dict>
</plist>
-11
View File
@@ -65,16 +65,5 @@ if [ "$slug" = ely-tree ] || [ "$slug" = ely-mark ]; then
need "$root/engines/git" "scripts/build-git.sh and scripts/fetch-git-lfs.sh"
cp -R "$root/engines/git" "$out/git"
fi
if uses ely-web-content; then
cef=${ELY_CEF:-$root/engines/cef}
need "$cef/icudtl.dat" scripts/fetch-cef.sh
# CEF's runtime sits beside the app, as cef-dll-sys has it.
find "$cef" -maxdepth 1 -type f \( -name '*.dll' -o -name '*.so' -o -name '*.so.*' -o -name '*.pak' \
-o -name '*.bin' -o -name '*.dat' -o -name '*.json' -o -name chrome-sandbox \) -exec cp {} "$out/" \;
cp -R "$cef/locales" "$out/"
content=$root/engines/content/$slug
need "$content/index.html" "its scripts/build-*-content.sh"
cp -R "$content" "$out/content"
fi
"$root/packaging/licenses.sh" "$slug" "$out/licenses"
echo "$out"