Summary
Egg spec's version format is stricter than release-info's
Metadata
- Id: 459133f838e169a8f66862ff7933606c344af770
- Trac id: 1855
- Type: defect
- Reporter: syn
- Owner:
- Cc:
- Status: new
- Component: unknown
- Estimated difficulty:
- Resolution:
- Priority: major
- Milestone: someday
- Version: 5.4.0
- Changetime: 2025-08-14 14:52:45 UTC
- Created: 2025-08-14 14:52:45 UTC
- Keywords:
Description
= Problem =
`chicken-install` strictly validates the `version` property of egg specs (i.e. what goes into `.egg` files) according to the documented format:
Specifies version string for this egg. `STRING` should have the format `<MAJOR>.<MINOR>.<PATCHLEVEL>`, where only the `<MAJOR>` part is mandatory.
However, the same validation does not apply to eggs released through the central egg repository. Here, the version specified in the `.release-info` file is taken verbatim. This means it's not possible to install an egg from a local source directory when its version doesn't match the stricter egg spec format.
= Proposed solution =
Since there are already a lot of egg releases in existence which don't match the egg spec (e.g. `fmt` version `0.8.11.3`), enforcing the same strict format for `.release-info` appears too disruptive a change. Instead, we should make the egg spec's format less strict, effectively allowing any string as version.
= CHICKEN 6 =
For C6, we could still consider enforcing the strict format everywhere.
= Reproduction =
svn checkout https://anonymous@code.call-cc.org/svn/chicken-eggs/release/5/fmt/tags/0.8.11.3 cd 0.8.11.3 csi -e "(write (cons '(version "0.8.11.3") (read)))" < fmt.egg > fmt.egg.new mv fmt.egg.new fmt.egg chicken-install
Output:
Error: egg information item has invalid structure: (version 0.8.11.3)