python3Packages.wandb: hardcode git path

This commit is contained in:
Robert Schütz 2022-05-27 01:09:44 +00:00
parent 26b3864c6b
commit 6117b71f31
2 changed files with 91 additions and 10 deletions

View File

@ -32,6 +32,7 @@
, setproctitle
, setuptools
, shortuuid
, substituteAll
, tqdm
}:
@ -49,6 +50,13 @@ buildPythonPackage rec {
hash = "sha256-ZY7nTj93piTEeHhW+H+nQ+ws2dDmmY6u3p7uz296PbA=";
};
patches = [
(substituteAll {
src = ./hardcode-git-path.patch;
git = "${lib.getBin git}/bin/git";
})
];
# setuptools is necessary since pkg_resources is required at runtime.
propagatedBuildInputs = [
click
@ -67,16 +75,6 @@ buildPythonPackage rec {
shortuuid
];
# wandb expects git to be in PATH. See https://gist.github.com/samuela/57aeee710e41ab2bf361b7ed8fbbeabf
# for the error message, and an example usage here: https://github.com/wandb/client/blob/d5f655b7ca7e3eac2f3a67a84bc5c2a664a31baf/wandb/sdk/internal/meta.py#L128.
# See https://github.com/NixOS/nixpkgs/pull/164176#discussion_r828801621 as to
# why we don't put it in propagatedBuildInputs. Note that this is difficult to
# test offline due to https://github.com/wandb/client/issues/3519.
postInstall = ''
mkdir -p $out/bin
ln -s ${git}/bin/git $out/bin/git
'';
preCheck = ''
export HOME=$(mktemp -d)
'';

View File

@ -0,0 +1,83 @@
diff --git a/functional_tests/kfp/wandb_probe.py b/functional_tests/kfp/wandb_probe.py
index 82fadfe1..25c1454c 100644
--- a/functional_tests/kfp/wandb_probe.py
+++ b/functional_tests/kfp/wandb_probe.py
@@ -5,7 +5,7 @@ import subprocess
def wandb_probe_package():
if not os.environ.get("WB_PROBE_PACKAGE"):
return
- s, o = subprocess.getstatusoutput("git rev-parse HEAD")
+ s, o = subprocess.getstatusoutput("@git@ rev-parse HEAD")
if s:
return
wandb_local = f"git+https://github.com/wandb/client.git@{o}#egg=wandb"
diff --git a/wandb/cli/cli.py b/wandb/cli/cli.py
index 5767e61c..56009fec 100644
--- a/wandb/cli/cli.py
+++ b/wandb/cli/cli.py
@@ -1745,7 +1745,7 @@ def restore(ctx, run, no_git, branch, project, entity):
commit, json_config, patch_content, metadata = api.run_config(
project, run=run, entity=entity
)
- repo = metadata.get("git", {}).get("repo")
+ repo = metadata.get("@git@", {}).get("repo")
image = metadata.get("docker")
restore_message = (
"""`wandb restore` needs to be run from the same git repository as the original run.
@@ -1764,7 +1764,7 @@ Run `git clone %s` and restore from there or pass the --no-git flag."""
if commit and api.git.enabled:
wandb.termlog(f"Fetching origin and finding commit: {commit}")
- subprocess.check_call(["git", "fetch", "--all"])
+ subprocess.check_call(["@git@", "fetch", "--all"])
try:
api.git.repo.commit(commit)
except ValueError:
@@ -1818,7 +1818,7 @@ Run `git clone %s` and restore from there or pass the --no-git flag."""
# --reject is necessary or else this fails any time a binary file
# occurs in the diff
exit_code = subprocess.call(
- ["git", "apply", "--reject", patch_rel_path], cwd=root
+ ["@git@", "apply", "--reject", patch_rel_path], cwd=root
)
if exit_code == 0:
wandb.termlog("Applied patch")
diff --git a/wandb/sdk/internal/internal_api.py b/wandb/sdk/internal/internal_api.py
index 612220b9..b761bfbd 100644
--- a/wandb/sdk/internal/internal_api.py
+++ b/wandb/sdk/internal/internal_api.py
@@ -660,7 +660,7 @@ class Api:
)
patch = BytesIO()
if self.git.dirty:
- self.git.repo.git.execute(["git", "diff"], output_stream=patch)
+ self.git.repo.git.execute(["@git@", "diff"], output_stream=patch)
patch.seek(0)
cwd = "."
if self.git.enabled:
diff --git a/wandb/sdk/internal/meta.py b/wandb/sdk/internal/meta.py
index 6c53f750..c385951a 100644
--- a/wandb/sdk/internal/meta.py
+++ b/wandb/sdk/internal/meta.py
@@ -125,7 +125,7 @@ class Meta:
logger.debug("save patches")
try:
root = self._git.root
- diff_args = ["git", "diff"]
+ diff_args = ["@git@", "diff"]
if self._git.has_submodule_diff:
diff_args.append("--submodule=diff")
diff --git a/wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/version.py b/wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/version.py
index 614df9f5..38db460b 100644
--- a/wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/version.py
+++ b/wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/version.py
@@ -67,7 +67,7 @@ def get_git_changeset():
repo_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
try:
git_log = subprocess.Popen(
- 'git log --pretty=format:%ct --quiet -1 HEAD',
+ '@git@ log --pretty=format:%ct --quiet -1 HEAD',
stdout=subprocess.PIPE, stderr=subprocess.PIPE,
shell=True, cwd=repo_dir, universal_newlines=True,
)