Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 45 additions & 12 deletions .docker/poc/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,49 @@ RUN if [ "$(uname -m)" = "aarch64" ] || [ "$(uname -m)" = "arm64" ]; then \
else \
LIB_SUBDIR="x86_64-linux-gnu"; \
fi \
&& mkdir -p ${DAS_DIR}/syslibs/usr/lib/${LIB_SUBDIR} ${DAS_DIR}/syslibs/lib/${LIB_SUBDIR} ${DAS_DIR}/syslibs/etc/ssl/certs \
&& cp -f /usr/lib/${LIB_SUBDIR}/libssl.so.3 ${DAS_DIR}/syslibs/usr/lib/${LIB_SUBDIR}/ 2>/dev/null || true \
&& cp -f /usr/lib/${LIB_SUBDIR}/libcrypto.so.3 ${DAS_DIR}/syslibs/usr/lib/${LIB_SUBDIR}/ 2>/dev/null || true \
&& cp -f /lib/${LIB_SUBDIR}/libz.so.1 ${DAS_DIR}/syslibs/lib/${LIB_SUBDIR}/ 2>/dev/null || true \
&& cp -f /usr/lib/${LIB_SUBDIR}/libzstd.so.1 ${DAS_DIR}/syslibs/usr/lib/${LIB_SUBDIR}/ 2>/dev/null || true \
&& cp -f /usr/lib/${LIB_SUBDIR}/libsnappy.so.1 ${DAS_DIR}/syslibs/usr/lib/${LIB_SUBDIR}/ 2>/dev/null || true \
&& cp -f /lib/${LIB_SUBDIR}/libbz2.so.1.0 ${DAS_DIR}/syslibs/lib/${LIB_SUBDIR}/ 2>/dev/null || true \
&& cp -f /lib/${LIB_SUBDIR}/liblzma.so.5 ${DAS_DIR}/syslibs/lib/${LIB_SUBDIR}/ 2>/dev/null || true \
&& cp -f /usr/lib/${LIB_SUBDIR}/libcurl.so.4 ${DAS_DIR}/syslibs/usr/lib/${LIB_SUBDIR}/ 2>/dev/null || true \
&& cp -f /usr/lib/${LIB_SUBDIR}/libevent-2.1.so.7 ${DAS_DIR}/syslibs/usr/lib/${LIB_SUBDIR}/ 2>/dev/null || true \
&& mkdir -p ${DAS_DIR}/syslibs/usr/lib/${LIB_SUBDIR} \
${DAS_DIR}/syslibs/lib/${LIB_SUBDIR} \
${DAS_DIR}/syslibs/etc/ssl/certs \
# --- usr/lib/ libraries ---
&& USR_LIBS=" \
libssl.so.3 \
libcrypto.so.3 \
libzstd.so.1 \
libsnappy.so.1 \
libcurl.so.4 \
libevent-2.1.so.7 \
# Libs from here and on are related to the libpqxx lib, used by the database-adapter.
libgssapi_krb5.so.2 \
libkrb5.so.3 \
libk5crypto.so.3 \
libcom_err.so.2 \
libkrb5support.so.0 \
liblber-2.5.so.0 \
libkeyutils.so.1 \
libp11-kit.so.0 \
libidn2.so.0 \
libunistring.so.2 \
libtasn1.so.6 \
libnettle.so.8 \
libhogweed.so.6 \
libgmp.so.10 \
libffi.so.8 \
libldap-2.5.so.0 \
libsasl2.so.2 \
libgnutls.so.30 \
" \
# lib/ folder libraries ---
&& LIB_LIBS=" \
libz.so.1 \
libbz2.so.1.0 \
liblzma.so.5 \
" \
&& for lib in $USR_LIBS; do \
cp -f /usr/lib/${LIB_SUBDIR}/$lib ${DAS_DIR}/syslibs/usr/lib/${LIB_SUBDIR}/ 2>/dev/null || true; \
done \
&& for lib in $LIB_LIBS; do \
cp -f /lib/${LIB_SUBDIR}/$lib ${DAS_DIR}/syslibs/lib/${LIB_SUBDIR}/ 2>/dev/null || true; \
done \
&& cp -f /etc/ssl/certs/ca-certificates.crt ${DAS_DIR}/syslibs/etc/ssl/certs/ 2>/dev/null || true

FROM gcr.io/distroless/cc-debian12:nonroot AS runner
Expand All @@ -61,8 +94,8 @@ COPY --from=builder /opt/das/syslibs/usr/lib/ /usr/lib/
COPY --from=builder /opt/das/syslibs/lib/ /lib/
COPY --from=builder /opt/das/syslibs/etc/ssl/certs/ /etc/ssl/certs/

ENV LD_LIBRARY_PATH=/usr/local/lib:/usr/lib/x86_64-linux-gnu:/usr/lib/aarch64-linux-gnu:/lib/x86_64-linux-gnu:/lib/aarch64-linux-gnu
ENV LD_LIBRARY_PATH=/opt/das/lib:/usr/local/lib:/usr/lib/x86_64-linux-gnu:/usr/lib/aarch64-linux-gnu:/lib/x86_64-linux-gnu:/lib/aarch64-linux-gnu

USER nonroot:nonroot

CMD [ "query_broker" ]
CMD [ "busnode" ]
17 changes: 17 additions & 0 deletions .github/scripts/bazel_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ BAZEL_BINARY_TARGETS=(
"//:tests_db_loader"
"//:busnode"
"//:busclient"
"//:database_adapter"
)

BAZEL_BINARY_OUTPUTS=(
Expand All @@ -78,6 +79,7 @@ BAZEL_BINARY_OUTPUTS=(
"bazel-bin/tests_db_loader"
"bazel-bin/busnode"
"bazel-bin/busclient"
"bazel-bin/database_adapter"
)

BAZEL_LIB_OUTPUTS=(
Expand Down Expand Up @@ -181,6 +183,21 @@ if [ -d "$LIB_DIR" ]; then
done
fi

echo "[INFO] Copying database-adapter shared library dependencies into $LIB_DIR..."

find "$BIN_DIR" -type f -executable -name "database_adapter" | while IFS= read -r binfile; do
ldd "$binfile" | awk '/=> \// { print $3 }' | while IFS= read -r dep; do
dep_base=$(basename "$dep")
case "$dep_base" in
"libpq.so.5")
if [ -f "$dep" ]; then
cp -f "$dep" "$LIB_DIR"
fi
;;
esac
done
done

echo "[INFO] Build finished successfully."
echo "[INFO] Binaries in: $BIN_DIR"
echo "[INFO] Libraries in: $LIB_DIR"
Expand Down
26 changes: 25 additions & 1 deletion .github/scripts/setup_bazel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,14 @@ sudo apt update -y
sudo apt install -y \
git build-essential curl protobuf-compiler python3 python3-pip \
cmake unzip uuid-runtime lcov bc \
libevent-dev libssl-dev pkg-config libncurses5
libevent-dev libssl-dev pkg-config libncurses5 libpq-dev

echo "[INFO] Cleaning apt cache..."
sudo apt clean -y || true
sudo rm -rf /var/lib/apt/lists/* || true

# Installing bazelisk and copying other assets.

echo "[INFO] Installing 3rd-party tools (bazelisk, buildifier)..."

if [[ ! -f "${ASSETS_DIR}/3rd-party.tgz" ]]; then
Expand Down Expand Up @@ -119,6 +121,28 @@ if ! id "builder" &>/dev/null; then
sudo useradd -ms /bin/bash builder
fi

echo "[INFO] Installing libpqxx (PostgreSQL C++ client)..."

if [[ ! -f "${ASSETS_DIR}/libpqxx-7.10.5.tar.gz" ]]; then
echo "[ERROR] ${ASSETS_DIR}/libpqxx-7.10.5.tar.gz not found."
exit 1
fi

cp "${ASSETS_DIR}/libpqxx-7.10.5.tar.gz" "${TMP_DIR}/"
cd "${TMP_DIR}"
tar xzvf libpqxx-7.10.5.tar.gz
cd libpqxx-7.10.5

cmake -S . -B build \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DBUILD_TESTING=OFF \
-DCMAKE_INSTALL_PREFIX=/usr/local

cmake --build build -j"$(nproc)"

sudo cmake --install build
sudo ldconfig

echo "[INFO] Configuring git safe.directory for ${DAS_DIR}..."
sudo -u builder git config --global --add safe.directory "${DAS_DIR}"

Expand Down
4 changes: 2 additions & 2 deletions src/package/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ pkg_rpm(
"@platforms//os:linux": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
version = "1.0.3",
version = "1",
)

# DEB Packaging Setup
Expand Down Expand Up @@ -119,5 +119,5 @@ pkg_deb(
description = "Distributed AtomSpace Binaries and Libraries",
maintainer = "Hyperon DAS Team",
package = "das",
version = "1.0.3",
version = "1",
)
15 changes: 14 additions & 1 deletion src/scripts/bazel_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ if [ "$BUILD_BINARIES" = true ]; then
MOVE_BIN_TARGETS+=" bazel-bin/tests_db_loader"
MOVE_BIN_TARGETS+=" bazel-bin/database_adapter"


fi

if [ "$BUILD_WHEELS" = true ]; then
Expand All @@ -87,5 +86,19 @@ find "$LIB_DIR" -type f -name "*.so" | while IFS= read -r sofile; do
done
done

# Add exclusive block just to handle database_adapter SO dependencies.

find "$BIN_DIR" -type f -executable -name "database_adapter" | while IFS= read -r binfile; do
ldd "$binfile" | awk '/=> \// { print $3 }' | while IFS= read -r dep; do
dep_base=$(basename "$dep")
case "$dep_base" in
"libpq.so.5")
if [ -f "$dep" ]; then
cp -f "$dep" "$LIB_DIR"
fi
;;
esac
done
done

exit $?
23 changes: 20 additions & 3 deletions src/scripts/bazel_package.sh
Original file line number Diff line number Diff line change
Expand Up @@ -57,16 +57,33 @@ find "$BUILT_TARGETS_PATH" -type f -name "*.so" | while IFS= read -r sofile; do
done
done

find "$BUILT_TARGETS_PATH" -type f -executable -name "database_adapter" | while IFS= read -r binfile; do
ldd "$binfile" | awk '/=> \// { print $3 }' | while IFS= read -r dep; do
dep_base=$(basename "$dep")
case "$dep_base" in
"libpq.so.5")
if [ -f "$dep" ]; then
cp -f "$dep" "$EXTERNAL_LIBS_PATH"
fi
;;
esac
done
done

if [[ "$PACKAGE_TYPE" == "deb" ]]; then
BUILD_TARGETS=" //package:das_deb_package"
$BAZELISK_BUILD_CMD $BUILD_TARGETS
cp -L bazel-bin/package/das_1.0.3_amd64.deb $PKG_DIR

LATEST_DEB=$(ls -t bazel-bin/package/*.deb | head -n 1)
cp -L "$LATEST_DEB" "$PKG_DIR/das_package.deb"

elif [[ "$PACKAGE_TYPE" == "rpm" ]]; then
BUILD_TARGETS=" //package:das_rpm_package"
$BAZELISK_BUILD_CMD $BUILD_TARGETS
cp -L bazel-bin/package/das-1.0.3-1.x86_64.rpm $PKG_DIR

LATEST_RPM=$(ls -t bazel-bin/package/*.rpm | head -n 1)
cp -L "$LATEST_RPM" "$PKG_DIR/das_package.rpm"
fi

rm -rf $EXTERNAL_LIBS_PATH
rm -rf "$EXTERNAL_LIBS_PATH"
exit $?
Loading