|
15 | 15 | version: hash: rustVersion: pgrxVersion:
|
16 | 16 | let
|
17 | 17 | cargo = rust-bin.stable.${rustVersion}.default;
|
18 |
| - previousVersions = lib.filter (v: v != version) versions; # FIXME |
19 | 18 | mkPgrxExtension = callPackages ../cargo-pgrx/mkPgrxExtension.nix {
|
20 | 19 | inherit rustVersion pgrxVersion;
|
21 | 20 | };
|
|
42 | 41 | # Setting RUSTFLAGS in env to ensure it's available for all phases
|
43 | 42 | env = lib.optionalAttrs stdenv.isDarwin {
|
44 | 43 | POSTGRES_LIB = "${postgresql}/lib";
|
45 |
| - PGPORT = toString ( |
46 |
| - 5430 |
47 |
| - + (if builtins.match ".*_.*" postgresql.version != null then 1 else 0) |
48 |
| - # +1 for OrioleDB |
49 |
| - + ((builtins.fromJSON (builtins.substring 0 2 postgresql.version)) - 15) * 2 |
50 |
| - ); # +2 for each major version |
51 | 44 | RUSTFLAGS = "-C link-arg=-undefined -C link-arg=dynamic_lookup";
|
52 | 45 | NIX_BUILD_CORES = "4"; # Limit parallel jobs
|
53 | 46 | CARGO_BUILD_JOBS = "4"; # Limit cargo parallelism
|
54 | 47 | };
|
55 | 48 | CARGO_PROFILE_RELEASE_BUILD_OVERRIDE_DEBUG = true;
|
56 | 49 |
|
57 |
| - preBuild = '' |
58 |
| - echo "Processing git tags..." |
59 |
| - echo '${builtins.concatStringsSep "," previousVersions}' | sed 's/,/\n/g' > git_tags.txt |
60 |
| - ''; |
61 |
| - |
62 | 50 | postInstall = ''
|
63 | 51 | mv $out/lib/${pname}${postgresql.dlSuffix} $out/lib/${pname}-${version}${postgresql.dlSuffix}
|
64 | 52 |
|
65 |
| - create_sql_files() { |
66 |
| - echo "Creating SQL files for previous versions..." |
67 |
| - current_version="${version}" |
68 |
| - sql_file="$out/share/postgresql/extension/${pname}--$current_version.sql" |
69 |
| -
|
70 |
| - if [ -f "$sql_file" ]; then |
71 |
| - while read -r previous_version; do |
72 |
| - if [ "$(printf '%s\n' "$previous_version" "$current_version" | sort -V | head -n1)" = "$previous_version" ] && [ "$previous_version" != "$current_version" ]; then |
73 |
| - new_file="$out/share/postgresql/extension/${pname}--$previous_version--$current_version.sql" |
74 |
| - sed -i 's/create\s\+function/CREATE OR REPLACE FUNCTION/Ig' "$sql_file" |
75 |
| - echo "Creating $new_file" |
76 |
| - { |
77 |
| - echo "DROP EVENT TRIGGER IF EXISTS graphql_watch_ddl;" |
78 |
| - echo "DROP EVENT TRIGGER IF EXISTS graphql_watch_drop;" |
79 |
| - cat $sql_file |
80 |
| - } > "$new_file" |
81 |
| - fi |
82 |
| - done < git_tags.txt |
83 |
| - else |
84 |
| - echo "Warning: $sql_file not found" |
85 |
| - fi |
86 |
| - rm git_tags.txt |
87 |
| - } |
88 |
| -
|
89 | 53 | create_control_files() {
|
90 | 54 | sed -e "/^default_version =/d" \
|
91 | 55 | -e "s|^module_pathname = .*|module_pathname = '\$libdir/${pname}'|" \
|
|
101 | 65 | fi
|
102 | 66 | }
|
103 | 67 |
|
104 |
| - create_sql_files |
105 | 68 | create_control_files
|
106 | 69 | '';
|
107 | 70 |
|
@@ -141,6 +104,23 @@ buildEnv {
|
141 | 104 | "/share/postgresql/extension"
|
142 | 105 | ];
|
143 | 106 | postBuild = ''
|
| 107 | + create_sql_files() { |
| 108 | + PREVIOUS_VERSION="" |
| 109 | + while IFS= read -r i; do |
| 110 | + FILENAME=$(basename "$i") |
| 111 | + DIRNAME=$(dirname "$i") |
| 112 | + VERSION="$(grep -oE '[0-9]+\.[0-9]+\.[0-9]+' <<< $FILENAME)" |
| 113 | + if [[ "$PREVIOUS_VERSION" != "" ]]; then |
| 114 | + echo "Processing $i" |
| 115 | + MIGRATION_FILENAME="$DIRNAME/''${FILENAME/$VERSION/$PREVIOUS_VERSION--$VERSION}" |
| 116 | + cp "$i" "$MIGRATION_FILENAME" |
| 117 | + fi |
| 118 | + PREVIOUS_VERSION="$VERSION" |
| 119 | + done < <(find $out -name '*.sql' | sort -V) |
| 120 | + } |
| 121 | +
|
| 122 | + create_sql_files |
| 123 | +
|
144 | 124 | # checks
|
145 | 125 | (set -x
|
146 | 126 | test "$(ls -A $out/lib/${pname}*${postgresql.dlSuffix} | wc -l)" = "${
|
|
0 commit comments