pypa / pypa/setuptools

support /usr/local/share/* installation

Open
#807 3 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Needs Triage
Dominant language
Python
Stars
2.9k
Forks
1.4k
Avg merge
1d 1h
Merged PRs (30d)
1

Description

Currently, setuptools supports package installation to /usr/local/bin via entry_points in setup(). For all other files it appears that MANIFEST is recommended, which bundles non-code files into the package distribution directly. This is not useful for resources whose destination pathing is expected by system utilties - such as manual pages under /usr/local/share. This presents a large painpoint. Example: https://github.com/beetbox/beets/issues/1501#issuecomment-110141520

I see value in keeping package files as as discreet as possible, however the current API of entry_points leads to incomplete command line interfaces.

I think it would make sense to introduce support at least two additional parameters:

setup(
    ...
    manuals=['path/to/man.1', 'path/to/man.2'],
    share=['path/to/share/dir']
)

These resources would still be distributed via MANIFEST or package_data, but would now be accompanied by symlinks to the appropriate directories. This is similar to how Homebrew distributes resources out of the Cellar.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing how setup() handles entry_points and how MANIFEST or package_data distribute non-code files. Define the behavior for manuals and share resources, including the expected symlinks under /usr/local/share, and verify that installation produces the intended paths without breaking existing packaging.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.