From 1775b7eb5ee31394b805171223bbd2495fa5ec64 Mon Sep 17 00:00:00 2001 From: Helio Machado <0x2b3bfa0+git@googlemail.com> Date: Tue, 5 Jul 2022 17:02:37 +0100 Subject: [PATCH 1/8] Wait for `apt` to finish --- iterative/resource_runner.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/iterative/resource_runner.go b/iterative/resource_runner.go index 7c530146..78ccca0f 100644 --- a/iterative/resource_runner.go +++ b/iterative/resource_runner.go @@ -343,6 +343,8 @@ export KUBERNETES_CONFIGURATION={{escape .KUBERNETES_CONFIGURATION}} {{- end}} {{- end}} +while test -f /var/lib/dpkg/lock; do sleep 1; done + {{- if .runner_startup_script}} {{.runner_startup_script}} {{- end}} From a6f06227d1c807e035d4d00d3632d221e5bc4257 Mon Sep 17 00:00:00 2001 From: Helio Machado <0x2b3bfa0+git@googlemail.com> Date: Tue, 5 Jul 2022 17:05:14 +0100 Subject: [PATCH 2/8] Always disable unattended upgrades --- environment/setup.sh | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/environment/setup.sh b/environment/setup.sh index 8f3c7c01..53ef92ea 100644 --- a/environment/setup.sh +++ b/environment/setup.sh @@ -1,14 +1,15 @@ #/bin/sh -FILE=/var/log/cml_stack.log -if [ ! -f "$FILE" ]; then - export DEBIAN_FRONTEND=noninteractive - PS4='tpi:setup.sh: ' - set -x - echo "APT::Get::Assume-Yes \"true\";" | sudo tee -a /etc/apt/apt.conf.d/90assumeyes +PS4='tpi:setup.sh: ' +set -x - sudo apt remove unattended-upgrades - systemctl disable apt-daily-upgrade.service +export DEBIAN_FRONTEND=noninteractive +echo "APT::Get::Assume-Yes \"true\";" | sudo tee -a /etc/apt/apt.conf.d/90assumeyes +sudo apt remove unattended-upgrades +systemctl disable apt-daily-upgrade.service + +FILE=/var/log/cml_stack.log +if [ ! -f "$FILE" ]; then sudo add-apt-repository universe -y sudo add-apt-repository ppa:git-core/ppa -y sudo apt update && sudo apt-get install -y software-properties-common build-essential git acpid From 05d1a27cf8a5cd1d257b762aab477838e74ee719 Mon Sep 17 00:00:00 2001 From: Helio Machado <0x2b3bfa0+git@googlemail.com> Date: Tue, 5 Jul 2022 19:28:16 +0000 Subject: [PATCH 3/8] Update tests --- .../testdata/script_template_cloud_aws.golden | 19 +++++++++++-------- .../script_template_cloud_azure.golden | 19 +++++++++++-------- .../testdata/script_template_cloud_gcp.golden | 19 +++++++++++-------- .../script_template_cloud_invalid.golden | 19 +++++++++++-------- .../script_template_cloud_kubernetes.golden | 2 ++ 5 files changed, 46 insertions(+), 32 deletions(-) diff --git a/iterative/testdata/script_template_cloud_aws.golden b/iterative/testdata/script_template_cloud_aws.golden index 6312f9bc..900b2118 100644 --- a/iterative/testdata/script_template_cloud_aws.golden +++ b/iterative/testdata/script_template_cloud_aws.golden @@ -1,15 +1,16 @@ #!/bin/sh sudo systemctl is-enabled cml.service && return 0 -FILE=/var/log/cml_stack.log -if [ ! -f "$FILE" ]; then - export DEBIAN_FRONTEND=noninteractive - PS4='tpi:setup.sh: ' - set -x - echo "APT::Get::Assume-Yes \"true\";" | sudo tee -a /etc/apt/apt.conf.d/90assumeyes +PS4='tpi:setup.sh: ' +set -x - sudo apt remove unattended-upgrades - systemctl disable apt-daily-upgrade.service +export DEBIAN_FRONTEND=noninteractive +echo "APT::Get::Assume-Yes \"true\";" | sudo tee -a /etc/apt/apt.conf.d/90assumeyes +sudo apt remove unattended-upgrades +systemctl disable apt-daily-upgrade.service + +FILE=/var/log/cml_stack.log +if [ ! -f "$FILE" ]; then sudo add-apt-repository universe -y sudo add-apt-repository ppa:git-core/ppa -y sudo apt update && sudo apt-get install -y software-properties-common build-essential git acpid @@ -49,6 +50,8 @@ export AWS_SECRET_ACCESS_KEY='0 value with "quotes" and spaces' export AWS_ACCESS_KEY_ID='1 value with "quotes" and spaces' export AWS_SESSION_TOKEN='2 value with "quotes" and spaces' +while test -f /var/lib/dpkg/lock; do sleep 1; done + HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ --labels '16 value with "quotes" and spaces' \ diff --git a/iterative/testdata/script_template_cloud_azure.golden b/iterative/testdata/script_template_cloud_azure.golden index 23527f46..454f7818 100644 --- a/iterative/testdata/script_template_cloud_azure.golden +++ b/iterative/testdata/script_template_cloud_azure.golden @@ -1,15 +1,16 @@ #!/bin/sh sudo systemctl is-enabled cml.service && return 0 -FILE=/var/log/cml_stack.log -if [ ! -f "$FILE" ]; then - export DEBIAN_FRONTEND=noninteractive - PS4='tpi:setup.sh: ' - set -x - echo "APT::Get::Assume-Yes \"true\";" | sudo tee -a /etc/apt/apt.conf.d/90assumeyes +PS4='tpi:setup.sh: ' +set -x - sudo apt remove unattended-upgrades - systemctl disable apt-daily-upgrade.service +export DEBIAN_FRONTEND=noninteractive +echo "APT::Get::Assume-Yes \"true\";" | sudo tee -a /etc/apt/apt.conf.d/90assumeyes +sudo apt remove unattended-upgrades +systemctl disable apt-daily-upgrade.service + +FILE=/var/log/cml_stack.log +if [ ! -f "$FILE" ]; then sudo add-apt-repository universe -y sudo add-apt-repository ppa:git-core/ppa -y sudo apt update && sudo apt-get install -y software-properties-common build-essential git acpid @@ -50,6 +51,8 @@ export AZURE_CLIENT_SECRET='4 value with "quotes" and spaces' export AZURE_SUBSCRIPTION_ID='5 value with "quotes" and spaces' export AZURE_TENANT_ID='6 value with "quotes" and spaces' +while test -f /var/lib/dpkg/lock; do sleep 1; done + HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ --labels '16 value with "quotes" and spaces' \ diff --git a/iterative/testdata/script_template_cloud_gcp.golden b/iterative/testdata/script_template_cloud_gcp.golden index 47ab1704..86e7d3a1 100644 --- a/iterative/testdata/script_template_cloud_gcp.golden +++ b/iterative/testdata/script_template_cloud_gcp.golden @@ -1,15 +1,16 @@ #!/bin/sh sudo systemctl is-enabled cml.service && return 0 -FILE=/var/log/cml_stack.log -if [ ! -f "$FILE" ]; then - export DEBIAN_FRONTEND=noninteractive - PS4='tpi:setup.sh: ' - set -x - echo "APT::Get::Assume-Yes \"true\";" | sudo tee -a /etc/apt/apt.conf.d/90assumeyes +PS4='tpi:setup.sh: ' +set -x - sudo apt remove unattended-upgrades - systemctl disable apt-daily-upgrade.service +export DEBIAN_FRONTEND=noninteractive +echo "APT::Get::Assume-Yes \"true\";" | sudo tee -a /etc/apt/apt.conf.d/90assumeyes +sudo apt remove unattended-upgrades +systemctl disable apt-daily-upgrade.service + +FILE=/var/log/cml_stack.log +if [ ! -f "$FILE" ]; then sudo add-apt-repository universe -y sudo add-apt-repository ppa:git-core/ppa -y sudo apt update && sudo apt-get install -y software-properties-common build-essential git acpid @@ -48,6 +49,8 @@ sudo tee /usr/bin/cml.sh << 'EOF' export GOOGLE_APPLICATION_CREDENTIALS_DATA='' export CML_GCP_ACCESS_TOKEN='' +while test -f /var/lib/dpkg/lock; do sleep 1; done + HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ --labels '16 value with "quotes" and spaces' \ diff --git a/iterative/testdata/script_template_cloud_invalid.golden b/iterative/testdata/script_template_cloud_invalid.golden index f1b5e3ef..3c423833 100644 --- a/iterative/testdata/script_template_cloud_invalid.golden +++ b/iterative/testdata/script_template_cloud_invalid.golden @@ -1,15 +1,16 @@ #!/bin/sh sudo systemctl is-enabled cml.service && return 0 -FILE=/var/log/cml_stack.log -if [ ! -f "$FILE" ]; then - export DEBIAN_FRONTEND=noninteractive - PS4='tpi:setup.sh: ' - set -x - echo "APT::Get::Assume-Yes \"true\";" | sudo tee -a /etc/apt/apt.conf.d/90assumeyes +PS4='tpi:setup.sh: ' +set -x - sudo apt remove unattended-upgrades - systemctl disable apt-daily-upgrade.service +export DEBIAN_FRONTEND=noninteractive +echo "APT::Get::Assume-Yes \"true\";" | sudo tee -a /etc/apt/apt.conf.d/90assumeyes +sudo apt remove unattended-upgrades +systemctl disable apt-daily-upgrade.service + +FILE=/var/log/cml_stack.log +if [ ! -f "$FILE" ]; then sudo add-apt-repository universe -y sudo add-apt-repository ppa:git-core/ppa -y sudo apt update && sudo apt-get install -y software-properties-common build-essential git acpid @@ -46,6 +47,8 @@ sudo npm config set user 0 && sudo npm install --global 18 value with "quotes" a sudo tee /usr/bin/cml.sh << 'EOF' #!/bin/sh +while test -f /var/lib/dpkg/lock; do sleep 1; done + HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ --labels '16 value with "quotes" and spaces' \ diff --git a/iterative/testdata/script_template_cloud_kubernetes.golden b/iterative/testdata/script_template_cloud_kubernetes.golden index ab7f31d0..9f1199f4 100644 --- a/iterative/testdata/script_template_cloud_kubernetes.golden +++ b/iterative/testdata/script_template_cloud_kubernetes.golden @@ -2,6 +2,8 @@ sudo systemctl is-enabled cml.service && return 0 export KUBERNETES_CONFIGURATION='8 value with "quotes" and spaces' +while test -f /var/lib/dpkg/lock; do sleep 1; done + HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ --labels '16 value with "quotes" and spaces' \ From f027ec45db23e1ea10c5bf9f6cc753fa1e27cfa6 Mon Sep 17 00:00:00 2001 From: Helio Machado <0x2b3bfa0+git@googlemail.com> Date: Tue, 5 Jul 2022 22:03:43 +0000 Subject: [PATCH 4/8] Fix blunder --- iterative/resource_runner.go | 2 +- iterative/testdata/script_template_cloud_aws.golden | 2 +- iterative/testdata/script_template_cloud_azure.golden | 2 +- iterative/testdata/script_template_cloud_gcp.golden | 2 +- iterative/testdata/script_template_cloud_invalid.golden | 2 +- iterative/testdata/script_template_cloud_kubernetes.golden | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/iterative/resource_runner.go b/iterative/resource_runner.go index 78ccca0f..136549fb 100644 --- a/iterative/resource_runner.go +++ b/iterative/resource_runner.go @@ -343,7 +343,7 @@ export KUBERNETES_CONFIGURATION={{escape .KUBERNETES_CONFIGURATION}} {{- end}} {{- end}} -while test -f /var/lib/dpkg/lock; do sleep 1; done +while ! lsof /var/lib/dpkg/lock; do sleep 1; done {{- if .runner_startup_script}} {{.runner_startup_script}} diff --git a/iterative/testdata/script_template_cloud_aws.golden b/iterative/testdata/script_template_cloud_aws.golden index 900b2118..3fbe2138 100644 --- a/iterative/testdata/script_template_cloud_aws.golden +++ b/iterative/testdata/script_template_cloud_aws.golden @@ -50,7 +50,7 @@ export AWS_SECRET_ACCESS_KEY='0 value with "quotes" and spaces' export AWS_ACCESS_KEY_ID='1 value with "quotes" and spaces' export AWS_SESSION_TOKEN='2 value with "quotes" and spaces' -while test -f /var/lib/dpkg/lock; do sleep 1; done +while ! lsof /var/lib/dpkg/lock; do sleep 1; done HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ diff --git a/iterative/testdata/script_template_cloud_azure.golden b/iterative/testdata/script_template_cloud_azure.golden index 454f7818..65e0e1a6 100644 --- a/iterative/testdata/script_template_cloud_azure.golden +++ b/iterative/testdata/script_template_cloud_azure.golden @@ -51,7 +51,7 @@ export AZURE_CLIENT_SECRET='4 value with "quotes" and spaces' export AZURE_SUBSCRIPTION_ID='5 value with "quotes" and spaces' export AZURE_TENANT_ID='6 value with "quotes" and spaces' -while test -f /var/lib/dpkg/lock; do sleep 1; done +while ! lsof /var/lib/dpkg/lock; do sleep 1; done HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ diff --git a/iterative/testdata/script_template_cloud_gcp.golden b/iterative/testdata/script_template_cloud_gcp.golden index 86e7d3a1..84fdd0fb 100644 --- a/iterative/testdata/script_template_cloud_gcp.golden +++ b/iterative/testdata/script_template_cloud_gcp.golden @@ -49,7 +49,7 @@ sudo tee /usr/bin/cml.sh << 'EOF' export GOOGLE_APPLICATION_CREDENTIALS_DATA='' export CML_GCP_ACCESS_TOKEN='' -while test -f /var/lib/dpkg/lock; do sleep 1; done +while ! lsof /var/lib/dpkg/lock; do sleep 1; done HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ diff --git a/iterative/testdata/script_template_cloud_invalid.golden b/iterative/testdata/script_template_cloud_invalid.golden index 3c423833..48724e6c 100644 --- a/iterative/testdata/script_template_cloud_invalid.golden +++ b/iterative/testdata/script_template_cloud_invalid.golden @@ -47,7 +47,7 @@ sudo npm config set user 0 && sudo npm install --global 18 value with "quotes" a sudo tee /usr/bin/cml.sh << 'EOF' #!/bin/sh -while test -f /var/lib/dpkg/lock; do sleep 1; done +while ! lsof /var/lib/dpkg/lock; do sleep 1; done HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ diff --git a/iterative/testdata/script_template_cloud_kubernetes.golden b/iterative/testdata/script_template_cloud_kubernetes.golden index 9f1199f4..209f4bfe 100644 --- a/iterative/testdata/script_template_cloud_kubernetes.golden +++ b/iterative/testdata/script_template_cloud_kubernetes.golden @@ -2,7 +2,7 @@ sudo systemctl is-enabled cml.service && return 0 export KUBERNETES_CONFIGURATION='8 value with "quotes" and spaces' -while test -f /var/lib/dpkg/lock; do sleep 1; done +while ! lsof /var/lib/dpkg/lock; do sleep 1; done HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ From 4afa3ddc8af857f0c5f9fc6ef8f1ac2dc1af3386 Mon Sep 17 00:00:00 2001 From: Helio Machado <0x2b3bfa0+git@googlemail.com> Date: Tue, 5 Jul 2022 23:33:10 +0100 Subject: [PATCH 5/8] =?UTF-8?q?=F0=9F=A5=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Daniel Barnes --- iterative/testdata/script_template_cloud_gcp.golden | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iterative/testdata/script_template_cloud_gcp.golden b/iterative/testdata/script_template_cloud_gcp.golden index 84fdd0fb..7ad1c064 100644 --- a/iterative/testdata/script_template_cloud_gcp.golden +++ b/iterative/testdata/script_template_cloud_gcp.golden @@ -49,7 +49,7 @@ sudo tee /usr/bin/cml.sh << 'EOF' export GOOGLE_APPLICATION_CREDENTIALS_DATA='' export CML_GCP_ACCESS_TOKEN='' -while ! lsof /var/lib/dpkg/lock; do sleep 1; done +while lsof /var/lib/dpkg/lock; do sleep 1; done HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ From 36199a4a711e402a5b548ecf11c67f745063d4e4 Mon Sep 17 00:00:00 2001 From: Daniel Barnes Date: Tue, 5 Jul 2022 15:42:45 -0700 Subject: [PATCH 6/8] go test -update --- iterative/testdata/script_template_cloud_gcp.golden | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iterative/testdata/script_template_cloud_gcp.golden b/iterative/testdata/script_template_cloud_gcp.golden index 7ad1c064..84fdd0fb 100644 --- a/iterative/testdata/script_template_cloud_gcp.golden +++ b/iterative/testdata/script_template_cloud_gcp.golden @@ -49,7 +49,7 @@ sudo tee /usr/bin/cml.sh << 'EOF' export GOOGLE_APPLICATION_CREDENTIALS_DATA='' export CML_GCP_ACCESS_TOKEN='' -while lsof /var/lib/dpkg/lock; do sleep 1; done +while ! lsof /var/lib/dpkg/lock; do sleep 1; done HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ From dbd66503384040fefd22dfefd9e1a88ecdf17b9c Mon Sep 17 00:00:00 2001 From: Daniel Barnes Date: Tue, 5 Jul 2022 15:44:37 -0700 Subject: [PATCH 7/8] review edit fail --- iterative/resource_runner.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iterative/resource_runner.go b/iterative/resource_runner.go index 136549fb..8eb0ebe9 100644 --- a/iterative/resource_runner.go +++ b/iterative/resource_runner.go @@ -343,7 +343,7 @@ export KUBERNETES_CONFIGURATION={{escape .KUBERNETES_CONFIGURATION}} {{- end}} {{- end}} -while ! lsof /var/lib/dpkg/lock; do sleep 1; done +while lsof /var/lib/dpkg/lock; do sleep 1; done {{- if .runner_startup_script}} {{.runner_startup_script}} From 6bb17d0bd6611ae55c3090a41bf986a563020312 Mon Sep 17 00:00:00 2001 From: Daniel Barnes Date: Tue, 5 Jul 2022 15:45:08 -0700 Subject: [PATCH 8/8] go test -update --- iterative/testdata/script_template_cloud_aws.golden | 2 +- iterative/testdata/script_template_cloud_azure.golden | 2 +- iterative/testdata/script_template_cloud_gcp.golden | 2 +- iterative/testdata/script_template_cloud_invalid.golden | 2 +- iterative/testdata/script_template_cloud_kubernetes.golden | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/iterative/testdata/script_template_cloud_aws.golden b/iterative/testdata/script_template_cloud_aws.golden index 3fbe2138..356778b6 100644 --- a/iterative/testdata/script_template_cloud_aws.golden +++ b/iterative/testdata/script_template_cloud_aws.golden @@ -50,7 +50,7 @@ export AWS_SECRET_ACCESS_KEY='0 value with "quotes" and spaces' export AWS_ACCESS_KEY_ID='1 value with "quotes" and spaces' export AWS_SESSION_TOKEN='2 value with "quotes" and spaces' -while ! lsof /var/lib/dpkg/lock; do sleep 1; done +while lsof /var/lib/dpkg/lock; do sleep 1; done HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ diff --git a/iterative/testdata/script_template_cloud_azure.golden b/iterative/testdata/script_template_cloud_azure.golden index 65e0e1a6..7a787806 100644 --- a/iterative/testdata/script_template_cloud_azure.golden +++ b/iterative/testdata/script_template_cloud_azure.golden @@ -51,7 +51,7 @@ export AZURE_CLIENT_SECRET='4 value with "quotes" and spaces' export AZURE_SUBSCRIPTION_ID='5 value with "quotes" and spaces' export AZURE_TENANT_ID='6 value with "quotes" and spaces' -while ! lsof /var/lib/dpkg/lock; do sleep 1; done +while lsof /var/lib/dpkg/lock; do sleep 1; done HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ diff --git a/iterative/testdata/script_template_cloud_gcp.golden b/iterative/testdata/script_template_cloud_gcp.golden index 84fdd0fb..7ad1c064 100644 --- a/iterative/testdata/script_template_cloud_gcp.golden +++ b/iterative/testdata/script_template_cloud_gcp.golden @@ -49,7 +49,7 @@ sudo tee /usr/bin/cml.sh << 'EOF' export GOOGLE_APPLICATION_CREDENTIALS_DATA='' export CML_GCP_ACCESS_TOKEN='' -while ! lsof /var/lib/dpkg/lock; do sleep 1; done +while lsof /var/lib/dpkg/lock; do sleep 1; done HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ diff --git a/iterative/testdata/script_template_cloud_invalid.golden b/iterative/testdata/script_template_cloud_invalid.golden index 48724e6c..e3f44b72 100644 --- a/iterative/testdata/script_template_cloud_invalid.golden +++ b/iterative/testdata/script_template_cloud_invalid.golden @@ -47,7 +47,7 @@ sudo npm config set user 0 && sudo npm install --global 18 value with "quotes" a sudo tee /usr/bin/cml.sh << 'EOF' #!/bin/sh -while ! lsof /var/lib/dpkg/lock; do sleep 1; done +while lsof /var/lib/dpkg/lock; do sleep 1; done HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \ diff --git a/iterative/testdata/script_template_cloud_kubernetes.golden b/iterative/testdata/script_template_cloud_kubernetes.golden index 209f4bfe..1c672bfd 100644 --- a/iterative/testdata/script_template_cloud_kubernetes.golden +++ b/iterative/testdata/script_template_cloud_kubernetes.golden @@ -2,7 +2,7 @@ sudo systemctl is-enabled cml.service && return 0 export KUBERNETES_CONFIGURATION='8 value with "quotes" and spaces' -while ! lsof /var/lib/dpkg/lock; do sleep 1; done +while lsof /var/lib/dpkg/lock; do sleep 1; done HOME="$(mktemp -d)" exec $(which cml-runner || echo $(which cml-internal || echo cml) runner) \ --name '10 value with "quotes" and spaces' \