fsprojects / fsprojects/Paket

"git" with "build" modifier does not remember build failures

Open
#2,522 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug git UX
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.cmd again.
  • 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.exe is missing.
  • After some more debugging, I figure out where it was supposed to come from, and realize that FsAutoComplete failed to build.
Repro steps

Please provide the steps required to reproduce the problem

  1. Set up a git repo with a broken build script in it.
  2. Add that repo to paket.dependencies with a build: modifier.
  3. Run paket install, get a build error.
  4. Run paket install again, 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

  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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.