diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index 23dfdf5..caa4806 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -81,7 +81,7 @@ jobs: - name: Install Dependencies [Witness Generator] run: sudo apt install nlohmann-json3-dev - - name: Compile Prover + - name: Compile Prover and Verifier working-directory: repo/circom_circuits/rapidsnark run: | ./build_gmp.sh host @@ -95,30 +95,64 @@ jobs: working-directory: repo/circom_circuits/Mantle/pol_cpp run: make pol - - name: Bundle + - name: Bundle Rapidsnark Prover working-directory: repo env: - BUNDLE_NAME: circom_circuits-${{ env.OS }}-${{ env.ARCH }} - WITNESS_GENERATOR_DIR: circom_circuits/Mantle/pol_cpp + BINARY_NAME: prover + BUNDLE_NAME: prover-${{ env.OS }}-${{ env.ARCH }} RAPIDSNARK_DIR: circom_circuits/rapidsnark/package run: | - BUNDLE_DIR_WITNESS_GENERATOR="${BUNDLE_NAME}/witness-generator" - BUNDLE_DIR_RAPIDSNARK="${BUNDLE_NAME}/rapidsnark" + BUNDLE_DIR="${BUNDLE_NAME}/${BINARY_NAME}" + mkdir -p "$BUNDLE_DIR" + + mv "${RAPIDSNARK_DIR}"/bin/${BINARY_NAME} "$BUNDLE_DIR/" + + tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" + + - name: Bundle Rapidsnark Verifier + working-directory: repo + env: + BINARY_NAME: verifier + BUNDLE_NAME: verifier-${{ env.OS }}-${{ env.ARCH }} + RAPIDSNARK_DIR: circom_circuits/rapidsnark/package + run: | + BUNDLE_DIR="${BUNDLE_NAME}/${BINARY_NAME}" + mkdir -p "$BUNDLE_DIR" + + mv "${RAPIDSNARK_DIR}"/bin/${BINARY_NAME} "$BUNDLE_DIR/" + + tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" + + - name: Bundle Pol Witness Generator + working-directory: repo + env: + BUNDLE_NAME: pol-${{ env.OS }}-${{ env.ARCH }} + WITNESS_GENERATOR_DIR: circom_circuits/Mantle/pol_cpp + run: | + BUNDLE_DIR="${BUNDLE_NAME}/witness-generator" + mkdir -p "$BUNDLE_DIR" - mkdir -p "$BUNDLE_DIR_WITNESS_GENERATOR" "$BUNDLE_DIR_RAPIDSNARK" - - mv "${WITNESS_GENERATOR_DIR}/pol" "$BUNDLE_DIR_WITNESS_GENERATOR/" - mv "${WITNESS_GENERATOR_DIR}/pol.dat" "$BUNDLE_DIR_WITNESS_GENERATOR/" - - mv "${RAPIDSNARK_DIR}"/bin/{prover,verifier} "$BUNDLE_DIR_RAPIDSNARK/" + mv "${WITNESS_GENERATOR_DIR}"/{pol,pol.dat} "$BUNDLE_DIR/" tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" - - name: Upload Bundle + - name: Upload Rapidsnark Prover uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: circom_circuits-${{ env.OS }}-${{ env.ARCH }}.tar.gz - path: repo/circom_circuits-${{ env.OS }}-${{ env.ARCH }}.tar.gz + name: prover-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/prover-${{ env.OS }}-${{ env.ARCH }}.tar.gz + + - name: Upload Rapidsnark Verifier + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: verifier-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/verifier-${{ env.OS }}-${{ env.ARCH }}.tar.gz + + - name: Upload Pol Witness Generator + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: pol-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/pol-${{ env.OS }}-${{ env.ARCH }}.tar.gz build-windows: name: Build Windows Binaries (Native) @@ -219,8 +253,8 @@ jobs: run: circom --c --r1cs --no_asm pol.circom - name: Replace Witness Generator Makefile # TODO: Make a fork generate the appropriate Windows Makefile - working-directory: repo shell: msys2 {0} + working-directory: repo run: cp .github/resources/witness-generator/${{ env.OS }}.Makefile circom_circuits/Mantle/pol_cpp/Makefile - name: Compile Witness Generator @@ -228,35 +262,80 @@ jobs: working-directory: repo/circom_circuits/Mantle/pol_cpp run: make pol.exe - - name: Bundle - working-directory: repo + - name: Bundle Rapidsnark Prover shell: msys2 {0} + working-directory: repo env: - BUNDLE_NAME: circom_circuits-${{ env.OS }}-${{ env.ARCH }} - WITNESS_GENERATOR_DIR: circom_circuits/Mantle/pol_cpp + BINARY_NAME: prover + BUNDLE_NAME: prover-${{ env.OS }}-${{ env.ARCH }} RAPIDSNARK_DIR: circom_circuits/rapidsnark/package run: | - BUNDLE_DIR_WITNESS_GENERATOR="${BUNDLE_NAME}/witness-generator" - BUNDLE_DIR_RAPIDSNARK="${BUNDLE_NAME}/rapidsnark" + BUNDLE_DIR="${BUNDLE_NAME}/${BINARY_NAME}" + mkdir -p "$BUNDLE_DIR" + MINGW_BASE_DIR="/${MSYSTEM,,}" MINGW_DLL_DIR="$MINGW_BASE_DIR/bin" + cp "$MINGW_DLL_DIR"/{libgcc_s_seh-1.dll,libwinpthread-1.dll,libstdc++-6.dll} "$BUNDLE_DIR/" + + mv "${RAPIDSNARK_DIR}"/bin/${BINARY_NAME}.exe "$BUNDLE_DIR/" + + tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" + + - name: Bundle Rapidsnark Verifier + shell: msys2 {0} + working-directory: repo + env: + BINARY_NAME: verifier + BUNDLE_NAME: verifier-${{ env.OS }}-${{ env.ARCH }} + RAPIDSNARK_DIR: circom_circuits/rapidsnark/package + run: | + BUNDLE_DIR="${BUNDLE_NAME}/${BINARY_NAME}" + mkdir -p "$BUNDLE_DIR" + + MINGW_BASE_DIR="/${MSYSTEM,,}" + MINGW_DLL_DIR="$MINGW_BASE_DIR/bin" + cp "$MINGW_DLL_DIR"/{libgcc_s_seh-1.dll,libwinpthread-1.dll,libstdc++-6.dll} "$BUNDLE_DIR/" + + mv "${RAPIDSNARK_DIR}"/bin/${BINARY_NAME}.exe "$BUNDLE_DIR/" + + tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" + + - name: Bundle Pol Witness Generator + shell: msys2 {0} + working-directory: repo + env: + BUNDLE_NAME: pol-${{ env.OS }}-${{ env.ARCH }} + WITNESS_GENERATOR_DIR: circom_circuits/Mantle/pol_cpp + run: | + BUNDLE_DIR="${BUNDLE_NAME}/witness-generator" + mkdir -p "$BUNDLE_DIR" + + MINGW_BASE_DIR="/${MSYSTEM,,}" + MINGW_DLL_DIR="$MINGW_BASE_DIR/bin" + cp "$MINGW_DLL_DIR"/{libgcc_s_seh-1.dll,libwinpthread-1.dll,libstdc++-6.dll,libgmp-10.dll} "$BUNDLE_DIR/" - mkdir -p "$BUNDLE_DIR_WITNESS_GENERATOR" "$BUNDLE_DIR_RAPIDSNARK" - - cp "$MINGW_DLL_DIR"/{libgcc_s_seh-1.dll,libwinpthread-1.dll,libstdc++-6.dll,libgmp-10.dll} "$BUNDLE_DIR_WITNESS_GENERATOR/" - mv "${WITNESS_GENERATOR_DIR}/pol" "$BUNDLE_DIR_WITNESS_GENERATOR/pol.exe" - mv "${WITNESS_GENERATOR_DIR}/pol.dat" "$BUNDLE_DIR_WITNESS_GENERATOR/pol.exe.dat" - - cp "$MINGW_DLL_DIR"/{libgcc_s_seh-1.dll,libwinpthread-1.dll,libstdc++-6.dll} "$BUNDLE_DIR_RAPIDSNARK/" - mv "${RAPIDSNARK_DIR}"/bin/{prover.exe,verifier.exe} "$BUNDLE_DIR_RAPIDSNARK/" + mv "${WITNESS_GENERATOR_DIR}/pol" "$BUNDLE_DIR/pol.exe" + mv "${WITNESS_GENERATOR_DIR}/pol.dat" "$BUNDLE_DIR/pol.exe.dat" tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" - - name: Upload Bundle - uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + - name: Upload Rapidsnark Prover + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: circom_circuits-${{ env.OS }}-${{ env.ARCH }}.tar.gz - path: repo/circom_circuits-${{ env.OS }}-${{ env.ARCH }}.tar.gz + name: prover-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/prover-${{ env.OS }}-${{ env.ARCH }}.tar.gz + + - name: Upload Rapidsnark Verifier + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: verifier-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/verifier-${{ env.OS }}-${{ env.ARCH }}.tar.gz + + - name: Upload Pol Witness Generator + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: pol-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/pol-${{ env.OS }}-${{ env.ARCH }}.tar.gz build-macos: name: Build MacOS Binaries (Native) @@ -314,7 +393,7 @@ jobs: working-directory: repo run: cp .github/resources/witness-generator/${{ env.OS }}.Makefile circom_circuits/Mantle/pol_cpp/Makefile - - name: Patch MacOS GMP # TODO: Maybe not needed? + - name: Patch MacOS GMP working-directory: repo run: cp .github/resources/witness-generator/${{ env.OS }}.gmp_patch.hpp circom_circuits/Mantle/pol_cpp/gmp_patch.hpp @@ -322,30 +401,64 @@ jobs: working-directory: repo/circom_circuits/Mantle/pol_cpp run: make pol - - name: Bundle + - name: Bundle Rapidsnark Prover working-directory: repo env: - BUNDLE_NAME: circom_circuits-${{ env.OS }}-${{ env.ARCH }} - WITNESS_GENERATOR_DIR: circom_circuits/Mantle/pol_cpp + BINARY_NAME: prover + BUNDLE_NAME: prover-${{ env.OS }}-${{ env.ARCH }} RAPIDSNARK_DIR: circom_circuits/rapidsnark/package_macos_arm64 run: | - BUNDLE_DIR_WITNESS_GENERATOR="${BUNDLE_NAME}/witness-generator" - BUNDLE_DIR_RAPIDSNARK="${BUNDLE_NAME}/rapidsnark" + BUNDLE_DIR="${BUNDLE_NAME}/${BINARY_NAME}" + mkdir -p "$BUNDLE_DIR" + + mv "${RAPIDSNARK_DIR}/bin/${BINARY_NAME}" "$BUNDLE_DIR/" + + tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" + + - name: Bundle Rapidsnark Verifier + working-directory: repo + env: + BINARY_NAME: verifier + BUNDLE_NAME: verifier-${{ env.OS }}-${{ env.ARCH }} + RAPIDSNARK_DIR: circom_circuits/rapidsnark/package_macos_arm64 + run: | + BUNDLE_DIR="${BUNDLE_NAME}/${BINARY_NAME}" + mkdir -p "$BUNDLE_DIR" + + mv "${RAPIDSNARK_DIR}/bin/${BINARY_NAME}" "$BUNDLE_DIR/" + + tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" + + - name: Bundle Pol Witness Generator + working-directory: repo + env: + BUNDLE_NAME: pol-${{ env.OS }}-${{ env.ARCH }} + WITNESS_GENERATOR_DIR: circom_circuits/Mantle/pol_cpp + run: | + BUNDLE_DIR="${BUNDLE_NAME}/witness-generator" + mkdir -p "$BUNDLE_DIR" - mkdir -p "$BUNDLE_DIR_WITNESS_GENERATOR" "$BUNDLE_DIR_RAPIDSNARK" - - mv "${WITNESS_GENERATOR_DIR}/pol" "$BUNDLE_DIR_WITNESS_GENERATOR/" - mv "${WITNESS_GENERATOR_DIR}/pol.dat" "$BUNDLE_DIR_WITNESS_GENERATOR/" - - mv "${RAPIDSNARK_DIR}"/bin/{prover,verifier} "$BUNDLE_DIR_RAPIDSNARK/" + mv "${WITNESS_GENERATOR_DIR}"/{pol,pol.dat} "$BUNDLE_DIR/" tar -czf "${BUNDLE_NAME}.tar.gz" "${BUNDLE_NAME}" - - name: Upload Bundle - uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + - name: Upload Rapidsnark Prover + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: circom_circuits-${{ env.OS }}-${{ env.ARCH }}.tar.gz - path: repo/circom_circuits-${{ env.OS }}-${{ env.ARCH }}.tar.gz + name: prover-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/prover-${{ env.OS }}-${{ env.ARCH }}.tar.gz + + - name: Upload Rapidsnark Verifier + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: verifier-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/verifier-${{ env.OS }}-${{ env.ARCH }}.tar.gz + + - name: Upload Pol Witness Generator + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: pol-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/pol-${{ env.OS }}-${{ env.ARCH }}.tar.gz publish-release: name: Create Release @@ -400,10 +513,14 @@ jobs: arch: arm64 - os: windows arch: x86_64 + artifact: + - prover + - verifier + - pol env: VERSION: ${{ needs.setup.outputs.version }} UPLOAD_URL: ${{ needs.publish-release.outputs.upload_url }} - ARTIFACT_NAME: circom_circuits-${{ matrix.platform.os }}-${{ matrix.platform.arch }}.tar.gz + ARTIFACT_NAME: ${{ matrix.artifact }}-${{ matrix.platform.os }}-${{ matrix.platform.arch }}.tar.gz steps: - name: Download Artifacts uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b