mapbox / mapbox/mason

Mason wishlist

Open
#187 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
258
Forks
68
PR merge metrics
No merged PRs in 30d

Description

This ticket collects things we want to change about mason in a system redesign:
- **Split building packages from using them**: There should be two parts of the system, one that knows how to build a package, and the other how to use them. The latter is ideally very small/lightweight. #186 #176
- **Cross compiler installation**: We want to be able to install Mason packages that contain a cross-compiler (e.g. for Android, or upgrading Clang on Travis). In that case, the cross compiler needs a standard way to supply all of the environment variables.
- **Share packages system-wide**: Some packages are very large, e.g. compilers with their associated sysroot, so having them installed into every project fills up the disk pretty fast. Instead, we could install them into `/usr/local/mason/...`, make them read-only use use the packages from this
location.
- **Support for multiple C++ ABIs**: Our C++ packages can be compiled against multiple ABIs, and they're incompatible. Packages that expose a C++ interface (e.g. Boost, GeoJSON-VT) should include the stdlib version slug in their package version name.
- **Debug vs. Release packages**: Sometimes it's useful to have the debug version of a package. #126
- **CMake integration**: It should be easy to use Mason packages with CMake, e.g. with the `FindPackage` command or another mechanism
- **Upload packages to other locations**: We currently upload everything to an S3 bucket we control, but ideally that would be configurable, so we could e.g. upload packages to GitHub or BinTray.
- **Sign/validate packages**: We should support signatures and validation to ensure package integrity.
- **Windows support**: Do we need it?

/cc @springmeyer @TheMarex @artemp @ericfischer @BergWerkGIS

Contributor guide

Open the contributing guide

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

Read this wishlist alongside #186, #176, and #126; the payload names no implementation files, tests, or single entry point, so first identify which redesign item is being taken on. Done cannot be established for the ticket as written: choose one item and define its scope and acceptance criteria before implementation.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, cpp, python
Domain
build-system, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.