From 19a0bcf74d985d66d09d32193571571f60d55481 Mon Sep 17 00:00:00 2001 From: xiota Date: Mon, 22 Apr 2024 04:39:14 +0000 Subject: [PATCH] 3.19.6 --- .SRCINFO | 52 +++++++++++++++++ .gitignore | 4 ++ PKGBUILD | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 221 insertions(+) create mode 100644 .SRCINFO create mode 100644 .gitignore create mode 100644 PKGBUILD diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 0000000000000..5b77afd2d4895 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,52 @@ +pkgbase = flutter-bin + pkgdesc = Cross platform widget toolkit for Dart (monolithic) + pkgver = 3.19.6 + pkgrel = 1 + url = https://github.com/flutter/flutter + arch = x86_64 + license = BSD-3-Clause + license = LicenseRef-Google-Patent-Grant + provides = flutter + provides = flutter-engine + provides = flutter-tool + provides = flutter-target-linux + provides = flutter-target-android + provides = flutter-target-web + conflicts = flutter + conflicts = flutter-common + conflicts = flutter-devel + conflicts = flutter-engine-android-google + conflicts = flutter-engine-android-google-bin + conflicts = flutter-engine-common-google + conflicts = flutter-engine-common-google-bin + conflicts = flutter-engine-linux-google + conflicts = flutter-engine-linux-google-bin + conflicts = flutter-engine-web-google + conflicts = flutter-engine-web-google-bin + conflicts = flutter-gradle + conflicts = flutter-gradle-google + conflicts = flutter-gradle-google-bin + conflicts = flutter-intellij-patch + conflicts = flutter-material-fonts-google + conflicts = flutter-material-fonts-google-bin + conflicts = flutter-sky-engine-google + conflicts = flutter-sky-engine-google-bin + conflicts = flutter-target-android + conflicts = flutter-target-linux + conflicts = flutter-target-web + conflicts = flutter-tool + noextract = flutter-3.19.6.tar.xz + options = !emptydirs + options = !strip + options = !debug + source = flutter-3.19.6.tar.xz::https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.19.6-stable.tar.xz + sha256sums = db6742a20626d0d2a089eb41ad61b9b2138b996679911e9c8268c1f896191f97 + +pkgname = flutter-bin + depends = clang + depends = cmake + depends = git + depends = lld + depends = llvm + depends = ninja + depends = unionfs-fuse diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000..018a3de081444 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +* +!PKGBUILD +!.SRCINFO +!.gitignore diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000000000..4b6b128ccba5b --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,165 @@ +# Maintainer: + +_pkgname="flutter" +pkgname="$_pkgname-bin" +pkgver=3.19.6 +pkgrel=1 +pkgdesc="Cross platform widget toolkit for Dart (monolithic)" +arch=("x86_64") +url="https://github.com/flutter/flutter" +license=("BSD-3-Clause" "LicenseRef-Google-Patent-Grant") + +provides=( + flutter + flutter-engine + flutter-tool + flutter-target-linux + flutter-target-android + flutter-target-web +) +conflicts=( + # Need to conflict with all packages associated with + # aur/flutter and aur/flutter-artifacts-google-bin + # because they somehow interfere with this package. + flutter + flutter-common + flutter-devel + flutter-engine-android-google + flutter-engine-android-google-bin + flutter-engine-common-google + flutter-engine-common-google-bin + flutter-engine-linux-google + flutter-engine-linux-google-bin + flutter-engine-web-google + flutter-engine-web-google-bin + flutter-gradle + flutter-gradle-google + flutter-gradle-google-bin + flutter-intellij-patch + flutter-material-fonts-google + flutter-material-fonts-google-bin + flutter-sky-engine-google + flutter-sky-engine-google-bin + flutter-target-android + flutter-target-linux + flutter-target-web + flutter-tool +) + +_pkgsrc="$_pkgname-$pkgver" +_pkgext="tar.xz" + +options=("!emptydirs" "!strip" "!debug") +noextract=("$_pkgsrc.$_pkgext") + +source=( + "$_pkgsrc.$_pkgext"::"https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_$pkgver-stable.$_pkgext" +) + +sha256sums=( + 'db6742a20626d0d2a089eb41ad61b9b2138b996679911e9c8268c1f896191f97' +) + +prepare() { + _gen_scripts +} + +package() { + depends+=( + clang + cmake + git + lld + llvm + ninja + + # AUR + unionfs-fuse + ) + + install -dm755 "$pkgdir/opt" + bsdtar -xf "$srcdir/$_pkgsrc.$_pkgext" -C "$pkgdir/opt" + + install -Dm755 "flutter_init.sh" "$pkgdir/usr/bin/flutter_init" + install -Dm755 "flutter_dart.sh" "$pkgdir/usr/bin/flutter_dart" + install -Dm755 "flutter.sh" "$pkgdir/usr/bin/flutter" + + install -Dm644 "$pkgdir/opt/flutter/LICENSE" -t "$pkgdir/usr/share/licenses/$pkgname/" + install -Dm644 "$pkgdir/opt/flutter/PATENT_GRANT" -t "$pkgdir/usr/share/licenses/$pkgname/" + + chmod -R u+rwX,go+rX,go-w "$pkgdir" +} + +_gen_scripts() { + cat > flutter_dart.sh << 'END' +#!/usr/bin/env bash + +source /usr/bin/flutter_init + +if ! grep '/usr/bin' <<< "$(which dart)" > /dev/null; then + exec dart "$@" +fi +END + + cat > flutter.sh << 'END' +#!/usr/bin/env bash + +source /usr/bin/flutter_init + +if ! grep '/usr/bin' <<< "$(which flutter)" > /dev/null; then + exec flutter "$@" +fi +END + + cat > flutter_init.sh << 'END' +#!/usr/bin/env bash + +export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}" +APP_DIR="/opt/flutter" +SAVE_DIR="$XDG_CACHE_HOME/flutter_local" +MOUNT_DIR="$XDG_CACHE_HOME/flutter_sdk" + +if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then + echo "$0 should not be executed directly." + exit 1 +fi + +APP_DIR="/opt/flutter" + +if [ ! -e "$APP_DIR" ]; then + echo "flutter-bin is required, but not found." + return 1 +fi + +if ! whereis unionfs-fuse > /dev/null 2>&1; then + echo "unionfs-fuse is required, but not found." + return 1 +fi + +if [ ! -e "$MOUNT_DIR/bin/flutter" ]; then + echo "preparing flutter for use..." + + mkdir -p "$SAVE_DIR" + mkdir -p "$MOUNT_DIR" + + if ! unionfs -o cow -o umask=000 "$SAVE_DIR=RW:$APP_DIR=RO" "$MOUNT_DIR"; then + # probably in clean chroot jail + # copy flutter for use + echo "... unionfs failed, copying to '$MOUNT_DIR'" + rm -rf "$MOUNT_DIR" + cp --reflink=auto -r --preserve=mode,timestamps /opt/flutter "$MOUNT_DIR" + else + echo "... flutter mounted with unionfs." + echo "... unmount when finished: fusermount -u \"$MOUNT_DIR\"" + fi +fi + +if [ -e "$MOUNT_DIR/bin" ]; then + if ! grep "$MOUNT_DIR" <<< "$PATH" > /dev/null; then + export PATH="$MOUNT_DIR/bin:$PATH" + fi +fi + +echo +END +}