From fee3beac4fe63a8353c2d4d2a68f0f690a2e1d68 Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Mon, 29 Apr 2024 13:51:33 -0700 Subject: [PATCH] Removed Docker requirement for building SIF file --- .gitignore | 3 -- Dockerfile | 97 ----------------------------------------------- Makefile | 36 ++++-------------- mobileinsight.def | 90 ++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 95 insertions(+), 131 deletions(-) delete mode 100644 Dockerfile diff --git a/.gitignore b/.gitignore index 730dfce..b071de0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,2 @@ -*.tar.gz *.sif -.docker_build overlay/ -shared/ diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index b79eefd..0000000 --- a/Dockerfile +++ /dev/null @@ -1,97 +0,0 @@ -FROM ubuntu:22.04 - -ARG MAX_THREADS=1 -ARG WS_VER=3.4.0 -ARG MI_BRANCH=ubuntu22-py310 -ARG WIRESHARK_URL=http://www.mobileinsight.net/wireshark-${WS_VER}-rbc-dissector.tar.xz -ADD 00-cpp_compat.patch /build/00-cpp_compat.patch - -# Run apt update -RUN set -ex; \ - export DEBIAN_FRONTEND=noninteractive; \ - apt-get update; \ - apt-get upgrade -y; \ - apt-get install -y \ - git \ - python3 \ - python3-pip \ - python3-wxgtk4.0 \ - python3-matplotlib \ - cmake \ - pkg-config \ - wget \ - libglib2.0-dev \ - bison \ - flex \ - libpcap-dev \ - libgcrypt-dev \ - qtbase5-dev \ - qtchooser \ - qt5-qmake \ - qtbase5-dev-tools \ - qttools5-dev \ - qtmultimedia5-dev \ - libqt5svg5-dev \ - libc-ares-dev \ - libsdl2-mixer-2.0-0 \ - libsdl2-image-2.0-0 \ - libsdl2-2.0-0; - -# Download resources -RUN set -ex; \ - mkdir -p /build; \ - cd /build; \ - wget "$WIRESHARK_URL" -nv -O "wireshark-$WS_VER.tar.xz"; \ - tar -xf "wireshark-$WS_VER.tar.xz"; \ - git clone "https://github.com/mobile-insight/mobileinsight-core.git"; \ - git -C mobileinsight-core checkout "$MI_BRANCH"; - -# Compile and install wireshark -RUN set -ex; \ - cd "/build/wireshark-$WS_VER"; \ - patch epan/epan.h < /build/00-cpp_compat.patch; \ - cmake -DBUILD_wireshark=OFF .; \ - make -j "$MAX_THREADS"; \ - make install; \ - ldconfig; - -# Compile and install Wireshark dissector -Run set -ex; \ - cd /build/mobileinsight-core/ws_dissector; \ - g++ ws_dissector.cpp packet-aww.cpp -o ws_dissector \ - $(pkg-config --libs --cflags glib-2.0) \ - -I"/build/wireshark-$WS_VER" \ - -L"/usr/local/lib" \ - -lwireshark \ - -lwsutil \ - -lwiretap; \ - strip ws_dissector; \ - install -Dm 755 ws_dissector /usr/local/bin/ws_dissector; - -# Compile and install MobileInsight -Run set -ex; \ - cd /build/mobileinsight-core; \ - pip3 install pyserial; \ - python3 setup.py install; - -# Install MobileInsight GUI -Run set -ex; \ - cd /build/mobileinsight-core; \ - mkdir -p /usr/local/share/mobileinsight; \ - cp -r gui/* /usr/local/share/mobileinsight;\ - ln -s /usr/local/share/mobileinsight/mi-gui /usr/local/bin/mi-gui; - -# Install examples -Run set -ex; \ - cd /build/mobileinsight-core; \ - cp -r examples /opt/mobileinsight-examples; - -# Link python3 to python -Run set -ex; \ - cd /usr/bin; \ - ln -s python3 python; - -# Cleanup -Run set -ex; \ - apt-get autoclean -y; \ - rm -rf /build; diff --git a/Makefile b/Makefile index 05ed3ba..d13cf14 100644 --- a/Makefile +++ b/Makefile @@ -1,44 +1,22 @@ -DOCKER ?= docker APPTAINER ?= apptainer OVERLAY_DIR ?= ./overlay -SHARED_DIR ?= ./shared -MAX_THREADS ?= $(shell grep -c processor /proc/cpuinfo) +NUM_THREADS ?= $(shell grep -c processor /proc/cpuinfo) UID := $(shell id -u) GID := $(shell id -g) -.DEFAULT_GOAL := .docker_build +.DEFAULT_GOAL := mobileinsight.sif -.docker_build: Dockerfile - "$(DOCKER)" build --build-arg "MAX_THREADS=$(MAX_THREADS)" -t mobileinsight . - touch "$@" +mobileinsight.sif: mobileinsight.def + "$(APPTAINER)" build --build-arg="NUM_THREADS=$(NUM_THREADS)" "$@" "$<" -mobileinsight.tar.gz: .docker_build - "$(DOCKER)" save mobileinsight:latest | gzip > "$@" - -mobileinsight.sif: mobileinsight.def .docker_build - "$(APPTAINER)" build "$@" "$<" - -run: .docker_build - @mkdir -p "$(SHARED_DIR)" - @test -n "$(shell docker image ls -q mobileinsight)" \ - || (echo Cannot find image mobileinsight:latest, has it been built yet? 1>&2 \ - && false) - @"$(DOCKER)" run --rm -it --privileged -v "$(SHARED_DIR):/mnt" \ - -e TERM -u root --entrypoint bash mobileinsight:latest - -app-run: mobileinsight.sif +run: mobileinsight.sif @mkdir -p "$(OVERLAY_DIR)" @lsmod | grep overlay > /dev/null || sudo modprobe overlay @$(APPTAINER) run --overlay "$(OVERLAY_DIR)" \ -B "/run/user/$(UID)" mobileinsight.sif clean: - "$(DOCKER)" container prune - "$(DOCKER)" image prune -a - rm -f .docker_build mobileinsight.tar.gz mobileinsight.sif + rm -f mobileinsight.sif $(OVERLAY_DIR) -clean-data: - rm -rf $(OVERLAY_DIR) $(SHARED_DIR) - -.PHONY: sc-run run clean clean-data +.PHONY: run clean diff --git a/mobileinsight.def b/mobileinsight.def index 7918624..4b0d801 100644 --- a/mobileinsight.def +++ b/mobileinsight.def @@ -1,5 +1,90 @@ -BootStrap: docker-daemon -From: mobileinsight:latest +BootStrap: docker +From: ubuntu:22.04 + +%arguments + NUM_THREADS=1 + WS_VER=3.4.0 + MI_COMMIT=4b204e0 + +%files + 00-cpp_compat.patch /build/00-cpp_compat.patch + +%post + # Update and install dependencies + mkdir -p /build + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get upgrade -y + apt-get install -y \ + git \ + python3 \ + python3-pip \ + python3-wxgtk4.0 \ + python3-matplotlib \ + cmake \ + pkg-config \ + wget \ + libglib2.0-dev \ + bison \ + flex \ + libpcap-dev \ + libgcrypt-dev \ + qtbase5-dev \ + qtchooser \ + qt5-qmake \ + qtbase5-dev-tools \ + qttools5-dev \ + qtmultimedia5-dev \ + libqt5svg5-dev \ + libc-ares-dev \ + libsdl2-mixer-2.0-0 \ + libsdl2-image-2.0-0 \ + libsdl2-2.0-0 + pip3 install pyserial + + # Download resources + cd /build + wget "http://www.mobileinsight.net/wireshark-{{ WS_VER }}-rbc-dissector.tar.xz" -nv \ + -O "wireshark-{{ WS_VER }}.tar.xz" + tar -xf "wireshark-{{ WS_VER }}.tar.xz" + git clone "https://github.com/mobile-insight/mobileinsight-core.git" + git -C mobileinsight-core checkout "{{ MI_COMMIT }}" + + # Compile and install wireshark + cd "/build/wireshark-{{ WS_VER }}" + patch epan/epan.h < /build/00-cpp_compat.patch + cmake -DBUILD_wireshark=OFF . + make -j "{{ NUM_THREADS }}" + make install + ldconfig + + # Compile and install Wireshark dissector + cd /build/mobileinsight-core/ws_dissector + g++ ws_dissector.cpp packet-aww.cpp -o ws_dissector \ + $(pkg-config --libs --cflags glib-2.0) \ + -I"/build/wireshark-{{ WS_VER }}" \ + -L"/usr/local/lib" \ + -lwireshark \ + -lwsutil \ + -lwiretap + strip ws_dissector + install -Dm 755 ws_dissector /usr/local/bin/ws_dissector + + # Compile and install MobileInsight + cd /build/mobileinsight-core + python3 setup.py install + mkdir -p /usr/local/share/mobileinsight + cp -r gui/* /usr/local/share/mobileinsight + ln -s /usr/local/share/mobileinsight/mi-gui /usr/local/bin/mi-gui + cp -r examples /opt/mobileinsight-examples + + # Link python3 to python + cd /usr/bin + ln -s python3 python + + # Cleanup + apt-get autoclean -y + rm -rf /build %runscript set -e @@ -9,3 +94,4 @@ From: mobileinsight:latest else "$@" fi +