File: Dockerfile

package info (click to toggle)
js8call 2.5.2%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 24,720 kB
  • sloc: cpp: 562,651; sh: 898; python: 132; ansic: 102; makefile: 4
file content (76 lines) | stat: -rw-r--r-- 2,480 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# Optimized multi-stage Dockerfile for JS8Call
# Uses pre-built base and hamlib images for faster builds

# Build JS8Call using cached base image
FROM js8call-hamlib:latest AS js8call-builder

# Copy source files for building
WORKDIR /js8call-prefix/src

# Copy everything except what's in .dockerignore
# This is simpler and matches the original working Dockerfile
COPY --link . .

# Build JS8Call with ccache
WORKDIR /js8call-prefix/build
RUN --mount=type=cache,target=/ccache \
    cmake -D CMAKE_PREFIX_PATH=/hamlib-prefix \
    -D CMAKE_INSTALL_PREFIX=/js8call-prefix \
    -D CMAKE_BUILD_TYPE=Release \
    -D CMAKE_C_COMPILER_LAUNCHER=ccache \
    -D CMAKE_CXX_COMPILER_LAUNCHER=ccache \
    ../src \
    && make -j$(nproc)

# Create debian package
RUN make package

# Stage for AppImage creation
FROM js8call-builder AS appimage-builder

# Create AppDir structure
WORKDIR /appimage
RUN mkdir -p AppDir

# Install JS8Call to AppDir
WORKDIR /js8call-prefix/build
RUN make DESTDIR=/appimage/AppDir install

# Copy desktop file and icon if needed
RUN test -f /appimage/AppDir/usr/share/applications/js8call.desktop || \
    cp /js8call-prefix/src/js8call.desktop /appimage/AppDir/usr/share/applications/ && \
    if [ ! -f /appimage/AppDir/usr/share/icons/hicolor/128x128/apps/js8call_icon.png ]; then \
        mkdir -p /appimage/AppDir/usr/share/icons/hicolor/128x128/apps && \
        convert /js8call-prefix/src/artwork/js8call_icon.png -resize 128x128 \
            /appimage/AppDir/usr/share/icons/hicolor/128x128/apps/js8call_icon.png; \
    fi

# Create AppImage
WORKDIR /appimage
RUN EXEC_PATH=$(find AppDir -type f -name "js8call" -executable | head -1) && \
    echo "Found executable at: $EXEC_PATH" && \
    linuxdeploy --appdir AppDir \
    --executable "$EXEC_PATH" \
    --plugin qt \
    --output appimage \
    --desktop-file AppDir/usr/share/applications/js8call.desktop \
    --icon-file AppDir/usr/share/icons/hicolor/128x128/apps/js8call_icon.png

# Final output stage - using minimal image with shell for extraction
FROM busybox:latest AS output
COPY --from=js8call-builder /js8call-prefix/build/*.deb /
COPY --from=appimage-builder /appimage/*.AppImage /

# Development stage with source mounted
FROM js8call-hamlib:latest AS development

# Install additional development tools
RUN apt-get update && apt-get install -y \
    gdb \
    valgrind \
    clang-format \
    vim \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /js8call-prefix
CMD ["/bin/bash"]