diff options
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 191 |
1 files changed, 144 insertions, 47 deletions
@@ -12,28 +12,12 @@ _flutterarch=$(uname -m | sed s/aarch64/arm64/ | sed s/x86_64/x64/) # this host is blocked in China, according to Flutter docs, the FLUTTER_STORAGE_BASE_URL environment variable # should be used to provide an alternative mirror _storagebase="${FLUTTER_STORAGE_BASE_URL:-"https://storage.googleapis.com"}" -pkgrel=7 +pkgrel=8 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://${pkgbase}.dev" license=("custom" "BSD" "CCPL") -depends=( - # instead of bundled Gradle Wrapper - "gradle" - # 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" - # runtime shared libraries - "libglvnd" # https://github.com/flutter/engine/pull/16924 -) makedepends=( "dart>=${_dartver}" "jq" @@ -328,15 +312,11 @@ _package() { } _package-common() { - pkgdesc="${_pkgdesc} - common files" - depends=( - "glu" # libGLU.so.1 required for flutter test - ) + pkgdesc="${_pkgdesc} - common SDK files and pub cache" install -Dm644 "${srcdir}/${pkgbase}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgbase}/LICENSE" install -dm755 "${pkgdir}/usr/lib/${pkgbase}" - install -dm755 "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/engine" install -dm755 "${pkgdir}/usr/lib/${pkgbase}/packages/flutter" install -dm755 "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_driver" install -dm755 "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_goldens" @@ -346,10 +326,6 @@ _package-common() { install -dm755 "${pkgdir}/usr/lib/${pkgbase}/packages/fuchsia_remote_debug_protocol" install -dm755 "${pkgdir}/usr/lib/${pkgbase}/packages/integration_test" - cp -ra "${srcdir}/${pkgbase}/bin/cache/artifacts/engine/common" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/engine/common" - cp -ra "${srcdir}/${pkgbase}/bin/cache/artifacts/material_fonts" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/material_fonts" - cp -ra "${srcdir}/${pkgbase}/bin/cache/pkg" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/pkg" - cp -ra "${srcdir}/${pkgbase}/packages/flutter/"{pubspec.yaml,lib} "${pkgdir}/usr/lib/${pkgbase}/packages/flutter" cp -ra "${srcdir}/${pkgbase}/packages/flutter_driver/"{pubspec.yaml,lib} "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_driver" cp -ra "${srcdir}/${pkgbase}/packages/flutter_goldens/"{pubspec.yaml,lib} "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_goldens" @@ -358,57 +334,163 @@ _package-common() { cp -ra "${srcdir}/${pkgbase}/packages/flutter_web_plugins/"{pubspec.yaml,lib} "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_web_plugins" cp -ra "${srcdir}/${pkgbase}/packages/fuchsia_remote_debug_protocol/"{pubspec.yaml,lib} "${pkgdir}/usr/lib/${pkgbase}/packages/fuchsia_remote_debug_protocol" cp -ra "${srcdir}/${pkgbase}/packages/integration_test/"{pubspec.yaml,lib} "${pkgdir}/usr/lib/${pkgbase}/packages/integration_test" +} + +_package-engine-common-google-bin() { + pkgdesc="${_pkgdesc} - common engine files" + depends=( + "${pkgbase}-common" + "${pkgbase}-sky-engine" + "${pkgbase}-material-fonts" + ) + provides=( + "${pkgbase}-engine-common" + ) + conflicts=( + "${pkgbase}-engine-common" + ) + + install -dm755 "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/engine" + install -dm755 "${pkgdir}/usr/lib/${pkgbase}/bin/internal" + + cp -ra "${srcdir}/${pkgbase}/bin/cache/artifacts/engine/common" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/engine/common" + + install -Dm644 "${srcdir}/${pkgbase}/bin/internal/engine.version" "${pkgdir}/usr/lib/${pkgbase}/bin/internal/engine.version" + install -Dm644 "${srcdir}/${pkgbase}/bin/internal/engine.realm" "${pkgdir}/usr/lib/${pkgbase}/bin/internal/engine.realm" + +} + +_package-sky-engine-google-bin() { + pkgdesc="${_pkgdesc} - sky-engine" + depends=( + "${pkgbase}-common" + ) + provides=( + "${pkgbase}-sky-engine" + ) + conflicts=( + "${pkgbase}-sky-engine" + ) + + install -dm755 "${pkgdir}/usr/lib/${pkgbase}" + install -dm755 "${pkgdir}/usr/lib/${pkgbase}/bin/cache" cp -ra "${srcdir}/${pkgbase}/bin/cache/pkg" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/pkg" - cp -ra "${srcdir}/${pkgbase}/pub-cache" "${pkgdir}/usr/lib/${pkgbase}/pub-cache" +} + +_package-material-fonts() { + pkgdesc="${_pkgdesc} - material fonts" + depends=( + "${pkgbase}-common" + ) + + install -dm755 "${pkgdir}/usr/lib/${pkgbase}" + install -dm755 "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts" + + cp -ra "${srcdir}/${pkgbase}/bin/cache/artifacts/material_fonts" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/material_fonts" } _package-target-linux() { pkgdesc="${_pkgdesc} - linux target files" depends=( "${pkgbase}-tool" + "${pkgbase}-engine-linux" + "dart>=${_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/${pkgbase}/bin/cache/artifacts/engine" install -dm755 "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools/bin" + cp -ra "${srcdir}/${pkgbase}/packages/flutter_tools/bin/tool_backend.sh" "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools/bin" + cp -ra "${srcdir}/${pkgbase}/packages/flutter_tools/bin/tool_backend.dart" "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools/bin" +} + +_package-engine-linux-google-bin() { + pkgdesc="${_pkgdesc} - linux engine" + depends=( + "${pkgbase}-engine-common" + ) + provides=( + "${pkgbase}-engine-linux" + ) + conflicts=( + "${pkgbase}-engine-linux" + ) + + install -dm755 "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/engine" + cp -ra "${srcdir}/${pkgbase}/bin/cache/artifacts/engine/linux-${_flutterarch}" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/engine" cp -ra "${srcdir}/${pkgbase}/bin/cache/artifacts/engine/linux-${_flutterarch}-profile" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/engine" cp -ra "${srcdir}/${pkgbase}/bin/cache/artifacts/engine/linux-${_flutterarch}-release" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/engine" - - cp -ra "${srcdir}/${pkgbase}/packages/flutter_tools/bin/tool_backend.sh" "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools/bin" - cp -ra "${srcdir}/${pkgbase}/packages/flutter_tools/bin/tool_backend.dart" "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools/bin" } _package-target-web() { pkgdesc="${_pkgdesc} - web target files" - depends=("${pkgbase}-tool") + depends=( + "${pkgbase}-tool" + "${pkgbase}-engine-web" + ) + + install -dm755 "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools/lib/src/web" + + cp -ra "${srcdir}/${pkgbase}/packages/flutter_tools/lib/src/web/file_generators" "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools/lib/src/web" +} +_package-engine-web-google-bin() { + pkgdesc="${_pkgdesc} - web engine" + depends=( + "${pkgbase}-engine-common" + ) + provides=( + "${pkgbase}-engine-web" + ) + conflicts=( + "${pkgbase}-engine-web" + ) install -dm755 "${pkgdir}/usr/lib/${pkgbase}/bin/cache" - install -dm755 "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools/lib/src/web" cp -ra "${srcdir}/${pkgbase}/bin/cache/flutter_web_sdk" "${pkgdir}/usr/lib/${pkgbase}/bin/cache" - cp -ra "${srcdir}/${pkgbase}/packages/flutter_tools/lib/src/web/file_generators" "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools/lib/src/web" } _package-target-android() { pkgdesc="${_pkgdesc} - android target files" - depends=("${pkgbase}-tool") + depends=( + "${pkgbase}-tool" + "${pkgbase}-engine-android" + ) optdepends=("android-sdk: develop for Android devices" "java-environment: develop for Android devices" ) + install -dm755 "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts" + install -dm755 "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools" + + cp -ra "${srcdir}/${pkgbase}/bin/cache/artifacts/gradle_wrapper" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts" + cp -ra "${srcdir}/${pkgbase}/packages/flutter_tools/gradle" "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools" +} + + +_package-engine-android-google-bin() { + pkgdesc="${_pkgdesc} - android engine" + depends=( + "${pkgbase}-engine-common" + ) + provides=( + "${pkgbase}-engine-android" + ) + conflicts=( + "${pkgbase}-engine-android" + ) install -dm755 "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/engine" - install -dm755 "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools" - install -dm755 "${pkgdir}/usr/lib/${pkgbase}/bin/internal" cp -ra "${srcdir}/${pkgbase}/bin/cache/artifacts/engine/android-arm" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/engine" cp -ra "${srcdir}/${pkgbase}/bin/cache/artifacts/engine/android-arm-release" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/engine" @@ -424,17 +506,26 @@ _package-target-android() { cp -ra "${srcdir}/${pkgbase}/bin/cache/artifacts/engine/android-x86" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/engine" cp -ra "${srcdir}/${pkgbase}/bin/cache/artifacts/engine/android-x86-jit-release" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts/engine" - - cp -ra "${srcdir}/${pkgbase}/bin/cache/artifacts/gradle_wrapper" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/artifacts" - cp -ra "${srcdir}/${pkgbase}/packages/flutter_tools/gradle" "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools" - - install -Dm644 "${srcdir}/${pkgbase}/bin/internal/engine.version" "${pkgdir}/usr/lib/${pkgbase}/bin/internal/engine.version" - install -Dm644 "${srcdir}/${pkgbase}/bin/internal/engine.realm" "${pkgdir}/usr/lib/${pkgbase}/bin/internal/engine.realm" } _package-tool() { pkgdesc="${_pkgdesc} - CLI tool (for packaging only)" - depends=("${pkgbase}-common") + depends=( + "${pkgbase}-common" + # 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/${pkgbase}" @@ -454,14 +545,20 @@ _package-tool() { _package-devel() { pkgdesc="${_pkgdesc} - CLI tool (for application development)" - depends=("${pkgbase}-tool") - + depends=( + "${pkgbase}-tool" + "dart>=${_dartver}" + ) + replaces=("${pkgbase}-tool-developer") install -dm755 "${pkgdir}/usr/lib/${pkgbase}" install -dm755 "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools" cp -ra "${srcdir}/${pkgbase}/examples" "${pkgdir}/usr/lib/${pkgbase}" cp -ra "${srcdir}/${pkgbase}/packages/flutter_tools/templates" "${pkgdir}/usr/lib/${pkgbase}/packages/flutter_tools" + + # TODO: patch `flutter create` to run without pub cache + cp -ra "${srcdir}/${pkgbase}/pub-cache" "${pkgdir}/usr/lib/${pkgbase}/pub-cache" } _package-intellij-patch() { @@ -480,7 +577,7 @@ _package-intellij-patch() { ln -sf "${DART_ROOT:-"/opt/dart-sdk"}" "${pkgdir}/usr/lib/${pkgbase}/bin/cache/dart-sdk" } -pkgname=("${pkgbase}" "${pkgbase}-tool" "${pkgbase}-devel" "${pkgbase}-target-linux" "${pkgbase}-common" "${pkgbase}-target-android" "${pkgbase}-target-web" "${pkgbase}-intellij-patch") +pkgname=("${pkgbase}" "${pkgbase}-common" "${pkgbase}-engine-common-google-bin" "${pkgbase}-engine-linux-google-bin" "${pkgbase}-engine-web-google-bin" "${pkgbase}-engine-android-google-bin" "${pkgbase}-sky-engine-google-bin" "${pkgbase}-material-fonts" "${pkgbase}-tool" "${pkgbase}-devel" "${pkgbase}-target-linux" "${pkgbase}-target-android" "${pkgbase}-target-web" "${pkgbase}-intellij-patch") for _p in "${pkgname[@]}"; do eval "package_$_p() { |