# Maintainer: WithTheBraid # Co-Maintainer: Polarian , Fredy GarcĂ­a # Contributor: Philip Goto pkgbase=flutter _group=flutter groups=("$_group") pkgver=3.19.4 _dartver=3.3.2 _enginever=a5c24f538d05aaf66f7972fb23959d8cafb9f95a _materialfontsver=3012db47f3130e62f7cc0beabff968a33cbec8d8 _gradlewver=fd5c1f2c013565a3bea56ada6df9d2b8e96d56aa _flutterarch=$(uname -m | sed s/aarch64/arm64/ | sed s/x86_64/x64/) pkgrel=14 pkgdesc="A new mobile app SDK to help developers and designers build modern mobile apps for iOS and Android." _pkgdesc="Flutter SDK component" arch=("x86_64" "aarch64") url="https://${_group}.dev" license=("custom" "BSD" "CCPL") makedepends=( "dart>=${_dartver}" "jq" "gradle" "unzip" ) options=("!emptydirs") install="${_group}.install" source=( "${_group}-${pkgver}.tar.xz::https://github.com/${_group}/${_group}/archive/refs/tags/${pkgver/.hotfix/+hotfix}.tar.gz" "system-dart.patch" "gradle-user-home.patch" # thanks to lauren n. liberda from Alpine for the awesome patchset used here ! "${_group}.sh" "version.patch" "no-lock.patch" "no-runtime-download.patch" "doctor.patch" "opt-in-analytics.patch" ) sha256sums=('089f924c72f28d25851382d70db83df83c64746713f6a8ca08879a1530adb8ca' 'd721fc48f534af8f804bb4a9f2cb1d304627a9f73881b3f61d829a9f1e33164f' 'de0d3567d83bd756841b19ccf879efc02749d8a45cf18d94cd71ec1d366c9024' '54db9347ac6467b806fff70f62b2709276a0ca4d82468ae8357d5520db0ad04a' '688a7d6a3c220cf09f7e48af46f1ef1b01d251679962c825eded0b3fa4fc2ab1' '544d08716332a9f9358b21010d468b84a9edff0da7bbb1baf0cf4d6322821ea5' 'a5f19e68e9e4790d017dc4988e715f51c44548df5615aae6106d1a0c84fe49f1' '04531ee1732c18c933b5b28f5da88ed183d5aa3698b1d1e912c000928b93ec91' '1578e819b6ee479b6db7a095bcfa74372d3ff555642c6d6ea7112e97bb6f2027') prepare() { mv "${srcdir}/${_group}-${pkgver/.hotfix/+hotfix}" "${srcdir}/${_group}" patch -p1 -i "${srcdir}/system-dart.patch" -d "${srcdir}/${_group}" patch -p1 -i "${srcdir}/gradle-user-home.patch" -d "${srcdir}/${_group}" patch -p1 -i "${srcdir}/version.patch" -d "${srcdir}/${_group}" patch -p1 -i "${srcdir}/no-lock.patch" -d "${srcdir}/${_group}" patch -p1 -i "${srcdir}/no-runtime-download.patch" -d "${srcdir}/${_group}" patch -p1 -i "${srcdir}/doctor.patch" -d "${srcdir}/${_group}" patch -p1 -i "${srcdir}/opt-in-analytics.patch" -d "${srcdir}/${_group}" echo "${pkgver}" > "${srcdir}/${_group}/version" mkdir -p "${srcdir}/${_group}/bin/cache/artifacts" cat > "${srcdir}/${_group}/bin/cache/flutter.version.json" <=${_dartver}" "clang" "cmake" "ninja" "pkgconf" # base-devel, but runtime dependency # runtime shared libraries "gtk3" "libglvnd" # https://github.com/flutter/engine/pull/16924 ) install -dm755 "${pkgdir}/usr/lib/${_group}/packages/flutter_tools/bin" cp -ra "${srcdir}/${_group}/packages/flutter_tools/bin/tool_backend.sh" "${pkgdir}/usr/lib/${_group}/packages/flutter_tools/bin" cp -ra "${srcdir}/${_group}/packages/flutter_tools/bin/tool_backend.dart" "${pkgdir}/usr/lib/${_group}/packages/flutter_tools/bin" } _package-target-web() { pkgdesc="${_pkgdesc} - web target files" depends=( "${_group}-tool=${pkgver}" "${_group}-engine-web=${pkgver}" ) install -dm755 "${pkgdir}/usr/lib/${_group}/packages/flutter_tools/lib/src/web" cp -ra "${srcdir}/${_group}/packages/flutter_tools/lib/src/web/file_generators" "${pkgdir}/usr/lib/${_group}/packages/flutter_tools/lib/src/web" } _package-target-android() { pkgdesc="${_pkgdesc} - android target files" depends=( "${_group}-tool=${pkgver}" "${_group}-engine-android=${pkgver}" "${_group}-gradle=${pkgver}" ) optdepends=("android-sdk: develop for Android devices" "java-environment: develop for Android devices" ) install -dm755 "${pkgdir}/usr/lib/${_group}/packages/flutter_tools" install -dm755 "${pkgdir}/usr/lib/${_group}/bin/internal" cp -ra "${srcdir}/${_group}/packages/flutter_tools/gradle" "${pkgdir}/usr/lib/${_group}/packages/flutter_tools" install -Dm644 "${srcdir}/${_group}/bin/internal/engine.version" "${pkgdir}/usr/lib/${_group}/bin/internal" install -Dm644 "${srcdir}/${_group}/bin/internal/engine.realm" "${pkgdir}/usr/lib/${_group}/bin/internal" } _package-gradle() { pkgdesc="${_pkgdesc} - gradle wrapper" provides=( "${_group}-gradle=${pkgver}" ) conflicts=( "${_group}-gradle" ) install -dm755 "${pkgdir}/usr/lib/${_group}/bin/cache/artifacts" cp -ra "${srcdir}/${_group}/bin/cache/artifacts/gradle_wrapper" "${pkgdir}/usr/lib/${_group}/bin/cache/artifacts" } _package-tool() { pkgdesc="${_pkgdesc} - CLI tool (for packaging only)" depends=( "${_group}-common=${pkgver}" # TODO: completely compile Flutter tool standalone and drop dependency "dart>=${_dartver}" # commands first "bash" "curl" "file" # base-devel, but runtime dependency "git" "coreutils" # explicit dependency to mkdir, rm "unzip" "which" # base-devel, but runtime dependency "xz" "zip" "glu" # libGLU.so.1 required for flutter test ) install -dm755 "${pkgdir}/usr/lib/${_group}" install -dm755 "${pkgdir}/usr/lib/${_group}/bin/cache" install -dm755 "${pkgdir}/usr/lib/${_group}/packages/flutter_tools/.dart_tool" cp -ra "${srcdir}/${_group}/bin/cache/flutter_tools.snapshot" "${pkgdir}/usr/lib/${_group}/bin/cache/flutter_tools.snapshot" cp -ra "${srcdir}/${_group}/bin/cache/flutter.version.json" "${pkgdir}/usr/lib/${_group}/bin/cache" cp -ra "${srcdir}/${_group}/version" "${pkgdir}/usr/lib/${_group}" cp -ra "${srcdir}/${_group}/packages/flutter_tools/.dart_tool/package_config.json" "${pkgdir}/usr/lib/${_group}/packages/flutter_tools/.dart_tool" install -dm755 "${pkgdir}/usr/bin" install -Dm755 "${srcdir}/${_group}.sh" "${pkgdir}/usr/lib/${_group}/bin/flutter" ln -sf "/usr/lib/flutter/bin/flutter" "${pkgdir}/usr/bin/flutter" } _package-devel() { pkgdesc="${_pkgdesc} - CLI tool (for application development)" depends=( "${_group}-tool=${pkgver}" "dart>=${_dartver}" ) replaces=("${_group}-tool-developer") install -dm755 "${pkgdir}/usr/lib/${_group}" install -dm755 "${pkgdir}/usr/lib/${_group}/packages/flutter_tools" cp -ra "${srcdir}/${_group}/examples" "${pkgdir}/usr/lib/${_group}" cp -ra "${srcdir}/${_group}/packages/flutter_tools/templates" "${pkgdir}/usr/lib/${_group}/packages/flutter_tools" # TODO: patch `flutter create` to run without pub cache cp -ra "${srcdir}/${_group}/pub-cache" "${pkgdir}/usr/lib/${_group}/pub-cache" } _package-intellij-patch() { pkgdesc="${_pkgdesc} - IntelliJ Flutter plugin hotfix" depends=("${_group}-common=${pkgver}") optdepends=( "android-studio" "intellij-idea-community-edition" "intellij-idea-ultimate-edition" ) install -dm755 "${pkgdir}/usr/lib/${_group}/bin/cache" ln -sf "${DART_ROOT:-"/opt/dart-sdk"}/bin/dart" "${pkgdir}/usr/lib/${_group}/bin/dart" # * not my fault grumble * : The IntelliJ Flutter plugin enforces this relative Dart SDK ln -sf "${DART_ROOT:-"/opt/dart-sdk"}" "${pkgdir}/usr/lib/${_group}/bin/cache/dart-sdk" } pkgname=("${_group}" "${_group}-common" "${_group}-gradle" "${_group}-tool" "${_group}-devel" "${_group}-target-linux" "${_group}-target-android" "${_group}-target-web" "${_group}-intellij-patch") for _p in "${pkgname[@]}"; do eval "package_$_p() { $(declare -f "_package${_p#$_group}") _package${_p#$_group} }" done