-
Notifications
You must be signed in to change notification settings - Fork 63
Description
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