{
 "app_id": "io.github.rsevero.mapiah",
 "source_url": "https://raw.githubusercontent.com/flathub/io.github.rsevero.mapiah/master/io.github.rsevero.mapiah.yml",
 "runtime": "org.freedesktop.Platform",
 "runtime_version": "24.08",
 "sdk": "org.freedesktop.Sdk",
 "finish_args": [
  "--share=network",
  "--share=ipc",
  "--socket=x11",
  "--socket=wayland",
  "--socket=fallback-x11",
  "--device=dri"
 ],
 "module_count": 7,
 "fetched_at": "2026-09-17T16:12:06.897689+00:00",
 "manifest": {
  "id": "io.github.rsevero.mapiah",
  "runtime": "org.freedesktop.Platform",
  "runtime-version": "24.08",
  "sdk": "org.freedesktop.Sdk",
  "sdk-extensions": [
   "org.freedesktop.Sdk.Extension.llvm19",
   "org.freedesktop.Sdk.Extension.texlive"
  ],
  "command": "mapiah",
  "finish-args": [
   "--device=dri",
   "--env=GIO_USE_PORTAL=1",
   "--env=GTK_USE_PORTAL=1",
   "--env=LD_LIBRARY_PATH=/app/texlive/lib",
   "--env=PATH=/app/bin:/usr/bin",
   "--env=T1FONTS=/app/texlive/texmf-dist/fonts/type1//",
   "--env=TEXFONTMAPS=/app/texlive/texmf-dist/fonts/map/pdftex//:/app/texlive/texmf-dist/fonts/map//:/app/texlive/texmf-var/web2c",
   "--env=TEXFORMATS=/app/texlive/texmf-var/web2c:/app/texlive/texmf-dist/metapost/base",
   "--env=TEXMFCACHE=/var/cache/texmf",
   "--env=TEXMFCNF=/app/texlive/texmf-dist/web2c",
   "--env=TEXMFDIST=/app/texlive/texmf-dist",
   "--env=TEXMFSYSVAR=/app/texlive/texmf-var",
   "--env=TEXMFVAR=/var/cache/texmf",
   "--env=TFMFONTS=/app/texlive/texmf-dist/fonts/tfm//:/app/texlive/texmf-var/fonts/tfm//",
   "--env=VARTEXFONTS=/var/cache/texmf/fonts",
   "--share=ipc",
   "--share=network",
   "--socket=fallback-x11",
   "--socket=wayland"
  ],
  "cleanup": [
   "/share/doc",
   "/share/man",
   "/share/pkgconfig",
   "*.la",
   "*.a"
  ],
  "modules": [
   {
    "name": "proj",
    "buildsystem": "cmake",
    "sources": [
     {
      "type": "archive",
      "url": "https://github.com/OSGeo/PROJ/archive/refs/tags/9.7.1.tar.gz",
      "sha256": "83fb1ccd351331a89b3da69c67aee118ab3a381f15745572c4679b597a17514c"
     }
    ]
   },
   {
    "name": "fmt",
    "buildsystem": "cmake",
    "sources": [
     {
      "type": "archive",
      "url": "https://github.com/fmtlib/fmt/archive/refs/tags/12.1.0.tar.gz",
      "sha256": "ea7de4299689e12b6dddd392f9896f08fb0777ac7168897a244a6d6085043fea"
     }
    ]
   },
   {
    "name": "tclsh-compat",
    "buildsystem": "simple",
    "build-commands": [
     "mkdir -p /app/bin",
     "ln -sf /usr/bin/tclsh8.6 /app/bin/tclsh"
    ]
   },
   {
    "name": "therion",
    "buildsystem": "cmake",
    "builddir": true,
    "config-opts": [
     "-DCMAKE_INSTALL_PREFIX=/app",
     "-DCMAKE_BUILD_TYPE=Release",
     "-DUSE_BUNDLED_CATCH2=ON",
     "-DBUILD_LOCH=OFF",
     "-DBUILD_THBOOK=OFF",
     "-DBUILD_XTHERION=OFF"
    ],
    "sources": [
     {
      "type": "git",
      "url": "https://github.com/therion/therion.git",
      "tag": "v6.3.4",
      "commit": "17059ab27ce491f1edac150da2b7e2011f79b800"
     },
     {
      "type": "patch",
      "path": "flatpak-v634-conditional-components.patch"
     }
    ]
   },
   {
    "name": "mapiah",
    "buildsystem": "simple",
    "build-options": {
     "arch": {
      "x86_64": {
       "env": {
        "BUNDLE_PATH": "build/linux/x64/release/bundle"
       }
      },
      "aarch64": {
       "env": {
        "BUNDLE_PATH": "build/linux/arm64/release/bundle"
       }
      }
     },
     "append-path": "/usr/lib/sdk/llvm19/bin:/var/lib/flutter/bin",
     "prepend-ld-library-path": "/usr/lib/sdk/llvm19/lib",
     "env": {
      "PUB_CACHE": "/run/build/mapiah/.pub-cache"
     }
    },
    "build-commands": [
     "setup-flutter.sh",
     "setup-flutter.sh",
     "flutter build linux --release --no-pub --dart-define=isFlathub=true",
     "install -D $BUNDLE_PATH/mapiah /app/bin/mapiah",
     "cp -r $BUNDLE_PATH/lib /app/bin/lib",
     "cp -r $BUNDLE_PATH/data /app/bin/data",
     "install -Dm644 io.github.rsevero.mapiah.metainfo.xml -t /app/share/metainfo",
     "install -Dm644 packaging/linux/io.github.rsevero.mapiah.desktop -t /app/share/applications",
     "install -Dm644 assets/icons/m-64x64.png /app/share/icons/hicolor/64x64/apps/io.github.rsevero.mapiah.png",
     "install -Dm644 assets/icons/m-128x128.png /app/share/icons/hicolor/128x128/apps/io.github.rsevero.mapiah.png",
     "install -Dm644 assets/icons/m-256x256.png /app/share/icons/hicolor/256x256/apps/io.github.rsevero.mapiah.png",
     "install -Dm644 assets/icons/m-512x512.png /app/share/icons/hicolor/512x512/apps/io.github.rsevero.mapiah.png",
     "# Therion extra tree (equivalent to old Setup/texmf/tex)\nfor d in Setup/texmf/tex setup/texmf/tex therion/Setup/texmf/tex; do\n  if [ -d \"$d\" ]; then\n    install -d /app/texlive/texmf\n    cp -a \"$d\" /app/texlive/texmf/tex\n    break\n  fi\ndone\n"
    ],
    "sources": [
     {
      "type": "git",
      "url": "https://github.com/rsevero/mapiah.git",
      "tag": "v0.3.0",
      "commit": "f4a7c0a0c4984e84f40213c99883bfe23511c597"
     },
     {
      "type": "file",
      "path": "io.github.rsevero.mapiah.metainfo.xml"
     },
     "generated/sources/pubspec.json",
     "generated/sources/pubspec.json"
    ],
    "modules": [
     "generated/modules/flutter-sdk-3.41.3.json"
    ]
   },
   {
    "name": "texlive-mpost-runtime",
    "buildsystem": "simple",
    "build-commands": [
     "install -d /app/texlive/bin /app/texlive/lib /app/texlive/texmf-dist /app/bin",
     "case \"$(uname -m)\" in\n  x86_64) TL_ARCH=\"x86_64-linux\" ;;\n  aarch64) TL_ARCH=\"aarch64-linux\" ;;\n  *) echo \"Unsupported arch: $(uname -m)\" >&2; exit 1 ;;\nesac\n\nTL_ROOT=\"/usr/lib/sdk/texlive\"\nTL_BIN_DIR=\"$TL_ROOT/bin/$TL_ARCH\"\n\n# 1) Binaries\ninstall -Dm755 \"$TL_BIN_DIR/mpost\" \"/app/texlive/bin/mpost.real\"\ninstall -Dm755 \"$TL_BIN_DIR/kpsewhich\" \"/app/texlive/bin/kpsewhich\"\nln -sf /app/texlive/bin/kpsewhich /app/bin/kpsewhich\n\nMKTEXFMT_SRC=\"\"\nif [ -x \"$TL_BIN_DIR/mktexfmt\" ]; then\n  MKTEXFMT_SRC=\"$TL_BIN_DIR/mktexfmt\"\nelif [ -x \"$TL_ROOT/texmf-dist/web2c/mktexfmt\" ]; then\n  MKTEXFMT_SRC=\"$TL_ROOT/texmf-dist/web2c/mktexfmt\"\nelse\n  echo \"Error: mktexfmt not found in TeX Live extension\" >&2\n  exit 1\nfi\ninstall -Dm755 \"$MKTEXFMT_SRC\" \"/app/texlive/bin/mktexfmt\"\nln -sf /app/texlive/bin/mktexfmt /app/bin/mktexfmt\necho \"Installed mktexfmt: $MKTEXFMT_SRC -> /app/bin/mktexfmt\" >&2\n\nMKTEXTFM_SRC=\"\"\nif [ -x \"$TL_BIN_DIR/mktextfm\" ]; then\n  MKTEXTFM_SRC=\"$TL_BIN_DIR/mktextfm\"\nelif [ -x \"$TL_ROOT/texmf-dist/web2c/mktextfm\" ]; then\n  MKTEXTFM_SRC=\"$TL_ROOT/texmf-dist/web2c/mktextfm\"\nelse\n  echo \"Error: mktextfm not found in TeX Live extension\" >&2\n  exit 1\nfi\ninstall -Dm755 \"$MKTEXTFM_SRC\" \"/app/texlive/bin/mktextfm\"\nln -sf /app/texlive/bin/mktextfm /app/bin/mktextfm\necho \"Installed mktextfm: $MKTEXTFM_SRC -> /app/bin/mktextfm\" >&2\n\nMKTEXPK_SRC=\"\"\nif [ -x \"$TL_BIN_DIR/mktexpk\" ]; then\n  MKTEXPK_SRC=\"$TL_BIN_DIR/mktexpk\"\nelif [ -x \"$TL_ROOT/texmf-dist/web2c/mktexpk\" ]; then\n  MKTEXPK_SRC=\"$TL_ROOT/texmf-dist/web2c/mktexpk\"\nelse\n  echo \"Error: mktexpk not found in TeX Live extension\" >&2\n  exit 1\nfi\ninstall -Dm755 \"$MKTEXPK_SRC\" \"/app/texlive/bin/mktexpk\"\nln -sf /app/texlive/bin/mktexpk /app/bin/mktexpk\necho \"Installed mktexpk: $MKTEXPK_SRC -> /app/bin/mktexpk\" >&2\n\nETEX_BIN=\"\"\nif [ -x \"$TL_BIN_DIR/etex\" ]; then\n  install -Dm755 \"$TL_BIN_DIR/etex\" \"/app/texlive/bin/etex.real\"\n  ln -sf /app/texlive/bin/etex.real /app/bin/etex\n  ETEX_BIN=\"$TL_BIN_DIR/etex\"\n  echo \"Installed etex variant: $ETEX_BIN -> /app/bin/etex\" >&2\nelif [ -x \"$TL_BIN_DIR/pdfetex\" ]; then\n  install -Dm755 \"$TL_BIN_DIR/pdfetex\" \"/app/texlive/bin/pdfetex\"\n  ln -sf /app/texlive/bin/pdfetex /app/bin/etex\n  ETEX_BIN=\"$TL_BIN_DIR/pdfetex\"\n  echo \"Installed etex variant: $ETEX_BIN -> /app/bin/etex\" >&2\nelse\n  echo \"Error: neither etex nor pdfetex found in $TL_BIN_DIR\" >&2\n  exit 1\nfi\n\nPDFTEX_BIN=\"\"\nif [ -x \"$TL_BIN_DIR/pdftex\" ]; then\n  install -Dm755 \"$TL_BIN_DIR/pdftex\" \"/app/texlive/bin/pdftex.real\"\n  ln -sf /app/texlive/bin/pdftex.real /app/bin/pdftex\n  PDFTEX_BIN=\"$TL_BIN_DIR/pdftex\"\n  echo \"Installed pdftex variant: $PDFTEX_BIN -> /app/bin/pdftex\" >&2\nelif [ -x \"$TL_BIN_DIR/pdfetex\" ]; then\n  install -Dm755 \"$TL_BIN_DIR/pdfetex\" \"/app/texlive/bin/pdfetex\"\n  ln -sf /app/texlive/bin/pdfetex /app/bin/pdftex\n  PDFTEX_BIN=\"$TL_BIN_DIR/pdfetex\"\n  echo \"Installed pdftex variant: $PDFTEX_BIN -> /app/bin/pdftex\" >&2\nelse\n  echo \"Error: neither pdftex nor pdfetex found in $TL_BIN_DIR\" >&2\n  exit 1\nfi\n\n# mpost wrapper: use regular mode when format files exist; fallback to -ini mode otherwise.\ncat > /app/bin/mpost <<'EOF'\n#!/usr/bin/env sh\nREAL=\"/app/texlive/bin/mpost.real\"\nPLAIN_MP=\"/app/texlive/texmf-dist/metapost/base/plain\"\n\nhas_fmt() {\n  [ -f /app/texlive/texmf-var/web2c/mpost.mem ] || [ -f /app/texlive/texmf-var/web2c/plain.mem ]\n}\n\nif has_fmt; then\n  exec \"$REAL\" \"$@\"\nfi\n\ninput=\"\"\nfor arg in \"$@\"; do\n  case \"$arg\" in\n    -*) ;;\n    *) input=\"$arg\"; break ;;\n  esac\ndone\n\nif [ -n \"$input\" ] && [ -f \"$input\" ]; then\n  job=\"$(basename \"$input\")\"\n  job=\"${job%.mp}\"\n  echo \"Warning: no mpost/ plain .mem found, using -ini fallback\" >&2\n  exec \"$REAL\" -ini -jobname=\"$job\" \"\\\\input ${PLAIN_MP} ; input ${input}\"\nfi\n\nexec \"$REAL\" \"$@\"\nEOF\nchmod 0755 /app/bin/mpost\n\n# 2) Copy texlive-provided private libs linked by bundled binaries\n#    (system libs from runtime are not copied)\nBINARIES_FOR_LIBS=\"$TL_BIN_DIR/mpost $TL_BIN_DIR/kpsewhich\"\nif [ -n \"$ETEX_BIN\" ]; then\n  BINARIES_FOR_LIBS=\"$BINARIES_FOR_LIBS $ETEX_BIN\"\nfi\nif [ -n \"$PDFTEX_BIN\" ]; then\n  BINARIES_FOR_LIBS=\"$BINARIES_FOR_LIBS $PDFTEX_BIN\"\nfi\nfor bin in $BINARIES_FOR_LIBS; do\n  ldd \"$bin\" | awk '{print $3}'\ndone | grep \"^$TL_ROOT/\" | sort -u | while read -r lib; do\n  install -Dm755 \"$lib\" \"/app/texlive/lib/$(basename \"$lib\")\"\ndone\n\n# 3) Requested TeX subtrees for runtime\ninstall -d /app/texlive/texmf-dist/metapost\ncp -a \"$TL_ROOT/texmf-dist/metapost/base\" /app/texlive/texmf-dist/metapost/ || true\n\ninstall -d /app/texlive/texmf-dist/tex/plain\ncp -a \"$TL_ROOT/texmf-dist/tex/plain/base\" /app/texlive/texmf-dist/tex/plain/ || true\n\ninstall -d /app/texlive/texmf-dist/tex/generic\ncp -a \"$TL_ROOT/texmf-dist/tex/generic/pdftex\" /app/texlive/texmf-dist/tex/generic/ || true\n\ninstall -d /app/texlive/texmf-dist/fonts\ncp -a \"$TL_ROOT/texmf-dist/fonts/tfm\" /app/texlive/texmf-dist/fonts/ || true\ncp -a \"$TL_ROOT/texmf-dist/fonts/type1\" /app/texlive/texmf-dist/fonts/ || true\n\n# Make sure Computer Modern Type1 fonts used by pdftex.map are present.\nfind \"$TL_ROOT\" -type f -path '*/fonts/type1/public/amsfonts/cm/*.pfb' | while read -r pfb; do\n  rel=\"${pfb#*fonts/type1/}\"\n  install -Dm644 \"$pfb\" \"/app/texlive/texmf-dist/fonts/type1/$rel\"\ndone\n\n# Prestage full Computer Modern metrics to prevent runtime mktextfm calls.\nfind \"$TL_ROOT\" -type f -path '*/fonts/tfm/public/cm/*.tfm' | while read -r tfm; do\n  rel=\"${tfm#*fonts/tfm/}\"\n  install -Dm644 \"$tfm\" \"/app/texlive/texmf-dist/fonts/tfm/$rel\"\ndone\n\n# Ensure cmss10 metrics are available to avoid runtime mktextfm calls.\nif [ ! -f /app/texlive/texmf-dist/fonts/tfm/public/cm/cmss10.tfm ]; then\n  CMSS10_TFM_SRC=\"$(find \"$TL_ROOT\" -type f -path '*/fonts/tfm/public/cm/cmss10.tfm' | head -n 1 || true)\"\n  if [ -n \"$CMSS10_TFM_SRC\" ] && [ -f \"$CMSS10_TFM_SRC\" ]; then\n    install -Dm644 \"$CMSS10_TFM_SRC\" /app/texlive/texmf-dist/fonts/tfm/public/cm/cmss10.tfm\n    echo \"Installed cmss10.tfm from: $CMSS10_TFM_SRC\" >&2\n  fi\nfi\n\nif [ ! -f /app/texlive/texmf-dist/fonts/tfm/public/cm/cmss10.tfm ]; then\n  echo \"Error: missing cmss10.tfm; runtime would require mktextfm/metafont\" >&2\n  exit 1\nfi\n\nif [ ! -f /app/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmss10.pfb ]; then\n  CMSS10_PFB_SRC=\"$(find \"$TL_ROOT\" -type f -name cmss10.pfb | head -n 1 || true)\"\n  if [ -n \"$CMSS10_PFB_SRC\" ] && [ -f \"$CMSS10_PFB_SRC\" ]; then\n    install -Dm644 \"$CMSS10_PFB_SRC\" /app/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmss10.pfb\n    echo \"Installed cmss10.pfb from: $CMSS10_PFB_SRC\" >&2\n  fi\nfi\n\nif [ ! -f /app/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmss10.pfb ]; then\n  echo \"Error: missing cmss10.pfb required by pdftex.map\" >&2\n  exit 1\nfi\n\ninstall -d /app/texlive/texmf-dist/fonts/map\ncp -a \"$TL_ROOT/texmf-dist/fonts/map/pdftex\" /app/texlive/texmf-dist/fonts/map/ || true\n\n# web2c is still needed for kpathsea defaults\ncp -a \"$TL_ROOT/texmf-dist/web2c\" /app/texlive/texmf-dist/ || true\n\ninstall -d /app/texlive/texmf-var/web2c\n\n# pdfTeX expects a usable font map; provide pdftex.map in web2c as fallback.\nif [ ! -f /app/texlive/texmf-var/web2c/pdftex.map ]; then\n  PDFTEX_MAP_SRC=\"$(find \"$TL_ROOT\" -type f -name pdftex.map | head -n 1 || true)\"\n  if [ -n \"$PDFTEX_MAP_SRC\" ] && [ -f \"$PDFTEX_MAP_SRC\" ]; then\n    install -Dm644 \"$PDFTEX_MAP_SRC\" /app/texlive/texmf-var/web2c/pdftex.map\n    echo \"Installed pdftex.map from: $PDFTEX_MAP_SRC\" >&2\n  fi\nfi\n\nif [ ! -f /app/texlive/texmf-var/web2c/pdftex.map ]; then\n  echo \"Error: unable to provide /app/texlive/texmf-var/web2c/pdftex.map\" >&2\n  exit 1\nfi\n\n# Generate plain.mem with mpost in ini mode.\nif [ ! -f /app/texlive/texmf-var/web2c/plain.mem ]; then\n  (\n    cd /app/texlive/texmf-var/web2c\n    /app/texlive/bin/mpost.real --ini /app/texlive/texmf-dist/metapost/base/plain.mp\n  )\nfi\n\n# Keep the format name expected by MetaPost frontends.\nif [ ! -f /app/texlive/texmf-var/web2c/mpost.mem ] && [ -f /app/texlive/texmf-var/web2c/plain.mem ]; then\n  ln -sf plain.mem /app/texlive/texmf-var/web2c/mpost.mem\nfi\n\n# Ensure etex.fmt is available at runtime to avoid mktexfmt (perl) calls.\nif [ ! -f /app/texlive/texmf-var/web2c/etex.fmt ]; then\n  ETEX_FMT_SRC=\"$(find \"$TL_ROOT\" -type f -name etex.fmt | head -n 1 || true)\"\n  if [ -n \"$ETEX_FMT_SRC\" ] && [ -f \"$ETEX_FMT_SRC\" ]; then\n    install -Dm644 \"$ETEX_FMT_SRC\" /app/texlive/texmf-var/web2c/etex.fmt\n    echo \"Installed etex.fmt from: $ETEX_FMT_SRC\" >&2\n  else\n    ETEX_INI_SRC=\"$(find \"$TL_ROOT/texmf-dist\" -type f -name etex.ini | head -n 1 || true)\"\n    if [ -n \"$ETEX_INI_SRC\" ] && [ -f \"$ETEX_INI_SRC\" ]; then\n      (\n        cd /app/texlive/texmf-var/web2c\n        /app/bin/etex -ini -jobname=etex \"$ETEX_INI_SRC\"\n      )\n      echo \"Generated etex.fmt from: $ETEX_INI_SRC\" >&2\n    fi\n  fi\nfi\n\nif [ ! -f /app/texlive/texmf-var/web2c/etex.fmt ]; then\n  echo \"Error: unable to provide /app/texlive/texmf-var/web2c/etex.fmt\" >&2\n  exit 1\nfi\n\n# Ensure pdftex.fmt is available at runtime.\nif [ ! -f /app/texlive/texmf-var/web2c/pdftex.fmt ]; then\n  PDFTEX_FMT_SRC=\"$(find \"$TL_ROOT\" -type f -name pdftex.fmt | head -n 1 || true)\"\n  if [ -n \"$PDFTEX_FMT_SRC\" ] && [ -f \"$PDFTEX_FMT_SRC\" ]; then\n    install -Dm644 \"$PDFTEX_FMT_SRC\" /app/texlive/texmf-var/web2c/pdftex.fmt\n    echo \"Installed pdftex.fmt from: $PDFTEX_FMT_SRC\" >&2\n  else\n    PDFTEX_INI_SRC=\"$(find \"$TL_ROOT/texmf-dist\" -type f -name pdftex.ini | head -n 1 || true)\"\n    if [ -n \"$PDFTEX_INI_SRC\" ] && [ -f \"$PDFTEX_INI_SRC\" ]; then\n      (\n        cd /app/texlive/texmf-var/web2c\n        /app/bin/pdftex -ini -jobname=pdftex \"$PDFTEX_INI_SRC\"\n      )\n      echo \"Generated pdftex.fmt from: $PDFTEX_INI_SRC\" >&2\n    fi\n  fi\nfi\n\nif [ ! -f /app/texlive/texmf-var/web2c/pdftex.fmt ]; then\n  echo \"Error: unable to provide /app/texlive/texmf-var/web2c/pdftex.fmt\" >&2\n  exit 1\nfi\n\n# 4) Writable cache dirs created at build time (runtime will use XDG cache)\ninstall -d /app/texlive/var /app/texlive/cache\n"
    ],
    "sources": []
   }
  ]
 }
}