common/desktop-exports: don't dereference target symlink on upgrades #7
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
On install, $SNAP_USER_DATA/.themes is created and points to
$SNAP/usr/share/themes. On upgrade $SNAP_USER_DATA is copied from the previous
dir (eg, 'x1') to the new version (eg, 'x2') such that $SNAP_USER_DATA/.themes
points to the previous version's $SNAP/usr/share/themes. There is logic to
account for this in common/desktop-exports and it tries to:
ln -sf $SNAP/usr/share/themes $SNAP_USER_DATA/.themes
Because $SNAP_USER_DATA/.themes is a valid symlink, it is dereferenced and
tries to create $SNAP/usr/share/themes/themes, which is of course a readonly
directly and fails with:
ln: failed to create symbolic link '.../x2/.themes/themes': Read-only file
system
The script should instead use '-n' so that $SNAP_USER_DATA/.themes is updated
as intended.