Install yarn. Fix encoding. Fix entrypoint and sudo. Fix Xcode select. Make act optional and fix nohup in run.sh.

This commit is contained in:
2024-04-23 23:38:19 +02:00
parent 7871e2eb32
commit f4a3c18146
2 changed files with 25 additions and 8 deletions

View File

@@ -32,10 +32,13 @@ echo Installing Homebrew ...
curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh|ssh 127.0.0.1 bash
# (gmp is a hack for ruby)
echo Installing packages ...
echo /usr/local/bin/brew install node@20 libyaml gmp mas|ssh 127.0.0.1 bash
echo /usr/local/bin/brew install node@20 yarn libyaml gmp mas|ssh 127.0.0.1 bash
echo /usr/local/bin/brew link node@20|ssh 127.0.0.1 bash
# Create base directories for act and drone
echo mkdir /Users/mac/drone|ssh 127.0.0.1 bash
echo -e "drone\tUsers/mac/drone" | ssh 127.0.0.1 'sudo tee "/etc/synthetic.conf"'
# Fix problems with encoding (https://stackoverflow.com/questions/68809929/unicode-normalization-not-appropriate-for-ascii-8bit)
echo export LC_ALL=en_US.UTF-8 | ssh 127.0.0.1 'tee ~/.zshrc'
# Redirect all commands to VM
echo Redirecting executables
sed -i -r 's:^\#\!/bin/bash$:\#\!/usr.orig/bin/bash:' /home/arch/OSX-KVM/Launch-nopicker.sh
@@ -56,6 +59,10 @@ ln -s /home/arch/OSX-KVM/run.sh bash && docker cp bash ${cntName}:/bin/
ln -s /home/arch/OSX-KVM/run.sh uname && docker cp uname ${cntName}:/usr/bin/
ln -s /home/arch/OSX-KVM/run.sh node && docker cp node ${cntName}:/usr/local/bin/
ln -s /home/arch/OSX-KVM/run.sh brew && docker cp brew ${cntName}:/usr/local/bin/
# Fix our container entrypoint
ln -s /usr.orig/bin/tail tail && docker cp tail osx-builder:/usr/bin
# Allow sudo to work
ln -s /usr.orig/bin/unix_chkpwd unix_chkpwd && docker cp unix_chkpwd osx-builder:/usr/bin
cd /tmp
rm -rf /tmp/links_
@@ -65,3 +72,4 @@ read -p "Press any key to when done.. " -n1 -s
## Install apps from Mac App Store (497799835 - Xcode)
echo Installing apps from Mac App Store
docker exec -i $cntName /usr.orig/bin/ssh 127.0.0.1 '/usr/local/bin/mas install 497799835'
docker exec -i $cntName /usr.orig/bin/ssh 127.0.0.1 'sudo xcode-select -s /Applications/Xcode.app/Contents/Developer'

23
run.sh
View File

@@ -1,15 +1,24 @@
#!/usr.orig/bin/sh
export PATH=$PATH:/usr.orig/bin
if ! ps -aux|grep -q [^\[]qemu[-]system; then
export EXTRA="$EXTRA -virtfs local,path=/var/run/act,mount_tag=act,security_model=passthrough,id=act -virtfs local,path=/drone/src,mount_tag=src,security_model=passthrough,id=src"
(nohup sudo env "RAM=$RAM" "CPU=$CPU" "CPUID_FLAGS=$CPUID_FLAGS" "BOOT_ARGS=$BOOT_ARGS" "KVM=$KVM" "CPU_STRING=$CPU_STRING" "SMP=$SMP" "CORES=$CORES" "BOOTDISK=$BOOTDISK" "IMAGE_PATH=$IMAGE_PATH" "IMAGE_FORMAT=$IMAGE_FORMAT" "INTERNAL_SSH_PORT=$INTERNAL_SSH_PORT" "SCREEN_SHARE_PORT=$SCREEN_SHARE_PORT" "ADDITIONAL_PORTS=$ADDITIONAL_PORTS" "NETWORKING=$NETWORKING" "MAC_ADDRESS=$MAC_ADDRESS" "EXTRA=$EXTRA" /home/arch/OSX-KVM/Launch-nopicker.sh 2>&1 &) > /dev/null \
; until [[ "$(ssh 127.0.0.1 'echo a' 2> /dev/null)" ]]; do \
if [ -d "/var/run/act" ]; then
export EXTRA="$EXTRA -virtfs local,path=/var/run/act,mount_tag=act,security_model=passthrough,id=act"
fi
if [ -d "/drone/src" ]; then
export EXTRA="$EXTRA -virtfs local,path=/drone/src,mount_tag=src,security_model=passthrough,id=src"
fi
echo nohup env '"RAM='$RAM'" "CPU='$CPU'" "CPUID_FLAGS='$CPUID_FLAGS'" "BOOT_ARGS='$BOOT_ARGS'" "KVM='$KVM'" "CPU_STRING='$CPU_STRING'" "SMP='$SMP'" "CORES='$CORES'" "BOOTDISK='$BOOTDISK'" "IMAGE_PATH='$IMAGE_PATH'" "IMAGE_FORMAT='$IMAGE_FORMAT'" "INTERNAL_SSH_PORT='$INTERNAL_SSH_PORT'" "SCREEN_SHARE_PORT='$SCREEN_SHARE_PORT'" "ADDITIONAL_PORTS='$ADDITIONAL_PORTS'" "NETWORKING='$NETWORKING'" "MAC_ADDRESS='$MAC_ADDRESS'" "EXTRA='$EXTRA'" /home/arch/OSX-KVM/Launch-nopicker.sh 2>&1 > /dev/null &'| sudo sh
until [[ "$(ssh 127.0.0.1 'echo a' 2> /dev/null)" ]]; do \
sleep 15 \
; done
ssh 127.0.0.1 'sudo mount_9p act'
ssh 127.0.0.1 'sudo mount_9p src'
ssh 127.0.0.1 'sudo ln -s /Volumes/act /var/run/act'
ssh 127.0.0.1 'sudo ln -s /Volumes/src /drone/src'
if [ -d "/var/run/act" ]; then
ssh 127.0.0.1 'sudo mount_9p act'
ssh 127.0.0.1 'sudo ln -s /Volumes/act /var/run/act'
fi
if [ -d "/drone/src" ]; then
ssh 127.0.0.1 'sudo mount_9p src'
ssh 127.0.0.1 'sudo ln -s /Volumes/src /drone/src'
fi
fi
cat /proc/self/environ|ssh 127.0.0.1 'vars=(); while read -rd '"''"' keyVal; do; key=${keyVal%=*}; val=${keyVal#*=}; if [[ "$keyVal" == "GITHUB_WORKSPACE=/drone/src" ]]; then keyVal="GITHUB_WORKSPACE=/Volumes/src"; fi; if (( ! ${(P)+key} )); then vars+=("$keyVal"); elif [[ "$key" == "PATH" ]]; then vars+=("PATH=$val:$PATH"); fi; done; pwd="'"$PWD"'"; if [ -d "$pwd" ] ; then cd "$pwd"; fi; sudo -E env -i "${vars[@]}" '"$0"' '"$@"