diff --git a/Dockerfile.sh b/Dockerfile.sh index 88fca35..08bd503 100755 --- a/Dockerfile.sh +++ b/Dockerfile.sh @@ -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' \ No newline at end of file diff --git a/run.sh b/run.sh index 01f3d4b..4dce801 100644 --- a/run.sh +++ b/run.sh @@ -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"' '"$@" \ No newline at end of file