Skip to content

Commit 5a9e65f

Browse files
committed
fixup! build: add --shared-absl configure flag
1 parent dc30345 commit 5a9e65f

File tree

3 files changed

+98
-7
lines changed

3 files changed

+98
-7
lines changed

tools/nix/absl.nix

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{ abseil-cpp, fetchgit }:
2+
3+
let
4+
# Values from deps/v8/DEPS - third_party/abseil-cpp
5+
url = "https://chromium.googlesource.com/chromium/src/third_party/abseil-cpp.git";
6+
rev = "3fb321d9764442ceaf2e17b6e68ab6b6836bc78a";
7+
# Computed based on the above:
8+
hash = "sha256-KpjXpyWp9x0cSmyh3uwn0fwKreHA0Cb8c0rD+RHYB80=";
9+
in
10+
abseil-cpp.overrideAttrs {
11+
src = fetchgit {
12+
inherit url rev hash;
13+
};
14+
}

tools/nix/sharedLibDeps.nix

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,7 @@
1919
zlib
2020
zstd
2121
;
22-
absl = (pkgs.abseil-cpp.overrideAttrs {
23-
src = pkgs.fetchgit {
24-
url = "https://chromium.googlesource.com/chromium/src/third_party/abseil-cpp.git";
25-
rev = "3fb321d9764442ceaf2e17b6e68ab6b6836bc78a";
26-
hash = "sha256-KpjXpyWp9x0cSmyh3uwn0fwKreHA0Cb8c0rD+RHYB80=";
27-
};
28-
}).dev;
22+
absl = (pkgs.callPackage ./absl.nix { }).dev;
2923
cares = pkgs.c-ares;
3024
hdr-histogram = pkgs.hdrhistogram_c;
3125
http-parser = pkgs.llhttp;

tools/nix/update-absl-nix.sh

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#!/bin/sh
2+
3+
set -ex
4+
5+
CMD=${1:-check}
6+
7+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8+
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
9+
DEPS_FILE="$REPO_ROOT/deps/v8/DEPS"
10+
NIX_DERIVATION="$SCRIPT_DIR/absl.nix"
11+
12+
if [[ ! -f "$DEPS_FILE" ]]; then
13+
echo "Error: deps/v8/DEPS not found at $DEPS_FILE" >&2
14+
exit 1
15+
fi
16+
17+
if [[ ! -f "$NIX_DERIVATION" ]]; then
18+
echo "Error: absl.nix not found at $NIX_DERIVATION" >&2
19+
exit 1
20+
fi
21+
22+
echo "Extracting values from deps/v8/DEPS..."
23+
24+
ABSEIL_SRC=$(awk '/^ *\u0027third_party[\u002f]abseil-cpp\u0027: \{$/{ getline; print }' "$DEPS_FILE")
25+
26+
echo "$ABSEIL_SRC" | grep -q "^ \+'url': Var('chromium_url') + '.\+' + '@' + '.\+',$" || {
27+
echo "Unexpected format for abseil-cpp source URL: $ABSEIL_SRC"
28+
exit 1
29+
}
30+
31+
REPO_URL="$(grep "^ \+'chromium_url':" "$DEPS_FILE" | awk -F"'" '{ print $4; }')$(echo "$ABSEIL_SRC" | awk -F"'" '{ print $6 }')"
32+
REV="$(echo "$ABSEIL_SRC" | awk -F"'" '{ print $10 }')"
33+
34+
shouldComputeHash=$([ "$CMD" != "write" ] || echo 1)
35+
36+
ACTUAL_REPO_URL=$(awk -F'"' '/^ *url *=/{ print $2; }' "$NIX_DERIVATION")
37+
if [ "$REPO_URL" != "$ACTUAL_REPO_URL" ]; then
38+
echo >&2
39+
echo "Repository URL doesn't match!" >&2
40+
echo "Expected: $REPO_URL" >&2
41+
echo "Got: $ACTUAL_REPO_URL" >&2
42+
echo >&2
43+
shouldComputeHash=1
44+
fi
45+
ACTUAL_REV=$(awk -F'"' '/^ *rev *=/{ print $2; }' "$NIX_DERIVATION")
46+
if [ "$REV" != "$ACTUAL_REV" ]; then
47+
echo >&2
48+
echo "Repository revision doesn't match!" >&2
49+
echo "Expected: $REV" >&2
50+
echo "Got: $ACTUAL_REV" >&2
51+
echo >&2
52+
shouldComputeHash=1
53+
fi
54+
55+
if [ -z "$shouldComputeHash" ]; then
56+
echo "Already up-to-date" >&2
57+
exit 0
58+
fi
59+
60+
command -v nix-shell > /dev/null || {
61+
echo "nix-shell is not available, cannot compute expected hash" >&2
62+
exit 1
63+
}
64+
HASH="$(REPO_URL="$REPO_URL" REV="$REV" nix-shell -I "nixpkgs=$SCRIPT_DIR/pkgs.nix" --pure --keep REPO_URL --keep REV -p nix-prefetch-git -p cacert -p nix -p jq --run 'nix-prefetch-git --url "$REPO_URL" --rev "$REV" | jq -r .hash')";
65+
tmp_file=$(mktemp)
66+
cat -> "$tmp_file" <<NIX
67+
$(awk '{ if ($0 == "let") { print; exit } else print }' "$NIX_DERIVATION")
68+
# Values from deps/v8/DEPS - third_party/abseil-cpp
69+
url = "$REPO_URL";
70+
rev = "$REV";
71+
# Computed based on the above:
72+
hash = "$HASH";
73+
$(awk 'flag || /^in$/{flag=1} flag{print $0}' "$NIX_DERIVATION")
74+
NIX
75+
if [ "$CMD" != "write" ]; then
76+
echo "Apply the following diff to fix the issue:" >&2
77+
REL=${NIX_DERIVATION#"$REPO_ROOT"/}
78+
diff -u --label "a/$REL" --label "b/$REL" "$NIX_DERIVATION" "$tmp_file" || true
79+
rm "$tmp_file"
80+
exit 1
81+
fi
82+
mv "$tmp_file" "$NIX_DERIVATION"
83+
echo "$NIX_DERIVATION has been updated" >&2

0 commit comments

Comments
 (0)