canonical / canonical/chisel

allow multiple slices with the same content paths to co-exist within the same Chisel release

Open
#50 7 comments 3 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
424
Forks
65
Avg merge
12d 19h
Merged PRs (30d)
1

Description

### Diffs between `dotnet-host-7.0` and `dotnet-host` SDFs

```
package: dotnet-host-7.0 | package: dotnet-host
slices: slices:
bins: bins:
essential: essential:
- libc6_libs - libc6_libs
- libgcc-s1_libs - libgcc-s1_libs
- libstdc++6_libs - libstdc++6_libs
contents: contents:
/usr/lib/dotnet/dotnet: /usr/lib/dotnet/dotnet:
```

### Problem

By design, Chisel is currently looking at the entire Chisel release to catch any conflicts [1]. The reason why it was designed this way was to cope with people doing `/usr/lib/*` in their slices, thus avoiding the produced outputs from growing unbounded as fat packages change.

In practice, this means that even if we’re just installing .NET7, Chisel will still complain about conflicts with .NET6, even though it is not targeted. And that’s because `dotnet-host-7.0` and `dotnet-host` both have the same content path.

### Reproduce

Copy the two SDFs from above, into an existing chisel-release (tested with `kinetic`), as `slices/dotnet-host-7.0.yaml` and `slices/dotnet-host.yaml`, respectively.

Then run

```bash
$ chisel cut --release ./ --root rootfs base-files_base
```

And you’ll get

> 2023/02/03 12:36:33 Processing ./ release...
> error: slices dotnet-host_bins and dotnet-host-7.0_bins conflict on /usr/lib/dotnet/dotnet

**Chisel version:** https://github.com/canonical/chisel/tree/bd27f8700cd7d2a6b4e0df6b10c3761c83a70485

### Refs

[1] https://github.com/canonical/chisel/blob/main/internal/setup/setup.go#L154

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.