oasisprotocol / oasisprotocol/cli

`oasis rofl build` with container builder fails when creating rootfs image with: `failed to copy file content: write |1: broken pipe`

Open
#704 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
80
Forks
23
Avg merge
9h 43m
Merged PRs (30d)
3

Description

I've created a new ROFL project, ROFL Go Starter, with Oasis CLI 0.19.0.

When building the ROFL bundle through the container builder on my Fedora 43 system with Podman, I get the following error:

[tadej@toronto ~/Code/rofl-go-starter (master)]$ oasis rofl build
Building a ROFL application...
Deployment: testnet
Network:    testnet
ParaTime:   sapphire
Debug:      false
App ID:     rofl1qphpdgztdm6edd7fhaulpg47qghtcr7uzyfgua3w
Name:       rofl-go-starter
Version:    0.1.0
TEE:        tdx
Kind:       container

Using container build environment (image: ghcr.io/oasisprotocol/rofl-container-builder:0.0.1@sha256:913ef97ab07dde31f08ce873f825bf3d4f32ad4102ff5797d7c3050c121c4dce)
Initializing build environment...
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Building a container-based TDX ROFL application...
Downloading firmware artifact...
  URI: https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/ovmf.tdx.fd#db47100a7d6a0c1f6983be224137c3f8d7cb09b63bb1c7a5ee7829d8e994a42f
  Hash: db47100a7d6a0c1f6983be224137c3f8d7cb09b63bb1c7a5ee7829d8e994a42f
  (using cached artifact)
Downloading kernel artifact...
  URI: https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/stage1.bin#e5d4d654ca1fa2c388bf64b23fc6e67815893fc7cb8b7cfee253d87963f54973
  Hash: e5d4d654ca1fa2c388bf64b23fc6e67815893fc7cb8b7cfee253d87963f54973
  (using cached artifact)
Downloading stage 2 template artifact...
  URI: https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/stage2-podman.tar.bz2#b2ea2a0ca769b6b2d64e3f0c577ee9c08f0bb81a6e33ed5b15b2a7e50ef9a09f
  Hash: b2ea2a0ca769b6b2d64e3f0c577ee9c08f0bb81a6e33ed5b15b2a7e50ef9a09f
  (using cached artifact)
Downloading rofl-container runtime artifact...
  URI: https://github.com/oasisprotocol/oasis-sdk/releases/download/rofl-containers%2Fv0.8.6/rofl-containers#5aa26a3c5a7e1d284e217959d89b7a620ea7b7fc5079909e25042124ffb384e8
  Hash: 5aa26a3c5a7e1d284e217959d89b7a620ea7b7fc5079909e25042124ffb384e8
  (using cached artifact)
Downloading compose.yaml artifact...
  URI: compose.yaml
Validating compose file...
Preparing stage 2 root filesystem...
Runtime hash: 5aa26a3c5a7e1d284e217959d89b7a620ea7b7fc5079909e25042124ffb384e8
Creating squashfs filesystem...
Error: failed to create rootfs image: failed to copy file content: write |1: broken pipe

Building without the container builder (i.e. passing --no-container) works:

[tadej@toronto ~/Code/rofl-go-starter (master)]$ oasis rofl build --no-container
Building a ROFL application...
Deployment: testnet
Network:    testnet
ParaTime:   sapphire
Debug:      false
App ID:     rofl1qphpdgztdm6edd7fhaulpg47qghtcr7uzyfgua3w
Name:       rofl-go-starter
Version:    0.1.0
TEE:        tdx
Kind:       container

Building a container-based TDX ROFL application...
Downloading firmware artifact...
  URI: https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/ovmf.tdx.fd#db47100a7d6a0c1f6983be224137c3f8d7cb09b63bb1c7a5ee7829d8e994a42f
  Hash: db47100a7d6a0c1f6983be224137c3f8d7cb09b63bb1c7a5ee7829d8e994a42f
  (using cached artifact)
Downloading kernel artifact...
  URI: https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/stage1.bin#e5d4d654ca1fa2c388bf64b23fc6e67815893fc7cb8b7cfee253d87963f54973
  Hash: e5d4d654ca1fa2c388bf64b23fc6e67815893fc7cb8b7cfee253d87963f54973
  (using cached artifact)
Downloading stage 2 template artifact...
  URI: https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/stage2-podman.tar.bz2#b2ea2a0ca769b6b2d64e3f0c577ee9c08f0bb81a6e33ed5b15b2a7e50ef9a09f
  Hash: b2ea2a0ca769b6b2d64e3f0c577ee9c08f0bb81a6e33ed5b15b2a7e50ef9a09f
  (using cached artifact)
Downloading rofl-container runtime artifact...
  URI: https://github.com/oasisprotocol/oasis-sdk/releases/download/rofl-containers%2Fv0.8.6/rofl-containers#5aa26a3c5a7e1d284e217959d89b7a620ea7b7fc5079909e25042124ffb384e8
  Hash: 5aa26a3c5a7e1d284e217959d89b7a620ea7b7fc5079909e25042124ffb384e8
  (using cached artifact)
Downloading compose.yaml artifact...
  URI: compose.yaml
Validating compose file...
Preparing stage 2 root filesystem...
Runtime hash: 5aa26a3c5a7e1d284e217959d89b7a620ea7b7fc5079909e25042124ffb384e8
Creating squashfs filesystem...
TAR archive SHA256: c47ce0d799cc08d4a7cefe02e85d45522a4cf1c98045d40f1eedaace6760fcf1
Creating dm-verity hash tree...
Creating ORC bundle...
ROFL app built and bundle written to 'rofl-go-starter.testnet.orc'.
Computing enclave identity...
Run `oasis rofl update` to update your ROFL app's on-chain configuration.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce with oasis rofl build on Fedora 43 using Podman, then compare with oasis rofl build --no-container, which succeeds. Trace the container-builder path from the Creating squashfs filesystem... step and consider the issue done when the container build completes and writes the ROFL bundle without the broken-pipe error.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, go
Domain
build-system, cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.