diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 8067909b..1d9c0a67 100755 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,6 +1,33 @@ -# Rust latest -FROM mcr.microsoft.com/devcontainers/rust:latest - -# Install Required Dependencies -RUN apt-get -qq update -RUN apt-get install -y build-essential cmake git libgit2-dev clang libncurses5-dev libncursesw5-dev zlib1g-dev pkg-config libssl-dev llvm +# Rust latest +FROM mcr.microsoft.com/devcontainers/rust:latest + +# Install Required Dependencies +RUN apt-get -qq update +RUN apt-get install -y \ + build-essential \ + clang \ + cmake \ + fuse \ + gh \ + git \ + libgit2-dev \ + libncurses5-dev \ + libncursesw5-dev \ + libssl-dev \ + llvm \ + pkg-config \ + snapd \ + squashfuse \ + sudo \ + zlib1g-dev + +RUN echo '#!/bin/bash\n\ +/usr/lib/snapd/snapd &\n\ +sleep 5\n\ +exec "$@"' > /start-snapd.sh && \ + chmod +x /start-snapd.sh + +VOLUME ["/sys/fs/cgroup"] + +ENTRYPOINT ["/start-snapd.sh"] +CMD ["bash"] diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index ba8003bd..fe05b995 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -16,5 +16,6 @@ "github.copilot-chat" ] } - } + }, + "runArgs": ["--privileged", "-v", "/sys/fs/cgroup:/sys/fs/cgroup:ro", "-v", "/tmp:/tmp"] } \ No newline at end of file diff --git a/.github/workflows/snap.yaml b/.github/workflows/snap.yaml new file mode 100644 index 00000000..273c12a7 --- /dev/null +++ b/.github/workflows/snap.yaml @@ -0,0 +1,45 @@ +name: Snap Package + +on: + workflow_dispatch: + push: + branches: + - master + - staging + +jobs: + build-snap: + name: Build snap + strategy: + matrix: + runs-on: [ubuntu-latest, ubuntu-24.04-arm] + runs-on: ${{ matrix.runs-on }} + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Prepare snapcraft project + run: | + grade=devel + if [ "${{ github.ref_name }}" = "master" ]; then + grade=stable + fi + + mkdir -p snap + sed "s/SNAP_GRADE/$grade/" .packaging/snaps/snapcraft.yaml > snap/snapcraft.yaml + + - name: Build snap package + id: build + uses: snapcore/action-build@v1 + with: + path: . + + - name: Show snap package + run: find . -maxdepth 1 -name "*.snap" -ls + + - name: Upload snap artifact + uses: actions/upload-artifact@v6 + with: + name: grin-snap + path: "*.snap" + if-no-files-found: error diff --git a/.packaging/snaps/snapcraft.yaml b/.packaging/snaps/snapcraft.yaml new file mode 100644 index 00000000..ec1bfec4 --- /dev/null +++ b/.packaging/snaps/snapcraft.yaml @@ -0,0 +1,40 @@ +name: grin +adopt-info: grin +summary: Minimal implementation of the Mimblewimble protocol +description: | + https://grin.mw/ + +confinement: strict +grade: SNAP_GRADE +base: core22 +architectures: + - build-on: [arm64] + build-for: [arm64] + - build-on: [amd64] + build-for: [amd64] + +parts: + grin: + plugin: rust + source: . + override-pull: | + craftctl default + craftctl set version="$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n 1)" + build-packages: + - build-essential + - clang + - cmake + - libncurses5-dev + - libncursesw5-dev + - libssl-dev + - llvm + - pkg-config + - zlib1g-dev + +apps: + grin: + environment: + LC_ALL: C.UTF-8 + LANG: C.UTF-8 + command: bin/grin + plugs: [network, network-bind]