Files
mail/platform/ohos/scripts/env.sh
T
springmin 8861d4b7f2 ohos: add the OpenHarmony platform host
Tier-3 community port (maintainer: springmin), rebased onto the merged
document-provider abstraction (#84) and the opener seam (#80).

- platform/ohos: Slint backend (XComponent window adapter, software renderer
  with the experimental femtovg/wgpu path, input/IME, clipboard, system
  fonts), the NAPI cdylib that builds a PlatformContext (app-private paths,
  DocumentProvider over the ArkTS pickers, Asset Store credential store,
  loopback OAuth broker, external URL opener, notification publisher) and
  calls flectar_mail::run, the demo crate, the ArkTS shell and the build and
  packaging scripts (bundle name configurable, defaults to
  com.flectar.mail_ohos).
- src/platform/ohos.rs: PDFium directory, renderer name, thread priority,
  preview lifecycle, email font directory; OpenHarmony stays under the
  mobile capability alias.
- patches/fontique + crates/fontique: the Fontconfig opt-out as a patch queue
  applied by the platform/ohos workspace, verified from quality.yml.
- .github/workflows/ohos.yml: manually dispatched tier-3 workflow, unsigned by
  default, signing material only from the FLECTAR_OHOS_* secrets.
- src/documents.rs: run_request blocks the calling thread on mobile hosts;
  the picker covers the window, and keeping the presentation thread idle is
  what OpenHarmony needs (verified on device; desktop keeps the runtime
  request for the native dialog).
- The email renderer and the compose editor load platform::email_font_dir()
  and the Han fallback, so CJK mail bodies and composed text render with the
  platform fonts.
- New-mail notifications: a publisher seam fed by CoreEvent::MailNew; the host
  publishes through @kit.NotificationKit.
2026-10-23 08:42:42 +08:00

35 lines
1.3 KiB
Bash
Executable File

# Environment for building the OHOS platform bits natively on this machine.
#
# Usage:
# . platform/ohos/scripts/env.sh
# cd platform/ohos && cargo build --release -p slint-ohos-demo
#
# NOTE: the login environment already exports `OHOS_SDK` (pointing at an SDK
# *native* subdirectory), so this script deliberately uses OHOS_SDK_ROOT for
# the full SDK root and OHOS_SDK_NATIVE for the native SDK.
#
# The lld from the OHOS SDK needs the SDK's own libxml2: the harmonybrew copy
# lacks the symbols lld imports, so it must not shadow the SDK one.
OHOS_SDK_ROOT="${OHOS_SDK_ROOT:-$HOME/.harmonybrew/opt/ohos-sdk}"
OHOS_SDK_ROOT="${OHOS_SDK_ROOT%/}"
OHOS_SDK_NATIVE="${OHOS_SDK_NATIVE:-$HOME/.harmonybrew/opt/ohos-sdk-native}"
export OHOS_SDK_ROOT OHOS_SDK_NATIVE
case ":$LD_LIBRARY_PATH:" in
*":$OHOS_SDK_ROOT/native/llvm/lib:"*) ;;
*) LD_LIBRARY_PATH="$OHOS_SDK_ROOT/native/llvm/lib:$LD_LIBRARY_PATH" ;;
esac
export LD_LIBRARY_PATH
export HDC="${HDC:-$OHOS_SDK_ROOT/toolchains/hdc}"
export HAP_SIGN_TOOL="${HAP_SIGN_TOOL:-$OHOS_SDK_ROOT/toolchains/lib/hap-sign-tool}"
export HDC_TARGET="${HDC_TARGET:-127.0.0.1:36823}"
# hdc, hap-sign-tool etc. convenience PATH (optional).
case ":$PATH:" in
*":$OHOS_SDK_ROOT/toolchains:"*) ;;
*) PATH="$OHOS_SDK_ROOT/toolchains:$PATH" ;;
esac
export PATH