I am trying to build a snapcraft for my application. It's my first time using snapcraft. The app contains three 'applications' and I can get the point of running the stage for an individual part i.e. snapcraft stage a --use-lxd
, but on when I try to run them combined i.e. snapcraft prime --use-lxd
the build get's stuck on some 2023-01-08 16:22:11.505 check if Part('websocket'):Step.PULL is outdated \ (31013.8s)
I've tried building the individual parts prior to running a snapcraft prime
command and they succeed without noticable errors, so I don't really understand why it doesn't just skip the stages.
I feel like whatever is trying to check if the pull is out of date is in some kind of infinite directory recursion because even after 31305.6s it still hasn't processed. Any thoughts where I can improve my snapcraft?
name: testsummary: ...description: ...confinement: strictbase: core22grade: stableversion: "1"architectures: - build-on: amd64apps: 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 - homeparts: 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