Files
soubarnak ea7be5f111 feat(identity): rename user-visible identity to voculinux with one-time legacy import
The fork takes its own name everywhere a user can see it: binaries
(voculinux, voculinux-gui), desktop entry, autostart, tray, D-Bus
namespace (com.voculinux.Voculinux, no alias for the old name),
config/data/cache dirs, single-instance lock, IBus engine identity,
tray icons, resource prefixes, VOCULINUX_* environment names, and the
update-checker user agent. The internal Python module stays vocalinux
and the distribution metadata keeps the upstream URLs as provenance.

On first run a previous Vocalinux install's config.json, custom
dictionary, and portal restore token are copied once into the new
locations (new config always wins, no merge, no write-back); models
re-resolve through the pinned-checksum download path. An offline
naming-sweep test proves no old-name strings remain on user-visible
surfaces outside the allowlist.

Refs #18
2026-11-06 01:29:39 +05:30

50 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Id for the reusable pywhispercpp Vulkan build.
#
# That compile depends on the base image (glibc, and the toolchain apt installs
# from it), every pin in tool_checksums.txt, the cmake/ninja pins in
# requirements/appimage-tools.txt, the Vulkan flags in build.sh, and the
# pywhispercpp sdist install.sh names. It does not depend on the rest of the
# Voculinux sources, so this id ignores the git commit and the Actions run id
# on purpose: putting either in the cache key would rebuild on every push.
set -euo pipefail
here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
repo="$(cd "$here/../.." && pwd)"
pins="${VOCULINUX_PINS:-$repo/packaging/appimage/tool_checksums.txt}"
install_sh="${VOCULINUX_INSTALL_SH:-$repo/install.sh}"
tools="${VOCULINUX_APPIMAGE_TOOLS:-$repo/requirements/appimage-tools.txt}"
build_sh="${VOCULINUX_BUILD_SH:-$repo/packaging/appimage/build.sh}"
base="$(awk '$1=="base-image" {print $3; exit}' "$pins")"
if [ -z "$base" ]; then
echo "No base-image pin in $pins" >&2
exit 1
fi
pywhispercpp="$(sed -n 's/^PYWHISPERCPP_VERSION="\([^"]*\)"/\1/p' "$install_sh" | head -n1)"
if [ -z "$pywhispercpp" ]; then
echo "Could not read PYWHISPERCPP_VERSION from $install_sh" >&2
exit 1
fi
if [ ! -f "$tools" ]; then
echo "No AppImage build-tool pins at $tools" >&2
exit 1
fi
# Cache revision for the native flags. Hashing those lines, not all of
# build.sh, misses the cache when the compile changes and hits when a comment
# elsewhere in the script changes.
flags="$(awk '/GGML_VULKAN=1/ || /CMAKE_ARGS=/ { print }' "$build_sh")"
if ! printf '%s\n' "$flags" | grep -q 'GGML_VULKAN=1'; then
echo "Could not read the Vulkan compile flags from $build_sh" >&2
exit 1
fi
if ! printf '%s\n' "$flags" | grep -q 'CMAKE_ARGS='; then
echo "Could not read CMAKE_ARGS from $build_sh" >&2
exit 1
fi
pins_hash="$(sha256sum "$pins" | awk '{print $1}')"
tools_hash="$(sha256sum "$tools" | awk '{print $1}')"
printf '%s\n%s\n%s\n%s\n%s\n' \
"$base" "$pins_hash" "$pywhispercpp" "$tools_hash" "$flags" \
| sha256sum | awk '{print $1}'