From 09f858d28d5867d0799cccc9d975d58fa6ab9ff3 Mon Sep 17 00:00:00 2001 From: Aiden McClelland Date: Fri, 12 Mar 2021 10:10:39 -0700 Subject: [PATCH] appmgr: only mount binds if installed also improve build scripts --- appmgr/build-dev.sh | 5 +++++ appmgr/build-portable.sh | 15 +++++++++++++++ appmgr/build-prod.sh | 5 +++++ appmgr/src/dependencies.rs | 11 +++++++++-- 4 files changed, 34 insertions(+), 2 deletions(-) create mode 100755 appmgr/build-portable.sh diff --git a/appmgr/build-dev.sh b/appmgr/build-dev.sh index 27d195c6b..ea38a6f13 100755 --- a/appmgr/build-dev.sh +++ b/appmgr/build-dev.sh @@ -3,6 +3,11 @@ set -e shopt -s expand_aliases +if [ "$0" != "./build-dev.sh" ]; then + >&2 echo "Must be run from appmgr directory" + exit 1 +fi + alias 'rust-arm-builder'='docker run --rm -it -v "$HOME/.cargo/registry":/root/.cargo/registry -v "$(pwd)":/home/rust/src start9/rust-arm-cross:latest' cd .. diff --git a/appmgr/build-portable.sh b/appmgr/build-portable.sh new file mode 100755 index 000000000..3f5b0ff17 --- /dev/null +++ b/appmgr/build-portable.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +set -e +shopt -s expand_aliases + +if [ "$0" != "./build-portable.sh" ]; then + >&2 echo "Must be run from appmgr directory" + exit 1 +fi + +alias 'rust-musl-builder'='docker run --rm -it -v "$HOME"/.cargo/registry:/root/.cargo/registry -v "$(pwd)":/home/rust/src messense/rust-musl-cross:x86_64-musl' + +cd .. +rust-musl-builder sh -c "(cd appmgr && cargo build --release --target=x86_64-unknown-linux-musl --features=portable,production --no-default-features)" +cd appmgr diff --git a/appmgr/build-prod.sh b/appmgr/build-prod.sh index d9bc2db21..22ce6f776 100755 --- a/appmgr/build-prod.sh +++ b/appmgr/build-prod.sh @@ -3,6 +3,11 @@ set -e shopt -s expand_aliases +if [ "$0" != "./build-prod.sh" ]; then + >&2 echo "Must be run from appmgr directory" + exit 1 +fi + alias 'rust-arm-builder'='docker run --rm -it -v "$HOME/.cargo/registry":/root/.cargo/registry -v "$(pwd)":/home/rust/src start9/rust-arm-cross:latest' cd .. diff --git a/appmgr/src/dependencies.rs b/appmgr/src/dependencies.rs index a5ed12d9b..4cdb80557 100644 --- a/appmgr/src/dependencies.rs +++ b/appmgr/src/dependencies.rs @@ -222,12 +222,19 @@ pub async fn update_binds(dependent_id: &str) -> Result<(), Error> { .into_iter() .filter(|(_, info)| info.mount_public || info.mount_shared) .map(|(id, info)| async { - crate::apps::manifest(&id).await.map(|man| (id, info, man)) + Ok::<_, Error>(if crate::apps::list_info().await?.contains_key(&id) { + let man = crate::apps::manifest(&id).await?; + Some((id, info, man)) + } else { + None + }) }), ) .await?; // i just have a gut feeling this shouldn't be concurrent - for (dependency_id, info, dependency_manifest) in dependency_manifests { + for (dependency_id, info, dependency_manifest) in + dependency_manifests.into_iter().filter_map(|a| a) + { match (dependency_manifest.public, info.mount_public) { (Some(public), true) => { let public_path = Path::new(crate::VOLUMES).join(&dependency_id).join(public);