Skip to content

Commit ac40f4f

Browse files
committed
fix(pgrx): error: multiple input filenames provided
Updated cargo-pgrx buildPgrxExtension with rustc wrapper to handle empty postmaster_stub.rs files that cause duplicate symbol errors. (first two filenames are `` and `/build/tmp.*/postmaster_stubs/nix/store/*/bin/postmaster_stub.rs`) pg_jsonschema cargo checks fails on specific versions (0.2.0, 0.3.1, 0.3.3).
1 parent 217d2c2 commit ac40f4f

File tree

3 files changed

+80
-42
lines changed

3 files changed

+80
-42
lines changed

nix/cargo-pgrx/buildPgrxExtension.nix

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
# SOFTWARE.
2929
{
3030
lib,
31+
bash,
3132
cargo-pgrx,
3233
pkg-config,
3334
rustPlatform,
@@ -136,24 +137,48 @@ let
136137
++ lib.optionals useFakeRustfmt [ fakeRustfmt ];
137138

138139
buildPhase = ''
139-
runHook preBuild
140-
141-
echo "Executing cargo-pgrx buildPhase"
142-
${preBuildAndTest}
143-
${maybeEnterBuildAndTestSubdir}
144-
145-
export PGRX_BUILD_FLAGS="--frozen -j $NIX_BUILD_CORES ${builtins.concatStringsSep " " cargoBuildFlags}"
146-
export PGX_BUILD_FLAGS="$PGRX_BUILD_FLAGS"
147-
${lib.optionalString stdenv.hostPlatform.isDarwin ''RUSTFLAGS="''${RUSTFLAGS:+''${RUSTFLAGS} }-Clink-args=-Wl,-undefined,dynamic_lookup"''} \
148-
cargo ${pgrxBinaryName} package \
149-
--pg-config ${lib.getDev postgresql}/bin/pg_config \
150-
${maybeDebugFlag} \
151-
--features "${builtins.concatStringsSep " " buildFeatures}" \
152-
--out-dir "$out"
153-
154-
${maybeLeaveBuildAndTestSubdir}
155-
156-
runHook postBuild
140+
runHook preBuild
141+
142+
echo "Executing cargo-pgrx buildPhase"
143+
${preBuildAndTest}
144+
${maybeEnterBuildAndTestSubdir}
145+
146+
export PGRX_BUILD_FLAGS="--frozen -j $NIX_BUILD_CORES ${builtins.concatStringsSep " " cargoBuildFlags}"
147+
export PGX_BUILD_FLAGS="$PGRX_BUILD_FLAGS"
148+
149+
# Wrap rustc to filter out empty postmaster_stub.rs arguments
150+
original_rustc=$(command -v rustc)
151+
mkdir -p $out/bin
152+
cat > $out/bin/rustc << EOF
153+
#!${bash}/bin/bash
154+
filtered_args=()
155+
for arg in "\$@"; do
156+
if [[ -z "\$arg" ]]; then
157+
continue
158+
fi
159+
if [[ "\$arg" =~ postmaster_stub\.rs$ ]]; then
160+
if [[ ! -s "\$arg" ]]; then
161+
continue
162+
fi
163+
fi
164+
filtered_args+=("\$arg")
165+
done
166+
exec "$original_rustc" "\''${filtered_args[@]}"
167+
EOF
168+
chmod +x $out/bin/rustc
169+
export PATH="$out/bin:$PATH"
170+
export RUSTC="$out/bin/rustc"
171+
172+
${lib.optionalString stdenv.hostPlatform.isDarwin ''RUSTFLAGS="''${RUSTFLAGS:+''${RUSTFLAGS} }-Clink-args=-Wl,-undefined,dynamic_lookup"''} \
173+
cargo ${pgrxBinaryName} package \
174+
--pg-config ${lib.getDev postgresql}/bin/pg_config \
175+
${maybeDebugFlag} \
176+
--features "${builtins.concatStringsSep " " buildFeatures}" \
177+
--out-dir "$out"
178+
179+
${maybeLeaveBuildAndTestSubdir}
180+
181+
runHook postBuild
157182
'';
158183

159184
preCheck = preBuildAndTest + args.preCheck or "";

nix/cargo-pgrx/versions.json

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,93 +2,102 @@
22
"0.6.1": {
33
"hash": "sha256-O4eHVbJBudybsPab+zr2eXnfheREMqLAHAKm2GDbfrs=",
44
"rust": {
5+
"1.76.0": {
6+
"cargoHash": "sha256-lcnUVO8dJET5g6wM1YgTsj4uP4I3vVZy5PWBKIsvLB8="
7+
},
58
"1.82.0": {
6-
"cargoHash": "sha256-MucGrA3qXgJOcT2LMNmoNOhQi8QA3LuqgZEHKycLCCo="
9+
"cargoHash": "sha256-lcnUVO8dJET5g6wM1YgTsj4uP4I3vVZy5PWBKIsvLB8="
710
}
811
}
912
},
1013
"0.7.1": {
1114
"hash": "sha256-t/gdlrBeP6KFkBFJiZUa8KKVJVYMf6753vQGKJdytss=",
1215
"rust": {
16+
"1.76.0": {
17+
"cargoHash": "sha256-bLS/pKJnwgcp38wAHej6vOkzVb/E2UHRCQ/OMDI6GqU="
18+
},
1319
"1.82.0": {
14-
"cargoHash": "sha256-muce9wT4LAJmfNLWWEShARnpZgglXe/KrfxlitmGgXk="
20+
"cargoHash": "sha256-bLS/pKJnwgcp38wAHej6vOkzVb/E2UHRCQ/OMDI6GqU="
1521
}
1622
}
1723
},
1824
"0.9.5": {
1925
"hash": "sha256-GpXQUOBuojAqPXyRR+k8AVW2XzBbn6V0+2dhP4w4Vs8=",
2026
"rust": {
2127
"1.70.0": {
22-
"cargoHash": "sha256-YbwGh3tbt8W9/VOu11fTWO9fRMUlrwJnG4wxUHuyX10="
28+
"cargoHash": "sha256-TGeHOA5kRZ7KclRfYj6V+/ZbPiPx/4xUyKxNm4o7ubM="
29+
},
30+
"1.76.0": {
31+
"cargoHash": "sha256-TGeHOA5kRZ7KclRfYj6V+/ZbPiPx/4xUyKxNm4o7ubM="
2332
}
2433
}
2534
},
2635
"0.9.7": {
2736
"hash": "sha256-uDBq7tUZ9f8h5nlRFR1mv4+Ty1OFtAk5P7OTNQPI1gI=",
2837
"rust": {
2938
"1.70.0": {
30-
"cargoHash": "sha256-YTkjqMNF+cz5XtELh7+l8KwvRoVKQP7t98nkJwkW218="
39+
"cargoHash": "sha256-uc1/zWMLt5U0egsf3xu/5RxouSl0m+81qY+ZZd8BSxU="
40+
},
41+
"1.76.0": {
42+
"cargoHash": "sha256-uc1/zWMLt5U0egsf3xu/5RxouSl0m+81qY+ZZd8BSxU="
3143
}
3244
}
3345
},
3446
"0.10.2": {
3547
"hash": "sha256-FqjfbJmSy5UCpPPPk4bkEyvQCnaH9zYtkI7txgIn+ls=",
3648
"rust": {
3749
"1.70.0": {
38-
"cargoHash": "sha256-syZ3cQq8qDHBLvqmNDGoxeK6zXHJ47Jwkw3uhaXNCzI="
50+
"cargoHash": "sha256-VlxXXSwegKGYIO3r3XtclwdtkJNz4r5H35Tkkw0nl9c="
3951
},
4052
"1.76.0": {
41-
"cargoHash": "sha256-syZ3cQq8qDHBLvqmNDGoxeK6zXHJ47Jwkw3uhaXNCzI="
53+
"cargoHash": "sha256-VlxXXSwegKGYIO3r3XtclwdtkJNz4r5H35Tkkw0nl9c="
4254
}
4355
}
4456
},
4557
"0.11.2": {
4658
"hash": "sha256-8NlpMDFaltTIA8G4JioYm8LaPJ2RGKH5o6sd6lBHmmM=",
4759
"rust": {
4860
"1.70.0": {
49-
"cargoHash": "sha256-qTb3JV3u42EilaK2jP9oa5D09mkuHyRbGGRs9Rg4TzI="
50-
},
51-
"1.76.0": {
52-
"cargoHash": "sha256-qTb3JV3u42EilaK2jP9oa5D09mkuHyRbGGRs9Rg4TzI="
61+
"cargoHash": "sha256-TMuJ7kyMckCT4JJVWuEE14HpD5uw3Vjym96GA71vOMo="
5362
},
5463
"1.85.1": {
55-
"cargoHash": "sha256-CbU5B0pvB9ApTZOdYP/ZwuIG8bqGzk/ING2PCM0q2bQ="
64+
"cargoHash": "sha256-TMuJ7kyMckCT4JJVWuEE14HpD5uw3Vjym96GA71vOMo="
5665
}
5766
}
5867
},
5968
"0.11.3": {
6069
"hash": "sha256-UHIfwOdXoJvR4Svha6ud0FxahP1wPwUtviUwUnTmLXU=",
6170
"rust": {
71+
"1.70.0": {
72+
"cargoHash": "sha256-giL077I5VzWJ+fAbxqp/Oc28Qjc7ontVm7of5LQz+uY="
73+
},
6274
"1.76.0": {
63-
"cargoHash": "sha256-j4HnD8Zt9uhlV5N7ldIy9564o9qFEqs5KfXHmnQ1WEw="
75+
"cargoHash": "sha256-giL077I5VzWJ+fAbxqp/Oc28Qjc7ontVm7of5LQz+uY="
6476
},
6577
"1.85.1": {
66-
"cargoHash": "sha256-KBlT3FARjGcbtHIGDoC6ir3aNXXfDRmIoy990SOqoFg="
78+
"cargoHash": "sha256-giL077I5VzWJ+fAbxqp/Oc28Qjc7ontVm7of5LQz+uY="
6779
}
6880
}
6981
},
7082
"0.12.6": {
7183
"hash": "sha256-7aQkrApALZe6EoQGVShGBj0UIATnfOy2DytFj9IWdEA=",
7284
"rust": {
7385
"1.80.0": {
74-
"cargoHash": "sha256-Di4UldQwAt3xVyvgQT1gUhdvYUVp7n/a72pnX45kP0w="
86+
"cargoHash": "sha256-pnMxWWfvr1/AEp8DvG4awig8zjdHizJHoZ5RJA8CL08="
7587
},
7688
"1.81.0": {
77-
"cargoHash": "sha256-Di4UldQwAt3xVyvgQT1gUhdvYUVp7n/a72pnX45kP0w="
89+
"cargoHash": "sha256-pnMxWWfvr1/AEp8DvG4awig8zjdHizJHoZ5RJA8CL08="
7890
}
7991
}
8092
},
8193
"0.12.9": {
8294
"hash": "sha256-aR3DZAjeEEAjLQfZ0ZxkjLqTVMIEbU0UiZ62T4BkQq8=",
8395
"rust": {
8496
"1.81.0": {
85-
"cargoHash": "sha256-53HKhvsKLTa2JCByLEcK3UzWXoM+LTatd98zvS1C9no="
97+
"cargoHash": "sha256-yZpD3FriL9UbzRtdFkfIfFfYIrRPYxr/lZ5rb0YBTPc="
8698
},
8799
"1.84.0": {
88-
"cargoHash": "sha256-KTKcol9qSNLQZGW32e6fBb6cPkUGItknyVpLdBYqrBY="
89-
},
90-
"1.87.0": {
91-
"cargoHash": "sha256-KTKcol9qSNLQZGW32e6fBb6cPkUGItknyVpLdBYqrBY="
100+
"cargoHash": "sha256-yZpD3FriL9UbzRtdFkfIfFfYIrRPYxr/lZ5rb0YBTPc="
92101
}
93102
}
94103
},
@@ -104,15 +113,15 @@
104113
"hash": "sha256-emNR7fXNVD9sY/Mdno7mwpH6l/7AD28cBUsFRn9je50=",
105114
"rust": {
106115
"1.87.0": {
107-
"cargoHash": "sha256-pK6OxRNubcWhohLvIJIliRtaHSIQOhQp7Q9brPygZYA="
116+
"cargoHash": "sha256-3eyBDWDoCzSU0tbab8qbjSnBkkN0oOgd7YbuyHLEHYw="
108117
}
109118
}
110119
},
111120
"0.16.1": {
112121
"hash": "sha256-AjoBr+/sEPdzbD0wLUNVm2syCySkGaFOFQ70TST1U9w=",
113122
"rust": {
114123
"1.88.0": {
115-
"cargoHash": "sha256-uWj/V2lJa6HF2GlHX+i5RbSMZFOxZsBzOf6okKDb0j8="
124+
"cargoHash": "sha256-95DHq5GLnAqb3bbKwwaeBeKEmkfRh81ZTRaJ7L59DAg="
116125
}
117126
}
118127
}

nix/ext/pg_jsonschema/default.nix

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ let
4747
];
4848
# update the following array when the pg_jsonschema version is updated
4949
# required to ensure that extensions update scripts from previous versions are generated
50-
5150
previousVersions = [
5251
"0.3.1"
5352
"0.3.0"
@@ -83,7 +82,12 @@ let
8382
cargo pgrx init --pg${lib.versions.major postgresql.version} $PGRX_HOME/${lib.versions.major postgresql.version}/bin/pg_config
8483
'';
8584

86-
doCheck = true;
85+
doCheck =
86+
!(builtins.elem version [
87+
"0.2.0"
88+
"0.3.1"
89+
"0.3.3"
90+
]);
8791

8892
preBuild = ''
8993
echo "Processing git tags..."

0 commit comments

Comments
 (0)