From 9e8ee41665ca59d70714596499f033f79ed10e9a Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Fri, 4 Oct 2024 13:57:04 -0400 Subject: [PATCH 1/5] chore: wrappers lib rename --- nix/ext/wrappers/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nix/ext/wrappers/default.nix b/nix/ext/wrappers/default.nix index 98d6a7cbc..78f2858ad 100644 --- a/nix/ext/wrappers/default.nix +++ b/nix/ext/wrappers/default.nix @@ -80,6 +80,9 @@ buildPgrxExtension_0_11_3 rec { echo "Warning: $sql_file not found" fi rm git_tags.txt + mv $out/lib/wrappers-${version}.so $out/lib/wrappers.so + echo "Uncommenting module_pathname in wrappers.control..." + sed -i 's/^#module_pathname/module_pathname/' $out/share/postgresql/extension/wrappers.control ''; meta = with lib; { From e74d7c03c8a2260f646d63e5127f0be5ece0045d Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Fri, 4 Oct 2024 18:03:55 -0400 Subject: [PATCH 2/5] feat: post build rename .so file and edit sql to point to new name --- nix/ext/wrappers/default.nix | 57 +++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/nix/ext/wrappers/default.nix b/nix/ext/wrappers/default.nix index 78f2858ad..f1a686b5a 100644 --- a/nix/ext/wrappers/default.nix +++ b/nix/ext/wrappers/default.nix @@ -63,27 +63,42 @@ buildPgrxExtension_0_11_3 rec { echo '${builtins.concatStringsSep "," previousVersions}' | sed 's/,/\n/g' > git_tags.txt ''; - postInstall = '' - echo "Creating SQL files for previous versions..." - current_version="${version}" - sql_file="$out/share/postgresql/extension/wrappers--$current_version.sql" - - if [ -f "$sql_file" ]; then - while read -r previous_version; do - if [ "$(printf '%s\n' "$previous_version" "$current_version" | sort -V | head -n1)" = "$previous_version" ] && [ "$previous_version" != "$current_version" ]; then - new_file="$out/share/postgresql/extension/wrappers--$previous_version--$current_version.sql" - echo "Creating $new_file" - cp "$sql_file" "$new_file" - fi - done < git_tags.txt - else - echo "Warning: $sql_file not found" - fi - rm git_tags.txt - mv $out/lib/wrappers-${version}.so $out/lib/wrappers.so - echo "Uncommenting module_pathname in wrappers.control..." - sed -i 's/^#module_pathname/module_pathname/' $out/share/postgresql/extension/wrappers.control - ''; +postInstall = '' + echo "Modifying main SQL file to use unversioned library name..." + current_version="${version}" + main_sql_file="$out/share/postgresql/extension/wrappers--$current_version.sql" + if [ -f "$main_sql_file" ]; then + sed -i 's|$libdir/wrappers-[0-9.]*|$libdir/wrappers|g' "$main_sql_file" + echo "Modified $main_sql_file" + else + echo "Warning: $main_sql_file not found" + fi + + echo "Creating and modifying SQL files for previous versions..." + + if [ -f "$main_sql_file" ]; then + while read -r previous_version; do + if [ "$(printf '%s\n' "$previous_version" "$current_version" | sort -V | head -n1)" = "$previous_version" ] && [ "$previous_version" != "$current_version" ]; then + new_file="$out/share/postgresql/extension/wrappers--$previous_version--$current_version.sql" + echo "Creating $new_file" + cp "$main_sql_file" "$new_file" + sed -i 's|$libdir/wrappers-[0-9.]*|$libdir/wrappers|g' "$new_file" + echo "Modified $new_file" + fi + done < git_tags.txt + else + echo "Warning: $main_sql_file not found" + fi + + rm git_tags.txt + mv $out/lib/wrappers-${version}.so $out/lib/wrappers.so + + echo "Contents of updated wrappers.control:" + cat "$out/share/postgresql/extension/wrappers.control" + + echo "List of generated SQL files:" + ls -l $out/share/postgresql/extension/wrappers--*.sql +''; meta = with lib; { description = "Various Foreign Data Wrappers (FDWs) for PostreSQL"; From 17fc51ea803943673ce665e6746c8c8334ee56f6 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Tue, 8 Oct 2024 16:36:51 -0400 Subject: [PATCH 3/5] fix: rm version num from plv8 lib --- nix/ext/plv8.nix | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/nix/ext/plv8.nix b/nix/ext/plv8.nix index 5cb4fb67e..c2591eeba 100644 --- a/nix/ext/plv8.nix +++ b/nix/ext/plv8.nix @@ -103,16 +103,19 @@ stdenv.mkDerivation (finalAttrs: { # so changing them does not cause issues. mv "$out/nix/store"/*/* "$out" rmdir "$out/nix/store"/* "$out/nix/store" "$out/nix" - + mv "$out/lib/plv8-${finalAttrs.version}.so" "$out/lib/plv8.so" + sed -i 's|module_pathname = '"'"'$libdir/plv8-[0-9.]*'"'"'|module_pathname = '"'"'$libdir/plv8'"'"'|' "$out/share/postgresql/extension/plv8.control" + sed -i 's|module_pathname = '"'"'$libdir/plv8-[0-9.]*'"'"'|module_pathname = '"'"'$libdir/plv8'"'"'|' "$out/share/postgresql/extension/plcoffee.control" + sed -i 's|module_pathname = '"'"'$libdir/plv8-[0-9.]*'"'"'|module_pathname = '"'"'$libdir/plv8'"'"'|' "$out/share/postgresql/extension/plls.control" ${lib.optionalString stdenv.isDarwin '' - install_name_tool -add_rpath "${v8}/lib" $out/lib/plv8-${finalAttrs.version}.so - install_name_tool -add_rpath "${postgresql}/lib" $out/lib/plv8-${finalAttrs.version}.so - install_name_tool -add_rpath "${stdenv.cc.cc.lib}/lib" $out/lib/plv8-${finalAttrs.version}.so - install_name_tool -change @rpath/libv8_monolith.dylib ${v8}/lib/libv8_monolith.dylib $out/lib/plv8-${finalAttrs.version}.so + install_name_tool -add_rpath "${v8}/lib" $out/lib/plv8.so + install_name_tool -add_rpath "${postgresql}/lib" $out/lib/plv8.so + install_name_tool -add_rpath "${stdenv.cc.cc.lib}/lib" $out/lib/plv8.so + install_name_tool -change @rpath/libv8_monolith.dylib ${v8}/lib/libv8_monolith.dylib $out/lib/plv8.so ''} ${lib.optionalString (!stdenv.isDarwin) '' - ${patchelf}/bin/patchelf --set-rpath "${v8}/lib:${postgresql}/lib:${stdenv.cc.cc.lib}/lib" $out/lib/plv8-${finalAttrs.version}.so + ${patchelf}/bin/patchelf --set-rpath "${v8}/lib:${postgresql}/lib:${stdenv.cc.cc.lib}/lib" $out/lib/plv8.so ''} ''; From fd20ea87f378f6713434e1db92f52e66087db2dd Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Tue, 8 Oct 2024 16:37:47 -0400 Subject: [PATCH 4/5] chore: nl --- nix/ext/plv8.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/ext/plv8.nix b/nix/ext/plv8.nix index c2591eeba..c42ae37cf 100644 --- a/nix/ext/plv8.nix +++ b/nix/ext/plv8.nix @@ -190,4 +190,4 @@ stdenv.mkDerivation (finalAttrs: { platforms = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; license = licenses.postgresql; }; -}) \ No newline at end of file +}) From b4dc629c5ff48f490522504d56bee605a446be95 Mon Sep 17 00:00:00 2001 From: Paul Cioanca Date: Tue, 15 Oct 2024 13:18:26 +0300 Subject: [PATCH 5/5] chore: preserve plv8 upgrade path; fix wrappers upgrades --- nix/ext/plv8.nix | 1 + nix/ext/wrappers/default.nix | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/nix/ext/plv8.nix b/nix/ext/plv8.nix index c42ae37cf..107bd9107 100644 --- a/nix/ext/plv8.nix +++ b/nix/ext/plv8.nix @@ -104,6 +104,7 @@ stdenv.mkDerivation (finalAttrs: { mv "$out/nix/store"/*/* "$out" rmdir "$out/nix/store"/* "$out/nix/store" "$out/nix" mv "$out/lib/plv8-${finalAttrs.version}.so" "$out/lib/plv8.so" + ln -s "$out/lib/plv8.so" "$out/lib/plv8-${finalAttrs.version}.so" sed -i 's|module_pathname = '"'"'$libdir/plv8-[0-9.]*'"'"'|module_pathname = '"'"'$libdir/plv8'"'"'|' "$out/share/postgresql/extension/plv8.control" sed -i 's|module_pathname = '"'"'$libdir/plv8-[0-9.]*'"'"'|module_pathname = '"'"'$libdir/plv8'"'"'|' "$out/share/postgresql/extension/plcoffee.control" sed -i 's|module_pathname = '"'"'$libdir/plv8-[0-9.]*'"'"'|module_pathname = '"'"'$libdir/plv8'"'"'|' "$out/share/postgresql/extension/plls.control" diff --git a/nix/ext/wrappers/default.nix b/nix/ext/wrappers/default.nix index f1a686b5a..54a2bddbc 100644 --- a/nix/ext/wrappers/default.nix +++ b/nix/ext/wrappers/default.nix @@ -90,9 +90,22 @@ postInstall = '' echo "Warning: $main_sql_file not found" fi - rm git_tags.txt mv $out/lib/wrappers-${version}.so $out/lib/wrappers.so - + + echo "Creating wrappers.so symlinks to support pg_upgrade..." + if [ -f "$out/lib/wrappers.so" ]; then + while read -r previous_version; do + if [ "$(printf '%s\n' "$previous_version" "$current_version" | sort -V | head -n1)" = "$previous_version" ] && [ "$previous_version" != "$current_version" ]; then + new_file="$out/lib/wrappers-$previous_version.so" + echo "Creating $new_file" + ln -s "$out/lib/wrappers.so" "$new_file" + fi + done < git_tags.txt + else + echo "Warning: $out/lib/wrappers.so not found" + fi + rm git_tags.txt + echo "Contents of updated wrappers.control:" cat "$out/share/postgresql/extension/wrappers.control"