Merge pull request #174832 from dotlambda/wandb-hardcode-git
python3Packages.wandb: hardcode git path
This commit is contained in:
commit
a39e4ed4ab
@ -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)
|
||||
'';
|
||||
|
@ -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,
|
||||
)
|
Loading…
Reference in New Issue
Block a user