Skip to content

Feature requests

Raja Boujbel edited this page Jun 6, 2024 · 3 revisions

Feature requests from bugtracker

Install

  • #1896: --deps-only with optional dependencies
  • #2133: Add opam error to unclutter output in case of package errors
  • #3321: Allow opam command to be used inside other package managers
  • #3380: opam install --justinstall
  • #4099: Post-install integration tests [with default install]
  • #4490: In verbose mode, errors are sent to stdout
  • #4528: Warn if an installation changes a package to avoid-version
  • #4629: Stop opam package installation when a package install fails
  • #4826: opam install . --depopts
  • #4891: Allow removing files that changed
  • #4907: Make uninstallations remove changed files (and save them somewhere)
  • #4928: Possibility to delay pending reinstalls
  • #5084: Make available pin option for install
  • #5180: opam install should reinstall the package if the opam file changed significantly
  • #5247: Be able to force asking before installing packages matching exactly what you specified on the command-line
  • #5283: --ignore-constraints-on doesn't ignore package available constraints
  • #5331: opam install --verbose-on=,...
  • #5448: space savings in opam switches
  • #5736: Ensure that opam install won't need to do network access (prior cache and check no network)

Reinstall

  • #4220: support for unsafe reinstall, that does not recompile reverse deps

UI

  • #2995: More clearly show installation warnings with the package name which generated them
  • #3649: OpamSystem.resolve_command should display better error when permissions not set correctly
  • #5034: Explicitly annot virtual/conf packages on installation
  • #5463: Avoid confirmation for non-destructive actions
  • #809: show repository name next to package name in update/install outputs
  • #5753

Option

  • #5722: More fine grained control over --strict option, e.g. not fail with old opam when a new variable is added
  • #5746: Add --donwload-only to all commands that launch some build: remove; upgrade, reinstall, etc.

Pin

  • #1351: More expressive version constraints for pins
  • #2932: Use the vcs to get a version number for pinned package?
  • #3123: "Sticky" (pinned?) --deps-only
  • #3202: Add pin expiration system (--dev-until-next-release)
  • #3567: source-hash should display hash of installed version
  • #3587: Git pinning hits the network instead of using --reference
  • #3675: access detailed version information
  • #3797: Pin and dev packages allow opam files to be generated
  • #3959: Unpin multiple packages at once
  • #4686: Nagging message on each pin: "Synopsis (or description first line) should start with a capital"
  • #4737: Allow pin-depends to have a checksum
  • #5513: Output of opam pin list should indicate whether a local pin is using the working state of the directory
  • #5533: opam pin list: show the commit

Fetching

  • #2895: missing functionality: ability to do download, build and install as separate steps
    • consider closing ?
  • #4056: reuse extracted sources
  • #4185: Have a way to handle subpaths in archives
  • #5063: Better error message on unsupported checksum
  • #5638: Cache archives with no checksum

Repository

  • #2066: A list of opam remotes
  • #2148: use bin deltas instead of full archives
  • #4558: Opam 2.0.8 doesn't pick new compiler variants when updating a repo
  • #4617: opam repo set-url - add --no-action
  • #475: polling for package updates on upstream sites
  • #4955: Regenerate the marshalled repo state only when the type actually changes
  • #5029: More information on opam repo list or add opam repo info
  • #5071: git opam repository still use patch to update
  • #5126: Map of repo-name to repo-url/path is global, which breaks git-worktree workflows
  • #5631: Be permissive with packages with unsupported version

Test a repo

  • #2594: documentation clarification plus feature request for testing local opam-repository changes
  • #4227: opam install/pin from opam file

External dependencies

  • #4024: depexts for test-only dependencies
  • #4343: depext: is there support for passing options to the OS package manager?
  • #4557: Should we unify the behaviours of depexts installations regarding system database upgrades?
  • #4740: depexts triggered by commands rather than packages
  • #4741: Improved error message for Alpine repositories
  • #4829: Support OR clauses in depexts field
  • #5124: depext does not support nixOS
  • #5254: Opam cannot recognize Emacs that is built from source
  • #5362: Enable install specific version of depexts with OSes using yum
  • #5692: Allow adding npm packages as depexts
  • #5709: Choose the system package manager
  • #5711: Add a flag to try first a build, then if it fails run depext mechanism

Show

  • #4565: Colorize URLs in opam info output
  • #4851: opam show could support --repos
  • #5637: Add non-raw printer for section fields

Update

  • #5411: opam update should offer to re-initialise on failure

Source

  • #4810: opam source should not prompt for user login
  • #5061: Have an option to disable git --depth 1 on opam source --dev
  • #5158: opam source: Allow multiple packages

Plugin

  • #5278: Inconsistency on files listing for plugins

Plugin ideas

  • #3925: opam lock lower bounds
  • #4390: opam install --global-bin
  • #4594: Add a new opam test subcommand and change the behaviour of the run-test field
  • #5020: Does opam support user patches / overriding package files?
  • #5426: produce a lock file of a package that is not installed in the switch

Lock

  • #4190: use foo.opam.locked file by default if present
  • #4897: Add a flag to opam lock to keep local pins
  • #5519: add an option for opam lock to exclude packages from the locked file
  • #5521: opam install --locked behavior may not be the one expected by users

Opamfile

  • #2497: Defining two packages from the same package description
  • #2499: Depending on package features
    • features is deprecated
  • #2762: Specify exact git commit of a dependency
  • #2824: mark packages as broken
  • #2976: support for semver version constraint operator
  • #3537: Add an "epoch"
  • #3719: Add a release date
  • #3793: One opam file for multiple packages
  • #3880: New opam field to specify the location of the .install file
  • #4526: Add an "invisible" flag to require packages to be installed explicitly
  • #4633: allow "available: word-size != 32"
  • #4994: Include hash/checksum for dependencies in lock file
  • #5531: Filters for extra-source { ... }
  • #4048: Add support for with-test and with-doc variables in conflicts
  • #4127: Idiomatic way of filtering cli flags with parameters [in opam file field]
  • #5787: Add filters for setenv

Lint

  • #1801: opam lint and filters
  • #2425: opam lint should check that URL fields look like URLs
  • #4000: opam lint: Warn about unknown variables

Init

  • #4555: Add support to initialise opam with multiple repositories
  • #4821: Make opam init easier to use
  • #5395: Automatically call "opam init" when the opam client cannot detect an opam root

UI

  • #5745: Fail on opam init with an existing root instead of no-op

Switch

  • #1536: cross-compilation between switches
  • #2247: Switch and package configuration variables
  • #2609: rename opam switches
  • #3200: opam2 switch create in parallel
  • #3595: "opam switch list-available" JSON output
  • #4929: Register an already present local switch globally

Import/Export

  • #1291: export remote config as well
  • #4985: Make opam switch export --freeze more permissive
  • #5200: opam switch import --deps-only

Upgrade

  • #4762: opam upgrade is confusing when nothing can be upgraded any further because of the current switch invariant
    • comment The other part is a (good) feature request - the ocaml package is {post} dependency of ocaml-base-compiler. We should not display upgrade messages about packages in the invariant - so the ocaml package should not be considered for upgrade because it's a {post} dependency of the switch invariant and the upgrade would require relaxing the switch invariant.
  • #3737: opam upgrade -a package fails to resolve dependencies because it refuses to downgrade
    • the entire point of using opam upgrade -a PACKAGE is make sure that PAKCAGE is installed and everything is up-to-date in a single transaction. It seems that that's not actually currently possible in opam.
  • #5288: Sort opam upgrade output by semver(-ish) versioning breakdown: major, non-major
  • #5369: opam upgrade --every-switches

List

  • #3943: opam search --depends-on/required-by can be quite misleading

Solver

  • #5192: Improve UX for opam solver to suggest packages that satisfy constraints
  • #5323: opam dichotomic search for upper/lower bound of a given dependency of a given package

Sandbox

  • #4361: Sandbox: advise user to launch reinit if updated in opam side
  • #5221: Sandbox prevent localhost listening on MacOS

Config report

  • #5646: add list of pins and repositories for the current switch

Env

  • #5791: opam env output with no comments, for CI

Windows

  • #246: Does OPAM work on windows?

Reproducible Builds

  • #2720: Reproducible builds

Admin

  • #3342: opam admin: more structured output
  • #5748: Filter repository with formulae

Shell

  • #3270: elvish support
  • #3327: macos: can potentially avoid needing opam setenv
  • #5454: Consider following POSIX standards when installing .sh scripts

install.sh

  • #3962: install.sh don't allow user installation if a system-wide install exists
  • #3928: install.sh should install to ~/.local/bin/ by default
Clone this wiki locally