Re: Installing from source as a newcomer
Ben Franksen <[email protected]> Mon, 13 Sep 2021 13:10:07 +0200
| Newsgroups | gmane.comp.version-control.darcs.user |
|---|---|
| Message-ID | <[email protected]> |
Am 11.09.21 um 17:47 schrieb Alexis Praga: > I wanted to build darcs from source and I have a few remarks: > > 1) The documentation says `cabal install darcs` but it's `cabal install > exe:darcs` instead It may be necessary to be more specific when you invoke `cabal install` from inside a project's source tree. Otherwise a `cabal install darcs` should work. > 2) The default cabal files fail to compile with > cabal: filepath wildcard 'release/distributed-version' does not match > any files. > I had to edit the "release-data" section : > > -- release data > - release/distributed-version > - release/distributed-context > + release/gen-version-info.hs > > A patch with my changes have been submitted to [email protected]. > Of course, if I missed something, please tell me ! TL;DR: To `cabal install` from inside the darcs source tree you first need to manually execute a `runghc ./release/gen-version-info.hs`. Long story: In order to generate the (detailed) version info we have to be inside the darcs repo; but `cabal install` from inside a source tree first creates a source dist tar ball and then unpacks, builds and installs that. If we added the gen-version-info.hs to the sdist then it would be invoked during the build but since it is not inside a darcs repo, the version info would be incomplete. In earlier cabal versions one could add hooks to the sdist command but that feature was removed (in cabal-2.4, IIRC) for reasons that are not perfectly clear to me. The recommended solution by the cabal developers is to create VCS-dependent data (or modules) before calling `cabal sdist` when preparing a release, which is what we did. But of course this does not work when doing `cabal install` from inside the source tree, unless you manually generate the version info first, whereas `cabal build` works just fine because it builds directly inside the source tree. We should perhaps add a note in the README to make this clearer for new developers? > 3) What's the difference betwen darcs.net and darcs.net/screened ? It's the same repo. Cheers Ben -- I would rather have questions that cannot be answered, than answers that cannot be questioned. -- Richard Feynman