Skip to content

Commit 1237e64

Browse files
imordarora
authored andcommitted
chore: compile pg_graphql from source for OrioleDb Dockerfile
1 parent 172611d commit 1237e64

File tree

1 file changed

+65
-6
lines changed

1 file changed

+65
-6
lines changed

docker/orioledb/Dockerfile

Lines changed: 65 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ ARG rum_release=1.3.13
2424
ARG pg_hashids_release=cd0e1b31d52b394a0df64079406a14a4f7387cd6
2525
ARG libsodium_release=1.0.18
2626
ARG pgsodium_release=3.1.6
27-
ARG pg_graphql_release=1.2.2
27+
ARG pg_graphql_release=1.4.2
2828
ARG pg_stat_monitor_release=1.1.1
2929
ARG pg_jsonschema_release=0.1.4
3030
ARG vault_release=0.2.8
@@ -74,6 +74,17 @@ ENV PATH=/usr/lib/ccache:$PATH
7474
# Used to update ccache
7575
ARG CACHE_EPOCH
7676

77+
FROM builder as rust-toolchain
78+
ENV PATH=/root/.cargo/bin:$PATH
79+
RUN apt-get update && apt-get install -y --no-install-recommends curl pkg-config && \
80+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --profile minimal --default-toolchain nightly && \
81+
rustup --version && \
82+
rustc --version && \
83+
cargo --version
84+
85+
RUN cargo install cargo-pgrx --version 0.10.2 --locked
86+
RUN cargo pgrx init --pg${postgresql_major} $(which pg_config)
87+
7788
####################
7889
# 01-postgis.yml
7990
####################
@@ -546,11 +557,59 @@ RUN checkinstall -D --install=no --fstrans=no --backup=no --pakdir=/tmp --requir
546557
####################
547558
# 19-pg_graphql.yml
548559
####################
549-
FROM base as pg_graphql
550-
# Download package archive
560+
FROM rust-toolchain as pg_graphql-source
561+
# Download and extract
551562
ARG pg_graphql_release
552-
ADD "https://github.com/supabase/pg_graphql/releases/download/v${pg_graphql_release}/pg_graphql-v${pg_graphql_release}-pg${postgresql_major}-${TARGETARCH}-linux-gnu.deb" \
553-
/tmp/pg_graphql.deb
563+
ARG pg_graphql_release_checksum
564+
ADD --checksum=${pg_graphql_release_checksum} \
565+
"https://github.com/supabase/pg_graphql/archive/refs/tags/v${pg_graphql_release}.tar.gz" \
566+
/tmp/pg_graphql.tar.gz
567+
RUN tar -xvf /tmp/pg_graphql.tar.gz -C /tmp && \
568+
rm -rf /tmp/pg_graphql.tar.gz
569+
WORKDIR /tmp/pg_graphql-${pg_graphql_release}
570+
RUN cargo pgrx package --no-default-features --features pg${postgresql_major}
571+
572+
# Create installable package
573+
RUN ls -al target/release
574+
RUN mkdir archive
575+
RUN cp target/release/pg_graphql-pg${postgresql_major}/usr/local/share/postgresql/extension/pg_graphql* archive
576+
RUN cp target/release/pg_graphql-pg${postgresql_major}/usr/local/lib/postgresql/pg_graphql.so archive
577+
# name of the package directory before packaging
578+
ENV package_dir=pg_graphql-v${pg_graphql_release}-pg${postgresql_major}-${TARGETARCH}-linux-gnu
579+
580+
## Copy files into directory structure
581+
RUN mkdir -p ${package_dir}/usr/lib/postgresql/lib
582+
RUN mkdir -p ${package_dir}/var/lib/postgresql/extension
583+
RUN cp archive/*.so ${package_dir}/usr/lib/postgresql/lib
584+
RUN cp archive/*.control ${package_dir}/var/lib/postgresql/extension
585+
RUN cp archive/*.sql ${package_dir}/var/lib/postgresql/extension
586+
587+
# symlinks to Copy files into directory structure
588+
RUN mkdir -p ${package_dir}/usr/lib/postgresql/${postgresql_major}/lib
589+
WORKDIR ${package_dir}/usr/lib/postgresql/${postgresql_major}/lib
590+
RUN cp -s ../../lib/*.so .
591+
WORKDIR ../../../../../..
592+
593+
RUN mkdir -p ${package_dir}/usr/share/postgresql/${postgresql_major}/extension
594+
WORKDIR ${package_dir}/usr/share/postgresql/${postgresql_major}/extension
595+
596+
RUN cp -s ../../../../../var/lib/postgresql/extension/pg_graphql.control .
597+
RUN cp -s ../../../../../var/lib/postgresql/extension/pg_graphql*.sql .
598+
WORKDIR ../../../../../..
599+
600+
RUN mkdir -p ${package_dir}/DEBIAN
601+
RUN touch ${package_dir}/DEBIAN/control
602+
RUN echo 'Package: pg-graphql' >> ${package_dir}/DEBIAN/control
603+
RUN echo 'Version:' ${pg_graphql_release} >> ${package_dir}/DEBIAN/control
604+
RUN echo "Architecture: ${TARGETARCH}" >> ${package_dir}/DEBIAN/control
605+
RUN echo 'Maintainer: supabase' >> ${package_dir}/DEBIAN/control
606+
RUN echo 'Description: A PostgreSQL extension' >> ${package_dir}/DEBIAN/control
607+
608+
# Create deb package
609+
RUN chown -R root:root ${package_dir}
610+
RUN chmod -R 00755 ${package_dir}
611+
RUN dpkg-deb --build --root-owner-group ${package_dir}
612+
RUN cp ./*.deb /tmp/pg_graphql.deb
554613

555614
####################
556615
# 20-pg_stat_monitor.yml
@@ -808,7 +867,7 @@ COPY --from=pg_net-source /tmp/*.deb /tmp/
808867
COPY --from=rum-source /tmp/*.deb /tmp/
809868
COPY --from=pgsodium-source /tmp/*.deb /tmp/
810869
COPY --from=pg_hashids-source /tmp/*.deb /tmp/
811-
COPY --from=pg_graphql /tmp/*.deb /tmp/
870+
COPY --from=pg_graphql-source /tmp/*.deb /tmp/
812871
COPY --from=pg_stat_monitor-source /tmp/*.deb /tmp/
813872
COPY --from=pg_jsonschema /tmp/*.deb /tmp/
814873
COPY --from=vault-source /tmp/*.deb /tmp/

0 commit comments

Comments
 (0)