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" wget "$(curl -sSL http://www.vitanuova.com/inferno/downloads.html | grep -E 'inferno-[0-9]+\.tgz' | grep -Eo 'http://[^"]+')" -O inferno.tgz tar -xf inferno.tgz -C "${pkg}/opt/inferno" --strip-components=1 chmod -R u+w,a=u,go-w "${pkg}/opt/inferno" pushd "${pkg}/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 ln -s "/opt/inferno/Linux/386/bin/emu" "/opt/inferno/Linux/386/bin/limbo" "${pkg}/usr/local/bin/" popd 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