1- FROM ubuntu:24.04
2- ARG TARGETARCH
1+ FROM ubuntu:24.04 AS builder
2+ ARG TARGETARCH
33
4- # 1. Install EVERYTHING (Build tools + Runtime tools)
4+ # Install build tools
55RUN apt-get update && apt-get install -y --no-install-recommends \
66 build-essential \
77 cmake \
88 ninja-build \
99 wget \
1010 ca-certificates \
11- python3 \
12- nano \
13- less \
14- git \
15- libxml2 \
1611 libxml2-dev \
1712 && apt-get clean \
1813 && rm -rf /var/lib/apt/lists/*
1914
20- # 2. Install srcML (Runtime and Dev headers together)
21- RUN if [ "$TARGETARCH" = "amd64" ]; then \
22- wget https://github.com/srcML/srcML/releases/download/v1.1.0/srcml_1.1.0-1_ubuntu24.04_amd64.deb \
23- && wget https://github.com/srcML/srcML/releases/download/v1.1.0/srcml-dev_1.1.0-1_ubuntu24.04_amd64.deb; \
24- elif [ "$TARGETARCH" = "arm64" ]; then \
25- wget https://github.com/srcML/srcML/releases/download/v1.1.0/srcml_1.1.0-1_ubuntu24.04_arm64.deb \
26- && wget https://github.com/srcML/srcML/releases/download/v1.1.0/srcml-dev_1.1.0-1_ubuntu22.04_arm64.deb; \
27- else \
28- echo "Unsupported arch: $TARGETARCH" && exit 1; \
29- fi && \
30- apt-get update && apt-get install -y ./*.deb && rm -f ./*.deb
31-
32- # 3. Build and install srcSAX (Force standard paths so nameCollector finds it)
33- COPY srcSAX /srcSAX
15+ # Build and install srcSAX
16+ RUN mkdir -p /srcSAX \
17+ && wget -O /tmp/srcSAX.tar.gz https://github.com/srcML/srcSAX/archive/refs/heads/master.tar.gz \
18+ && tar -xzf /tmp/srcSAX.tar.gz -C /srcSAX --strip-components=1 \
19+ && rm /tmp/srcSAX.tar.gz
3420WORKDIR /srcSAX
3521RUN cmake -B build -G Ninja \
3622 -DCMAKE_INSTALL_PREFIX=/usr/local \
@@ -39,10 +25,50 @@ RUN cmake -B build -G Ninja \
3925 && cd build \
4026 && ninja install
4127
42- # 4. Build nameCollector
43- COPY nameCollector /nameCollector
28+ # Build nameCollector
29+ RUN mkdir -p /nameCollector \
30+ && wget -O /tmp/nameCollector.tar.gz https://github.com/srcML/nameCollector/archive/refs/heads/main.tar.gz \
31+ && tar -xzf /tmp/nameCollector.tar.gz -C /nameCollector --strip-components=1 \
32+ && rm /tmp/nameCollector.tar.gz
4433WORKDIR /nameCollector
4534RUN cmake -B build -G Ninja && cd build && ninja
4635
47- # 5. Set default directory straight to the compiled binary
48- WORKDIR /nameCollector/build/bin
36+ FROM ubuntu:24.04
37+ ARG TARGETARCH
38+
39+ # Install runtime deps only
40+ RUN apt-get update && apt-get install -y --no-install-recommends \
41+ wget \
42+ ca-certificates \
43+ libxml2 \
44+ nano \
45+ && apt-get clean \
46+ && rm -rf /var/lib/apt/lists/* /var/cache/debconf/*-old /var/log/dpkg.log /var/log/apt/*
47+
48+ # Install srcML
49+ RUN if [ "$TARGETARCH" = "amd64" ]; then \
50+ wget https://github.com/srcML/srcML/releases/download/v1.1.0/srcml_1.1.0-1_ubuntu24.04_amd64.deb; \
51+ elif [ "$TARGETARCH" = "arm64" ]; then \
52+ wget https://github.com/srcML/srcML/releases/download/v1.1.0/srcml_1.1.0-1_ubuntu24.04_arm64.deb; \
53+ else \
54+ echo "Unsupported arch: $TARGETARCH" && exit 1; \
55+ fi && \
56+ apt-get update && apt-get install -y ./*.deb && rm -f ./*.deb \
57+ && rm -rf /var/lib/apt/lists/* /var/cache/debconf/*-old /var/log/dpkg.log /var/log/apt/*
58+
59+ # Copy srcSAX shared libs from builder
60+ COPY --from=builder /usr/local/lib/ /usr/local/lib/
61+ RUN ldconfig
62+
63+ # Copy nameCollector binary from builder
64+ COPY --from=builder /nameCollector/build/bin/nameCollector /usr/local/bin/nameCollector
65+
66+ # Install examples
67+ WORKDIR /examples
68+ ARG CACHEBUST=1
69+ RUN wget -qO- https://api.github.com/repos/srcML/nameCollector/releases/tags/v1.0.0 \
70+ | grep -oE '"browser_download_url": *"[^"]*"' \
71+ | sed -E 's/.*"(https:[^"]+)".*/\1 /' \
72+ | wget -i - \
73+ && apt-get remove -y wget && apt-get autoremove -y \
74+ && rm -rf /var/lib/apt/lists/* /var/cache/debconf/*-old /var/log/dpkg.log /var/log/apt/*
0 commit comments