From 55f29e6190d413a0bc61746d0f7b79cfb876f64f Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Sun, 16 Apr 2023 11:40:21 +0200 Subject: [PATCH] ci: snap ci config --- README.md | 2 +- snap/snapcraft.yaml | 161 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 snap/snapcraft.yaml diff --git a/README.md b/README.md index 5665e83..d64e309 100644 --- a/README.md +++ b/README.md @@ -42,4 +42,4 @@ On Linux you can simply download and run the `.AppImage` distribution or install ### Windows On Windows you can choose between downloading the app from Microsoft Store or downloading the `.exe` from [this github repo](https://github.com/Fabio286/mizar/releases/latest). -Distributions that are not from Microsoft Store are not signed with a certificate, so to install you need to click on "More info" and then "Run anyway" on SmartScreen prompt. \ No newline at end of file +Distributions that are not from Microsoft Store are not signed with a certificate, so to install you need to click on "More info" and then "Run anyway" on SmartScreen prompt. diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 0000000..e1130d7 --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,161 @@ +name: mizar +adopt-info: mizar +summary: A TCP testing tool, useful and intuitive to use right out of the box. +description: | + Mizar is a TCP tester/debugger designed to be immediately useful and intuitive to use right out of the box. + The purpose of Mizar is to help developers working on software that communicates over TCP protocol by speeding up debugging and testing from the earliest stages of development. +base: core20 + +grade: stable +confinement: strict + +architectures: + - build-on: amd64 +compression: lzo +layout: + /etc/nsswitch.conf: + bind-file: $SNAP/etc/nsswitch.conf + +parts: + mizar: + plugin: dump + source: . + override-build: | + snapcraftctl build + ARCHITECTURE=$(dpkg --print-architecture) + if [ "${ARCHITECTURE}" = "amd64" ]; then + FILTER="amd64.deb" + else + echo "ERROR! Mizar only produces debs for amd64. Failing the build here." + exit 1 + fi + # Get the latest releases json + echo "Get GitHub releases..." + wget --quiet https://api.github.com/repos/fabio286/mizar/releases/latest -O releases.json + # Get the version from the tag_name and the download URL. + VERSION=$(jq . releases.json | grep tag_name | cut -d'"' -f4 | sed s'/release-//') + DEB_URL=$(cat releases.json | jq -r ".assets[] | select(.name | test(\"${FILTER}\")) | .browser_download_url") + DEB=$(basename "${DEB_URL}") + echo "Downloading ${DEB_URL}..." + wget --quiet "${DEB_URL}" -O "${SNAPCRAFT_PART_INSTALL}/${DEB}" + echo "Unpacking ${DEB}..." + dpkg -x "${SNAPCRAFT_PART_INSTALL}/${DEB}" ${SNAPCRAFT_PART_INSTALL} + rm -f releases.json 2>/dev/null + rm -f "${SNAPCRAFT_PART_INSTALL}/${DEB}" 2>/dev/null + echo $VERSION > $SNAPCRAFT_STAGE/version + # Correct path to icon. + sed -i 's|Icon=mizar|Icon=/usr/share/icons/hicolor/256x256/apps/mizar\.png|g' ${SNAPCRAFT_PART_INSTALL}/usr/share/applications/mizar.desktop + # Delete usr/bin/mizar, it's a broken symlink pointing outside the snap. + rm -f ${SNAPCRAFT_PART_INSTALL}/usr/bin/mizar + chmod -s ${SNAPCRAFT_PART_INSTALL}/opt/Mizar/chrome-sandbox + snapcraftctl set-version "$(echo $VERSION)" + build-packages: + - dpkg + - jq + - sed + - wget + stage-packages: + - fcitx-frontend-gtk3 + - libappindicator3-1 + - libasound2 + - libcurl4 + - libgconf-2-4 + - libgtk-3-0 + - libnotify4 + - libnspr4 + - libnss3 + - libpcre3 + - libpulse0 + - libxss1 + - libsecret-1-0 + - libxtst6 + - libxkbfile1 + - gcc-10-base + - libapparmor1 + - libblkid1 + - libbsd0 + - libcom-err2 + - libcrypt1 + - libdb5.3 + - libdbus-1-3 + - libexpat1 + - libffi7 + - libgcc-s1 + - libgcrypt20 + - libglib2.0-0 + - libgmp10 + - libgnutls30 + - libgpg-error0 + - libgssapi-krb5-2 + - libhogweed5 + - libidn2-0 + - libjson-c4 + - libk5crypto3 + - libkeyutils1 + - libkrb5-3 + - libkrb5support0 + - liblz4-1 + - liblzma5 + - libmount1 + - libnettle7 + - libp11-kit0 + - libpcre2-8-0 + - libselinux1 + - libsqlite3-0 + - libssl1.1 + - libstdc++6 + - libsystemd0 + - libtasn1-6 + - libudev1 + - libunistring2 + - libuuid1 + - libwrap0 + - libzstd1 + - zlib1g + - libx11-xcb1 + - libdrm2 + - libgbm1 + - libxcb-dri3-0 + cleanup: + after: [mizar] + plugin: nil + build-snaps: [gnome-3-38-2004] + override-prime: | + set -eux + cd /snap/gnome-3-38-2004/current + find . -type f,l -exec rm -f $SNAPCRAFT_PRIME/{} \; + + mdns-lookup: + # Make resolution of ".local" host names (Zero-Conf/mDNS/DNS-SD) + # working: Take the original nsswitch.conf file from the base + # Snap and add "mdns4_minimal [NOTFOUND=return]" to its "hosts:" line + # Also install corresponding mdns4_minimal plug-in + # See: https://forum.snapcraft.io/t/no-mdns-support-in-snaps-should-core-have-a-modified-nsswitch-conf/ + plugin: nil + stage-packages: + - libnss-mdns + override-prime: | + set -eux + sed -Ee 's/^\s*hosts:(\s+)files/hosts:\1files mdns4_minimal \[NOTFOUND=return\]/' /snap/core20/current/etc/nsswitch.conf > $SNAPCRAFT_STAGE/etc/nsswitch.conf + snapcraftctl prime + prime: + - lib/$SNAPCRAFT_ARCH_TRIPLET/libnss_mdns4_minimal* + - etc/nsswitch.conf + +apps: + mizar: + command: opt/Mizar/mizar --no-sandbox + desktop: usr/share/applications/mizar.desktop + extensions: [gnome-3-38] + environment: + # Fallback to XWayland if running in a Wayland session. + DISABLE_WAYLAND: 1 + plugs: + - browser-support + - cups-control + - home + - network + - opengl + - pulseaudio + - removable-media + - unity7