id: "limbo" aliases: - "inferno" - "b" name: "Limbo" install: prepare: apt: - gcc-multilib - libc6-dev-i386 - libx11-dev:i386 - libxext-dev:i386 apt: - libx11-6:i386 - libxext6:i386 manual: | install -d "${pkg}/opt/inferno" install -d "${pkg}/usr/local/bin" url="$(curl -sSL http://www.vitanuova.com/inferno/downloads.html | grep -E 'inferno-[0-9]+\.tgz' | grep -Eo 'http://[^"]+')" wget "${url}" -O inferno.tgz sudo mkdir /opt/inferno sudo chown riju:riju /opt/inferno tar -xf inferno.tgz -C /opt/inferno --strip-components=1 chmod -R u+w,a=u,go-w /opt/inferno pushd /opt/inferno sed -i 's/gcc/gcc -m32/g' makemk.sh sed -i "s#ROOT=.*#ROOT=${PWD}#" mkconfig sed -i "s#CFLAGS=#CFLAGS=-fcommon#" mkfiles/mkfile-Linux-386 ./makemk.sh PATH="$PWD/Linux/386/bin:$PATH" mk install popd shopt -s dotglob mv /opt/inferno/* "${pkg}/opt/inferno/" sudo rmdir /opt/inferno ln -s "/opt/inferno/Linux/386/bin/emu" "/opt/inferno/Linux/386/bin/limbo" "${pkg}/usr/local/bin/" setup: | ln -s /opt/inferno/* ./ main: "riju/main.b" template: | implement Cmd; include "sys.m"; include "draw.m"; Cmd : module { init : fn (ctxt : ref Draw->Context, args : list of string); }; init(nil : ref Draw->Context, nil : list of string) { sys := load Sys Sys->PATH; sys->print("Hello, world!\n"); } compile: | limbo -o riju/main.dis riju/main.b run: | emu -r . riju/main.dis