Opened 2 years ago

Closed 21 months ago

#1800 closed defect (fixed)

chicken-install fails installing eggs when encountering truncated/empty .egg-info files

Reported by: Vasilij Schneidermann Owned by:
Priority: major Milestone: someday
Component: core tools Version: 5.3.0
Keywords: chicken-install Cc:
Estimated difficulty: medium


When installing eggs with {{chicken-install}}, it checks for already installed files by walking over all installed .egg-info files with {{matching-installed-files}} and {{load-egg-info}}. If one of these .egg-info files cannot be {{read}}, the whole installation process aborts. A similar phenomenon applies to {{chicken-uninstall}} with {{remove-extension}} and {{load-egg-info}}. The user must therefore manually delete all affected egg files to have a working set of eggs again.

Two proposals:

  • Considering that the {{egg-info}} files are some sort of database, there should be a consistency check to ensure their integrity when installing/removing eggs.
  • If installing/removing eggs comes across a malformed {{egg-info}} file, it should display a warning and skip processing it. Maybe even suggest a manual uninstallation.

As for why these truncations happen, no idea. I've observed one such case with egg installation of srfi-27 and math on Windows, presumably due to maximum command length limits.

Attachments (1)

0001-Split-up-potentially-long-echo-invocation-on-win32.patch (1.1 KB) - added by Vasilij Schneidermann 21 months ago.

Download all attachments as: .zip

Change History (4)

comment:1 Changed 22 months ago by Vasilij Schneidermann

I've finally stumbled upon a documented limitation of 8191 characters in cmd.exe:

The maximum length of any command line (or variable) within CMD is 8191 characters.

The maximum length of the string that you can use at the command prompt is 8191 characters.

comment:2 Changed 22 months ago by Vasilij Schneidermann

Estimated difficulty: easymedium

Changed 21 months ago by Vasilij Schneidermann

comment:3 Changed 21 months ago by felix winkelmann

Resolution: fixed
Status: newclosed

Fixed in commit a08f8f548d772ef410c672ba33a27108d8d434f3

Note: See TracTickets for help on using tickets.