This commit is contained in:
xiota 2024-04-22 04:39:14 +00:00
commit 19a0bcf74d
3 changed files with 221 additions and 0 deletions

52
.SRCINFO Normal file
View file

@ -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

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
*
!PKGBUILD
!.SRCINFO
!.gitignore

165
PKGBUILD Normal file
View file

@ -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
}