Skip to content

Want shared script for standing up Omicron on Helios #490

@rzezeski

Description

@rzezeski

Recently I ran into a build error when running the latest main (5519e936) with my own script to build, package, and deploy Omicron on a Helios host.

error[E0658]: use of unstable library feature 'asm': inline assembly is not stable enough for use and is subject to change
   --> /home/rpz/.cargo/git/checkouts/dropshot-a4a923d29dccc492/ff33033/dropshot/src/lib.rs:574:1                         
    |                                                                                                                                                     
574 |   #[usdt::provider(provider = "dropshot")]                             
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |                                                                        
   ::: /home/rpz/.cargo/git/checkouts/dropshot-a4a923d29dccc492/ff33033/dropshot/src/server.rs:387:13
    |                                                                                                                                                     
387 | /             probes::request_finish!(|| {
388 | |                 crate::ResponseInfo {
389 | |                     id: request_id.parse().unwrap(),                                                                                              
390 | |                     local_addr,                                      
...   |                                                                      
394 | |                 }                                                    
395 | |             });                                                                                                                                   
    | |______________- in this macro invocation
    |                                                                        
    = note: see issue #72016 <https://github.com/rust-lang/rust/issues/72016> for more information
    = help: add `#![feature(asm)]` to the crate attributes to enable                                                                                      
    = note: this error originates in the macro `probes::request_finish` (in Nightly builds, run with -Z macro-backtrace for more info)

This happened when the script was running the following step:

./target/release/omicron-package package

It turns out that others were not hitting this problem because they are using other methods to stand up Omicron on Helios, and for whatever reason their methods avoid this (recent) issue. That's fine, and I realize one size does not fit all when you are actively developing something. But it would also be nice to have a shared, committed script that those of us less familiar with Omicron can use to easily stand up Omicron on Helios.

I've been using this script, adapted from something @smklein shared with me a couple of weeks ago. I could just commit this as-is, but I though someone who is more intimate with Omicron might want to write something a little different. Anyways, feel free to use this or something else altogether. My main intent with this issue is just to get something committed that we can all share going forward.

#!/bin/bash
set -eu

#OMICRON_HOME=~/oxidecomputer/omicron
OMICRON_HOME=~/omi-integration-2/omicron
MY_ORG=all-lucky-sevens
MY_PROJ=remake

trap "kill 0" EXIT

pushd $OMICRON_HOME

# Build the "packaging" binary.
echo "=== BUILD PACKAGING BINARY START"
cargo build --release --package omicron-package --bin omicron-package
echo "=== BUILD PACKAGING BINARY END"

# Build all the packages describes in omicron/package-manifest.toml.
# This includes Sled Agent, Nexus, Oximeter, Propolis Server.
echo "=== BUILD PACKAGES START"
./target/release/omicron-package package
echo "=== BUILD PACKAGES END"

# Run the databases in the background.
echo "=== RUN DATABASES START"
cargo run --bin=omicron-dev -- db-run &> /dev/null &
cargo run --bin=omicron-dev -- ch-run &> /dev/null &
echo "=== RUN DATABASES END"

# Installs all the built services to your machine (within /opt/oxide),
# *starts* Sled Agent. Sled Agent unpacks/starts all other services.
echo "=== INSTALL SERVICES START"
pfexec ./target/release/omicron-package install
echo "=== INSTALL SERVICES END"

echo "Sled Agent and Nexus Online"
sleep 12
echo "=== CREATE ORGS + PROJECTS START"
./tools/oxapi_demo organization_create_demo $MY_ORG
./tools/oxapi_demo project_create_demo      $MY_ORG $MY_PROJ
echo "=== CREATE ORGS + PROJECTS END"

echo "RUNNING OMICRONG FROM: $OMICRON_HOME"
wait

popd

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions