From 9208cfc7f7c94365f22338ca5b37f47287309794 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 13 Nov 2024 09:19:32 -0500 Subject: [PATCH 1/3] feat: filter timescaledb to only be included on v15 --- flake.nix | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/flake.nix b/flake.nix index a2c8bfbf5..0628de674 100644 --- a/flake.nix +++ b/flake.nix @@ -131,8 +131,6 @@ # go through the upstream release engineering process. ourExtensions = [ ./nix/ext/rum.nix - ./nix/ext/timescaledb.nix - ./nix/ext/timescaledb-2.9.1.nix ./nix/ext/pgroonga.nix ./nix/ext/index_advisor.nix ./nix/ext/wal2json.nix @@ -214,9 +212,16 @@ in map (path: pkgs.callPackage path { inherit postgresql; }) orioledbExtension; makeOurPostgresPkgs = version: - let postgresql = getPostgresqlPackage version; - in map (path: pkgs.callPackage path { inherit postgresql; }) ourExtensions; - + let + postgresql = getPostgresqlPackage version; + extensions = if version == "15" + then ourExtensions ++ [ + ./nix/ext/timescaledb.nix + ./nix/ext/timescaledb-2.9.1.nix + ] + else ourExtensions; + in + map (path: pkgs.callPackage path { inherit postgresql; }) extensions; # Create an attrset that contains all the extensions included in a server for the orioledb version of postgresql + extension. makeOurOrioleDbPostgresPkgsSet = version: patchedPostgres: (builtins.listToAttrs (map From cb1770bece9daf4b7b443566d9667c6d9b9629e1 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 13 Nov 2024 11:42:58 -0500 Subject: [PATCH 2/3] chore: shuffle a bit to match what is needed for various versions --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 0628de674..b66ec3449 100644 --- a/flake.nix +++ b/flake.nix @@ -131,6 +131,7 @@ # go through the upstream release engineering process. ourExtensions = [ ./nix/ext/rum.nix + ./nix/ext/timescaledb.nix ./nix/ext/pgroonga.nix ./nix/ext/index_advisor.nix ./nix/ext/wal2json.nix @@ -216,7 +217,6 @@ postgresql = getPostgresqlPackage version; extensions = if version == "15" then ourExtensions ++ [ - ./nix/ext/timescaledb.nix ./nix/ext/timescaledb-2.9.1.nix ] else ourExtensions; From 6550cdfec2139d69f1566be622316fd3828b12f1 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 13 Nov 2024 13:45:39 -0500 Subject: [PATCH 3/3] chore: small fixes on sb wrappers and plv8 to merge in all needed install function --- nix/ext/plv8.nix | 46 ++++++++++++++++++++++++------------ nix/ext/wrappers/default.nix | 4 ++-- 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/nix/ext/plv8.nix b/nix/ext/plv8.nix index b6fd7c5cc..340a07382 100644 --- a/nix/ext/plv8.nix +++ b/nix/ext/plv8.nix @@ -97,27 +97,43 @@ stdenv.mkDerivation (finalAttrs: { ''} ''; - postInstall = '' + postInstall = '' # Move the redirected to proper directory. # There appear to be no references to the install directories # 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" - 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" - ${lib.optionalString stdenv.isDarwin '' - install_name_tool -add_rpath "${v8}/lib" $out/lib/plv8-${finalAttrs.version}${postgresql.dlSuffix} - install_name_tool -add_rpath "${postgresql}/lib" $out/lib/plv8-${finalAttrs.version}${postgresql.dlSuffix} - install_name_tool -add_rpath "${stdenv.cc.cc.lib}/lib" $out/lib/plv8-${finalAttrs.version}${postgresql.dlSuffix} - install_name_tool -change @rpath/libv8_monolith.dylib ${v8}/lib/libv8_monolith.dylib $out/lib/plv8-${finalAttrs.version}${postgresql.dlSuffix} - ''} - ${lib.optionalString (!stdenv.isDarwin) '' - ${patchelf}/bin/patchelf --set-rpath "${v8}/lib:${postgresql}/lib:${stdenv.cc.cc.lib}/lib" $out/lib/plv8-${finalAttrs.version}${postgresql.dlSuffix} - ''} + # Handle different PostgreSQL versions + if [ "${lib.versions.major postgresql.version}" = "15" ]; then + 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" + + ${lib.optionalString stdenv.isDarwin '' + 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.so + ''} + else + ${lib.optionalString stdenv.isDarwin '' + install_name_tool -add_rpath "${v8}/lib" $out/lib/plv8-${finalAttrs.version}${postgresql.dlSuffix} + install_name_tool -add_rpath "${postgresql}/lib" $out/lib/plv8-${finalAttrs.version}${postgresql.dlSuffix} + install_name_tool -add_rpath "${stdenv.cc.cc.lib}/lib" $out/lib/plv8-${finalAttrs.version}${postgresql.dlSuffix} + install_name_tool -change @rpath/libv8_monolith.dylib ${v8}/lib/libv8_monolith.dylib $out/lib/plv8-${finalAttrs.version}${postgresql.dlSuffix} + ''} + + ${lib.optionalString (!stdenv.isDarwin) '' + ${patchelf}/bin/patchelf --set-rpath "${v8}/lib:${postgresql}/lib:${stdenv.cc.cc.lib}/lib" $out/lib/plv8-${finalAttrs.version}${postgresql.dlSuffix} + ''} + fi ''; meta = with lib; { diff --git a/nix/ext/wrappers/default.nix b/nix/ext/wrappers/default.nix index b5d498a4b..85e00aff3 100644 --- a/nix/ext/wrappers/default.nix +++ b/nix/ext/wrappers/default.nix @@ -103,8 +103,8 @@ buildPgrxExtension_0_12_6 rec { else echo "Warning: $main_sql_file not found" fi - mv $out/lib/wrappers-${version}.so $out/lib/wrappers.so - ln -s $out/lib/wrappers.so $out/lib/wrappers-${version}.so + mv $out/lib/wrappers-${version}${postgresql.dlSuffix} $out/lib/wrappers${postgresql.dlSuffix} + ln -s $out/lib/wrappers${postgresql.dlSuffix} $out/lib/wrappers-${version}${postgresql.dlSuffix} echo "Creating wrappers.so symlinks to support pg_upgrade..." if [ -f "$out/lib/wrappers.so" ]; then