mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-04 12:07:51 +00:00
allow Nix builds by not calling git in isGitRepo for Nimble (#23515)
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:
*
https://github.com/status-im/nimbus-eth2/pull/6180#discussion_r1570237858
Signed-off-by: Jakub Sokołowski <jakub@status.im>
(cherry picked from commit d6823f4776)
This commit is contained in:
@@ -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]
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user