Opened 3 years ago

Closed 2 years 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

Description

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 2 years ago.

Download all attachments as: .zip

Change History (4)

comment:1 Changed 2 years ago by Vasilij Schneidermann

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

https://ss64.com/nt/syntax-args.html

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

https://learn.microsoft.com/en-GB/troubleshoot/windows-client/shell-experience/command-line-string-limitation

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

comment:2 Changed 2 years ago by Vasilij Schneidermann

Estimated difficulty: easymedium

Changed 2 years ago by Vasilij Schneidermann

comment:3 Changed 2 years ago by felix winkelmann

Resolution: fixed
Status: newclosed

Fixed in commit a08f8f548d772ef410c672ba33a27108d8d434f3

Note: See TracTickets for help on using tickets.