"git" with "build" modifier does not remember build failures
Nobody has claimed this yet.
- Dominant language
- F#
- Stars
- 2.1k
- Forks
- 528
- Avg merge
- 1d 12m
- Merged PRs (30d)
- 54
Description
Description
When Paket pulls a git repo, runs build: script on it, and the build fails, Paket will report the error, but the next time Paket runs, it will not re-fetch or re-build the dependency in question, leaving it forever in the unbuilt state.
Some background
I was trying to build Ionide, which has FsAutoComplete as one of dependencies, and it failed to build for me (see https://github.com/fsharp/FsAutoComplete/issues/184). But I didn't know at the time what the problem was, so from my point of view the experience was the following:
- I run Ionide's
build.cmd. - During dependency resolution, I get an error "FsAutoComplete blah-blah-blah failed to build".
- I run Ionide's
build.cmdagain. - This time, it goes through and builds everything.
- I chalk it up to some intermittent issue, disregard it, and proceed with my tinkering.
- When executed, Ionide complains that it cannot start the language service.
- After some debugging, I find out that
FsAutoComplete.Suave.exeis missing. - After some more debugging, I figure out where it was supposed to come from, and realize that
FsAutoCompletefailed to build.
Repro steps
Please provide the steps required to reproduce the problem
- Set up a git repo with a broken build script in it.
- Add that repo to
paket.dependencieswith abuild:modifier. - Run
paket install, get a build error. - Run
paket installagain, get a successful result.
Expected behavior
Paket should somehow remember the failed build and attempt to rebuild on next restore/install.
Known workarounds
Manually build the failed dependencies.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No source file or test is named. Start by reproducing the failure with a Git dependency using a build: modifier and the paket install entry point; trace how the failed build is recorded during restore. Done means a subsequent install retries the failed dependency build rather than treating it as successfully handled.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- fsharp, git
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100