Skip to content

Commit

Permalink
allow Nix builds by not calling git in isGitRepo for Nimble (#23515)
Browse files Browse the repository at this point in the history
Because `isGitRepo()` call requires `/bin/sh` it will always fail when
building Nim in a Nix build sandbox, and the check doesn't even make
sense if Nix already provides Nimble source code.

Since for Nimble `allowBundled` is set to `true` this effectlvely does
not change behavior for normal builds, but does avoid ugly hacks when
building in Nix which lacks `/bin/sh` and fails to call `git`.

Reference:
*
status-im/nimbus-eth2#6180 (comment)

Signed-off-by: Jakub Sokołowski <jakub@status.im>
  • Loading branch information
jakubgs committed Apr 18, 2024
1 parent acd4c8a commit d6823f4
Showing 1 changed file with 3 additions and 10 deletions.
13 changes: 3 additions & 10 deletions lib/std/private/gitutils.nim
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ internal API for now, API subject to change

# xxx move other git utilities here; candidate for stdlib.

import std/[os, osproc, strutils, tempfiles]
import std/[os, paths, osproc, strutils, tempfiles]

when defined(nimPreviewSlimSystem):
import std/[assertions, syncio]
Expand Down Expand Up @@ -32,15 +32,8 @@ template retryCall*(maxRetry = 3, backoffDuration = 1.0, call: untyped): bool =
result

proc isGitRepo*(dir: string): bool =
## This command is used to get the relative path to the root of the repository.
## Using this, we can verify whether a folder is a git repository by checking
## whether the command success and if the output is empty.
let (output, status) = execCmdEx("git rev-parse --show-cdup", workingDir = dir)
# On Windows there will be a trailing newline on success, remove it.
# The value of a successful call typically won't have a whitespace (it's
# usually a series of ../), so we know that it's safe to unconditionally
# remove trailing whitespaces from the result.
result = status == 0 and output.strip() == ""
## Avoid calling git since it depends on /bin/sh existing and fails in Nix.
return fileExists(dir/".git/HEAD")

proc diffFiles*(path1, path2: string): tuple[output: string, same: bool] =
## Returns a human readable diff of files `path1`, `path2`, the exact form of
Expand Down

0 comments on commit d6823f4

Please sign in to comment.