Skip to content

RFC: What to do about v2-reconfigure #7405

@emilypi

Description

@emilypi

Per a discussion in #7402, in which @ptkato implemented a solution for #5591, @phadej linked a discussion from #7180 in which there are some differences pointed out between v1-(re)configure and v2-(re)configure. Namely, the following: v2-configure is not a useful command, and therefore v2-reconfigure is similarly not useful. v2-configure does two things: generate a build plan, and create a cabal.project.local with project-local settings. The reasons this is not useful are two-fold:

  1. v2-build already generates a build plan autonomously, making the v2-configure build plan step redundant
  2. modification of the cabal.project.local via command-line args passed to v2-configure is under-specified. One can only pass a subset of valid cabal.project.local flags via command line (Oleg points out that you cannot specify remote source repositories, for example). So in that sense, the implementation is under-specified and hides some implementation details.

Here are a few ideas for what we can do here:

  1. Deprecate v2-configure and tell the users why it's not a bad idea, tossing away the v2-reconfigure work from cabal v2-configure #7402. Many people would probably balk at this, since it removes a useful workflow from people's tooling (script-local modifications are faster than hand-editing the local project files) there is a proliferation of content out there that alludes to v1-configure, and we'd have to be very loud and explicit about why that command in particular was deprecated.

  2. Modify v2-configure and re-spec it's purpose so that it only does modifications of the cabal.project.local, and see if we can come up with a decent middle ground for what flags we support on command line.

Your thoughts welcome.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions