mix mob.release.openssl (mob_dev v0.5.3)

Copy Markdown View Source

Drives the OpenSSL cross-compile + the OTP crypto NIF static archive for one target — replaces running scripts/release/openssl/<plat>.sh and scripts/release/openssl/build_crypto_static_<plat>.sh in sequence.

mix mob.release.openssl android_arm64    # one target
mix mob.release.openssl android_arm32
mix mob.release.openssl ios_sim
mix mob.release.openssl ios_device
mix mob.release.openssl all              # all four, sequentially

What runs

For each target:

  1. MobDev.Release.OpenSSL.build/2 — cross-compile OpenSSL 3.x, produces <prefix>/lib/libcrypto.a + headers.
  2. MobDev.Release.OpenSSL.CryptoNif.build/2 — compile OTP's crypto NIF C sources with -DSTATIC_ERLANG_NIF, archive as <otp_src>/lib/crypto/priv/lib/<arch>/crypto.a, verify the crypto_nif_init symbol is exported.

Both steps are required for the release tarball (handled in iter 4 by mix mob.release.tarball); this task just produces the two artefacts and stops.

Options

  • --openssl-src PATH — OpenSSL source checkout. Default: $OPENSSL_SRC env or ~/code/openssl.
  • --otp-src PATH — OTP source checkout. Default: $OTP_SRC env or ~/code/otp.
  • --prefix PATH — OpenSSL install prefix. Default per-target: /tmp/openssl-<target>.
  • --ndk-root PATH — Android NDK root (Android targets only). Default: ~/Library/Android/sdk/ndk/<recommended-version>.

Errors

Failure produces a tagged MobDev.Release.Errors tuple formatted via Mix.raise/1. Common failure modes:

  • precondition failed — OPENSSL_SRC missing — clone openssl/openssl
  • precondition failed — Android NDK not at <path> — check NDK install
  • precondition failed — iOS iphonesimulator SDK not available — run xcode-select --install
  • command failed (exit N) — actual tool error, output in the raised message