json-c-json-c
SUCCESS
10m 48s
History Source
SummaryIterations1Transcript17Dockerfile
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"]