Bug 223587

Summary: Move AutoInstall registration to requirements.txt files
Product: WebKit Reporter: Sam Sneddon [:gsnedders] <gsnedders>
Component: Tools / TestsAssignee: Sam Sneddon [:gsnedders] <gsnedders>
Status: NEW ---    
Severity: Normal CC: don.olmstead, ews-watchlist, glenn, jbedard, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch gsnedders: review-

Description Sam Sneddon [:gsnedders] 2021-03-22 11:05:17 PDT
For example, instead of having a lot of AutoInstall.register calls in https://github.com/WebKit/WebKit/blob/main/Tools/Scripts/webkitpy/__init__.py, we'd have a AutoInstall.register_requirements(join(basename(__file__), "requirements.txt")) and all the requirements listed in the requirements.txt

Once we're on GitHub, this will allow us to use tools such as dependabot to keep our requirements up-to-date, which will hopefully help us maintain support for the latest Python releases.
Comment 1 Radar WebKit Bug Importer 2021-03-29 11:06:13 PDT
<rdar://problem/75962600>
Comment 2 Sam Sneddon [:gsnedders] 2021-04-06 02:18:39 PDT
pip-tools (https://github.com/jazzband/pip-tools) and pipfile (https://github.com/pypa/pipfile) could be helpful with regards to maintaining knowledge of what we actually depend on versus their dependencies, however both are really intended to be used in environment specific ways (both per platform and per Python version), which doesn't really suit us needing to know ahead of time all possible dependencies.
Comment 3 Jonathan Bedard 2021-04-06 08:32:19 PDT
Since we won't be removing the current single-library-in-Python-code support, we could just keep our special cases in Python. I hope that as we drop Python 2 support, we will have less special cases to worry about.
Comment 4 Sam Sneddon [:gsnedders] 2021-05-20 07:08:43 PDT
Created attachment 429167 [details]
Patch

This is what I get from playing around with pip-tools, but this by no means suffices as it loses Python 2/3 variation and per-platform variation. That said, it does do some to split out our direct dependencies.