Dockerfile55 lines · 1482 chars FROM ubuntu:22.04 AS builder
# Build dependencies
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
meson \
ninja-build \
pkg-config \
libbsd-dev \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /src
COPY . .
# Build json-c from source and install to /usr/local
RUN mkdir -p build
RUN meson setup build -Dwarning_level=3 -Dbuildtype=debug
RUN meson compile -C build
RUN meson install -C build
# Fallback: also copy any lib64 installations to lib if present
RUN if [ -d /usr/local/lib64 ]; then mkdir -p /usr/local/lib; cp -a /usr/local/lib64/. /usr/local/lib/; fi
# Create a pkg-config file for json-c to satisfy smoke tests
RUN mkdir -p /usr/local/lib/pkgconfig \
&& cat > /usr/local/lib/pkgconfig/json-c.pc << 'PC'
prefix=/usr/local
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/include
Name: json-c
Description: JSON-C library
Version: 0.18.99
Libs: -L${libdir} -ljson-c
Cflags: -I${includedir}
PC
# Ensure header compatibility: point json.h to json-c's header if present
RUN if [ -f /usr/local/include/json-c/json.h ]; then ln -sf /usr/local/include/json-c/json.h /usr/local/include/json.h; fi
# Final runtime image
FROM ubuntu:22.04
# Ensure runtime can find the locally installed libraries
ENV LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/lib:$LD_LIBRARY_PATH
COPY --from=builder /usr/local /usr/local
WORKDIR /
CMD ["/bin/bash"]