I’m trying to make a snap for my application that coexists out of 3 flutter app with a dotnet dependendecy, when I try to run snapcraft prime --use-lxd
it seems to hang on check if part websocket:STEP.pull is outdated (33560.4s)
To me to it looks like it’s stuck in some kind of infinite loop where it’s recursivly checking the websockets and packages sub parts. I tried adding some dummy parts just to kinda guide the order of execution but didn’t really help much.
Any thoughts?
name: test
summary: ...
description: ...
confinement: strict
base: core22
grade: stable
version: "1"
architectures:
- build-on: amd64
apps:
a:
command: /usr/share/a/app
plugs:
- network
- home
b:
command: /usr/share/b/app
plugs:
- network
- home
c:
command: /usr/share/c/app
plugs:
- network
- home
parts:
source:
plugin: nil
source: https://github.com/flutter/flutter.git
source-type: "git"
source-depth: 1
source-branch: "master"
build-packages: [clang, cmake, git, ninja-build, pkg-config, libgtk-3-dev, liblzma-dev, curl, unzip]
stage-packages: [libgtk-3-0, libblkid1, liblzma5]
override-pull: |
craftctl default
git fetch --unshallow
PATH="$CRAFT_PART_SRC/bin:$PATH" flutter doctor
PATH="$CRAFT_PART_SRC/bin:$PATH" flutter channel master
PATH="$CRAFT_PART_SRC/bin:$PATH" flutter precache
override-build: |
set -eux
mkdir -p $CRAFT_PART_INSTALL/usr/bin
mkdir -p $CRAFT_PART_INSTALL/usr/libexec
cp -r $CRAFT_PART_SRC $CRAFT_PART_INSTALL/usr/libexec/flutter
ln -sf $CRAFT_PART_INSTALL/usr/libexec/flutter/bin/flutter $CRAFT_PART_INSTALL/usr/bin/flutter
ln -sf $CRAFT_PART_INSTALL/usr/libexec/flutter/bin/dart $CRAFT_PART_INSTALL/usr/bin/dart
export PATH="$CRAFT_PART_INSTALL/usr/bin:$PATH"
override-prime: ""
packages:
source: packages
source-type: local
plugin: nil
build-packages: [rsync]
override-pull: |
echo "$(pwd)"
rsync -r --exclude snap --exclude .git --exclude .vs --exclude .plugin_symlinks --exclude TestResults --exclude releases --exclude .dart_tool --exclude .vscode --exclude node_modules --exclude build $SNAPCRAFT_PROJECT_DIR/packages/* $SNAPCRAFT_PART_SRC/
override-build: |
rsync -r $SNAPCRAFT_PART_SRC/* $SNAPCRAFT_PART_INSTALL
override-stage: ""
override-prime: ""
websocket:
source: websocket
source-type: local
plugin: nil
build-packages: [rsync]
override-pull: |
rsync -r --exclude snap --exclude .git --exclude .vs --exclude .plugin_symlinks --exclude TestResults --exclude releases --exclude .dart_tool --exclude .vscode --exclude node_modules --exclude build $SNAPCRAFT_PROJECT_DIR/websocket/* $SNAPCRAFT_PART_SRC/
override-build: |
rsync -r $SNAPCRAFT_PART_SRC/* $SNAPCRAFT_PART_INSTALL
override-stage: ""
override-prime: ""
dummy:
plugin: nil
build-packages: [rsync]
build-snaps: [ yq ]
stage-packages: [dotnet-sdk-6.0, dotnet-runtime-6.0]
after: [source, packages, websocket]
override-pull: ""
override-build: ""
override-prime: ""
a:
source: a_src
source-type: local
plugin: nil
after: [dummy]
override-pull: |
mkdir -p packages
mkdir -p a_src
mkdir -p websocket
rsync -r ~/parts/websocket/install/* $SNAPCRAFT_PART_SRC/websocket
rsync -r ~/parts/packages/install/* $SNAPCRAFT_PART_SRC/packages
rsync -r --exclude snap --exclude .git --exclude .vs --exclude .plugin_symlinks --exclude TestResults --exclude releases --exclude .dart_tool --exclude .vscode --exclude node_modules --exclude build $SNAPCRAFT_PROJECT_DIR/a_src/* $SNAPCRAFT_PART_SRC/a_src
#craftctl default
cd a_src
flutter clean
flutter pub get
override-build: |
craftctl default
cd a_src
flutter build linux
rsync --mkpath -r build/linux/x64/release/bundle/* $SNAPCRAFT_PART_INSTALL/usr/share/a
override-stage: |
rsync –-ignore-existing -r $SNAPCRAFT_PART_INSTALL/* $SNAPCRAFT_STAGE
b:
source: b_src
source-type: local
plugin: nil
after: [dummy]
override-pull: |
mkdir -p packages
mkdir -p b_src
mkdir -p websocket
rsync -r ~/parts/websocket/install/* $SNAPCRAFT_PART_SRC/websocket
rsync -r ~/parts/packages/install/* $SNAPCRAFT_PART_SRC/packages
rsync -r --exclude snap --exclude .git --exclude .vs --exclude .plugin_symlinks --exclude TestResults --exclude releases --exclude .dart_tool --exclude .vscode --exclude node_modules --exclude build $SNAPCRAFT_PROJECT_DIR/b_src/* $SNAPCRAFT_PART_SRC/b_src
#craftctl default
cd b_src
flutter pub get
override-build: |
craftctl default
cd b_src
flutter build linux
rsync --mkpath -r build/linux/x64/release/bundle/* $SNAPCRAFT_PART_INSTALL/usr/share/b
override-stage: |
rsync –-ignore-existing -r $SNAPCRAFT_PART_INSTALL/* $SNAPCRAFT_STAGE
c:
source: c_src
source-type: local
plugin: nil
after: [dummy]
override-pull: |
mkdir -p packages
mkdir -p c_src
mkdir -p websocket
rsync -r ~/parts/websocket/install/* $SNAPCRAFT_PART_SRC/websocket
rsync -r ~/parts/packages/install/* $SNAPCRAFT_PART_SRC/packages
rsync -r --exclude snap --exclude .git --exclude .vs --exclude .plugin_symlinks --exclude TestResults --exclude releases --exclude .dart_tool --exclude .vscode --exclude node_modules --exclude build $SNAPCRAFT_PROJECT_DIR/c_src/* $SNAPCRAFT_PART_SRC/c_src
#craftctl default
cd c_src
flutter clean
flutter pub get
override-build: |
craftctl default
cd c_src
flutter build linux
rsync --mkpath -r build/linux/x64/release/bundle/* $SNAPCRAFT_PART_INSTALL/usr/share/c
override-stage: |
rsync –-ignore-existing -r $SNAPCRAFT_PART_INSTALL/* $SNAPCRAFT_STAGE
test:
after: [a, c, b]
plugin: nil