Renaming a file in a directory declared as a source for a part doesn't trigger a new pull
Metadata
Current evaluation
No evaluation has been recorded for this issue yet.
Issue body
### Bug Description
If for some part `source: src/` is declared and the pull step already ran and I rename `src/foo` to `src/bar`, the pull step is not retriggered. This can cause at best, a missing file in the final snap, and at worst later steps to fail for no obvious reason.
### To Reproduce
Create a snap with a part using `plugin: dump` and `source: src/`, with at least one file in `src/`. Run at least `snapcraft pull`. Rename that file, and rerun the build.
### Environment
Ubuntu 23.10, building with snapcraft latest/edge with `--use-lxd`.
### snapcraft.yaml
```shell
name: my-snap-name # you probably want to 'snapcraft register <name>'
base: core24 # the base snap is the execution environment for this snap
version: '0.1' # just for humans, typically '1.2+git' or '1.3.2'
summary: Single-line elevator pitch for your amazing snap # 79 char long summary
description: |
This is my-snap's description. You have a paragraph or two to tell the
most important story about your snap. Keep it under 100 words though,
we live in tweetspace and your description wants to look good in the snap
store.
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: devmode # use 'strict' once you have the right plugs and slots
parts:
my-part:
# See 'snapcraft plugins'
plugin: dump
source: src/
override-stage: |
craftctl default
[ -e "${CRAFT_STAGE}/foo" ] || exit 1
```
### Relevant log output
```shell
First build:
dilyn@Ares:~/test -> snapcraft
Starting snapcraft, version 8.3.2.post51+git22ba3ae03
Logging execution to '/home/dilyn/.local/state/snapcraft/log/snapcraft-20240818-191843.140066.log'
Launching managed ubuntu 24.04 instance...
Creating instance from base instance
Starting instance
Starting snapcraft, version 8.3.2.post51+git22ba3ae03
Logging execution to '/tmp/snapcraft.log'
Initialising lifecycle
Installing build-packages
Installing build-snaps
Pulling my-part
Building my-part
:: + cp --archive --link --no-dereference . /root/parts/my-part/install
Staging my-part
:: + craftctl default
:: + '[' -e /root/stage/foo ']'
Priming my-part
Packing...
Reading snap metadata...
Running linters...
Running linter: classic
Running linter: library
Creating snap package...
Packed my-snap-name_0.1_amd64.snap
Second build, after mv src/foo src/bar:
dilyn@Ares:~/test -> snapcraft
Starting snapcraft, version 8.3.2.post51+git22ba3ae03
Logging execution to '/home/dilyn/.local/state/snapcraft/log/snapcraft-20240818-192056.040803.log'
Launching managed ubuntu 24.04 instance...
Starting instance
Starting snapcraft, version 8.3.2.post51+git22ba3ae03
Logging execution to '/tmp/snapcraft.log'
Initialising lifecycle
Installing build-packages
Installing build-snaps
Skipping pull for my-part (already ran)
Skipping build for my-part (already ran)
Skipping stage for my-part (already ran)
Skipping prime for my-part (already ran)
Packing...
Reading snap metadata...
Running linters...
Running linter: classic
Running linter: library
Creating snap package...
Packed my-snap-name_0.1_amd64.snap
```
### Additional context
This is a hard problem to solve :)
Evaluation history
No evaluation history available.