1DOLLY 72TOOLCHAIN system-tools3REQUIRES HOST runtime@04REQUIRES HOST display@05REQUIRES HOST input@06REQUIRES HOST download@07REQUIRES HOST http@08REQUIRES HOST upload@0910FROM /v0.1.2/Dollyfile-system-build 7077ca8632674cbdc16cb02a7d65949faabd1fcc7324e3212fbc823a9405336111# Unchanged upstream sbase commands, built by sbase's own Makefile.12REQUIRES HEADER libc13REQUIRES TOOL   ar14REQUIRES TOOL   cc15REQUIRES TOOL   make16REQUIRES TOOL   mv17REQUIRES TOOL   rm18REQUIRES TOOL   tar1920SOURCE /v0.1.2/dist/static/default/sbase.tar c05c64631cbc8441a50785da447c129c0a4f07fa3c3a10a5355c0f1102d3b1cd /tmp/sbase.tar21SLOP tar \22  -xf /tmp/sbase.tar \23  -C /2425FILE /tmp/sbase/dolly.mk26    TOOLS = basename cksum cmp comm cut date dd dirname expand expr false fold \27            grep head join kill ln md5sum mktemp nl od paste pathchk \28            printenv printf readlink rmdir sed seq sha256sum sleep sort split \29            strings tail tee tr true \30            tsort uname unexpand uniq wc which31    .RECIPEPREFIX := >32    dolly-bin: $(TOOLS)33    >mv $(TOOLS) /bin34    >mv $(TOOLS:=.1) /usr/share/man/man135    .RECIPEPREFIX :=36    include Makefile37SLOP make \38  -C /tmp/sbase \39  -f dolly.mk \40  CFLAGS=-O2 \41  ARFLAGS=rc \42  RANLIB=:4344EXPORTS TOOL basename45EXPORTS TOOL cksum46EXPORTS TOOL cmp47EXPORTS TOOL comm48EXPORTS TOOL cut49EXPORTS TOOL date50EXPORTS TOOL dd51EXPORTS TOOL dirname52EXPORTS TOOL expand53EXPORTS TOOL expr54EXPORTS TOOL false55EXPORTS TOOL fold56EXPORTS TOOL grep57EXPORTS TOOL head58EXPORTS TOOL join59EXPORTS TOOL kill60EXPORTS TOOL ln61EXPORTS TOOL md5sum62EXPORTS TOOL mktemp63EXPORTS TOOL nl64EXPORTS TOOL od65EXPORTS TOOL paste66EXPORTS TOOL pathchk67EXPORTS TOOL printenv68EXPORTS TOOL printf69EXPORTS TOOL readlink70EXPORTS TOOL rmdir71EXPORTS TOOL sed72EXPORTS TOOL seq73EXPORTS TOOL sha256sum74EXPORTS TOOL sleep75EXPORTS TOOL sort76EXPORTS TOOL split77EXPORTS TOOL strings78EXPORTS TOOL tail79EXPORTS TOOL tee80EXPORTS TOOL tr81EXPORTS TOOL true82EXPORTS TOOL tsort83EXPORTS TOOL uname84EXPORTS TOOL unexpand85EXPORTS TOOL uniq86EXPORTS TOOL wc87EXPORTS TOOL which8889FILE /usr/share/licenses/sbase/LICENSE9091SLOP rm \92  -rf \93  /tmp/sbase \94  /tmp/sbase.tar95# Shared C/C++ build and system utilities, without a display or Rust tools.96REQUIRES HEADER download9798# This command is Dolly-specific rather than part of the POSIX-like core set.99FILE /tmp/download/download.c100    #include <stdio.h>101    #include <string.h>102    103    #include <dolly/download.h>104    105    int main(int argc, char **argv) {106      if (argc == 2 && strcmp(argv[1], "--help") == 0) {107        fputs("usage: download FILE\n", stdout);108        return 0;109      }110      if (argc != 2) {111        fputs("download: expected one file\n", stderr);112        return 2;113      }114      const int status = dolly_download_file(argv[1]);115      if (status != 0) {116        fprintf(stderr, "download: %s failed (%d)\n", argv[1], status);117        return 1;118      }119      printf("download: requested %s\n", argv[1]);120      return 0;121    }122123SLOP cc \124  /tmp/download/download.c \125  -o /bin/download126127EXPORTS TOOL download128SLOP download --help > /usr/share/man/cat1/download.1129130SLOP rm \131  -rf \132  /tmp/download133REQUIRES HEADER upload134135FILE /tmp/upload/upload.c136    #include <dolly/upload.h>137    #include <stdio.h>138    #include <stdlib.h>139    #include <string.h>140    int main(int argc, char **argv) {141      if (argc != 2 || strcmp(argv[1], "--help") == 0) {142        fprintf(argc == 2 ? stdout : stderr, "usage: upload DESTINATION\nChoose a file in the browser (up to %u MiB). Existing files are never replaced.\n",143                DOLLY_UPLOAD_MAX_SIZE >> 20);144        return argc == 2 ? 0 : 2;145      }146      puts("upload: choose a file in the browser, or cancel");147      fflush(stdout);148      const int result = dolly_upload_file(argv[1]);149      if (result < 0) { fprintf(stderr, "upload: %s\n", strerror((int)-result)); return 1; }150      printf("upload: saved %s\n", argv[1]);151      return 0;152    }153SLOP cc -O1 /tmp/upload/upload.c -o /bin/upload154EXPORTS TOOL upload155SLOP upload --help > /usr/share/man/cat1/upload.1156SLOP rm -rf /tmp/upload157# Samurai is a compact Ninja-compatible executor. Its upstream parser, graph,158# depfile handling, and build log stay as separate ordinary C translation159# units. The Dolly patch replaces only native process scheduling with the160# in-Wasm command lifecycle. `util.c` has two explicit loop checkpoints and is161# compiled without generic edge coverage, which otherwise causes a severe162# bootstrap-compiler blowup for that one file.163REQUIRES HEADER runtime164165SOURCE /v0.1.2/dist/static/default/samurai.tar                   3edf36a672e9c70962e0f1fb6fdf92bbfd96d759fff162b821ee5947536f6899 /tmp/ninja/samurai.tar166SOURCE /v0.1.2/dist/static/default/runtimes/samurai-unit-dolly.c 4412175ad18939c580d6a31ca89a1284d313026674d5ac4faa0841aab379a4f7 /tmp/ninja/samurai-unit-dolly.c167168FILE /tmp/ninja/Makefile169    .RECIPEPREFIX := >170    SOURCE_ROOT := /tmp/ninja/source171    NAMES := build deps env graph htab log parse samu scan tool tree util os-posix172    SOURCES := $(addprefix $(SOURCE_ROOT)/,$(addsuffix .c,$(NAMES)))173    PARTS := 1 2 3 4 5 6 7 8 9 10 11 12 13174    UNIT := /tmp/ninja/samurai-unit-dolly.c175    OBJECTS := $(addprefix /tmp/ninja/part-,$(addsuffix .o,$(PARTS)))176    CFLAGS := -O1 -std=c99 -D_POSIX_C_SOURCE=200809L -I $(SOURCE_ROOT)177    178    all: /usr/bin/ninja179    180    /tmp/ninja/part-12.o: $(UNIT) $(SOURCES)181    >cc \182    >  $(CFLAGS) \183    >  -O0 \184    >  -DDOLLY_SAMURAI_PART=12 \185    >  -c $(UNIT) \186    >  -o $@187    188    /tmp/ninja/part-%.o: $(UNIT) $(SOURCES)189    >cc \190    >  $(CFLAGS) \191    >  -DDOLLY_SAMURAI_PART=$* \192    >  -c $(UNIT) \193    >  -o $@194    195    /usr/bin/ninja: $(OBJECTS)196    >cc $(OBJECTS) -o $@197198SLOP tar \199  -xf /tmp/ninja/samurai.tar \200  -C /201SLOP make \202  -f /tmp/ninja/Makefile203204EXPORTS TOOL ninja205206SLOP ninja \207  --version208SLOP cp /tmp/ninja/source/samu.1 /usr/share/man/man1/ninja.1209210FILE /usr/share/licenses/samurai/LICENSE211212SLOP rm \213  -rf \214  /tmp/ninja215INSTALL /v0.1.2/Dollyfile-zlib d4b599bd8e0b9abadc856d1c387716fde1982758021a8ff16d6e77b5fcde90ef216INSTALL /v0.1.2/Dollyfile-gzip b84ff87cdef0b80d08ee7bc50679df1f07ce134a2ac9d7b3211559e2697338df217INSTALL /v0.1.2/Dollyfile-curl fa7dc027b8d70e8439ba5f6e03c12c396af3773b38577ceec7bcb30763a0c6f3218REQUIRES TOOL   mkdir219REQUIRES LIB    curl220REQUIRES LIB    z221REQUIRES HEADER curl222REQUIRES HEADER zlib223224SOURCE /v0.1.2/dist/static/default/git.tar c4c2f0e7c0fe241b81331b9fd8e10d9847e996c82a0c7249844b692023295648 /tmp/git.tar225SLOP tar \226  -xf /tmp/git.tar \227  -C /228229FILE /etc/gitconfig230    [maintenance]231        auto = false232FILE /home/dolly/.gitconfig233    [user]234        name = Dolly235        email = [email protected]236FILE /tmp/git/Makefile237    .RECIPEPREFIX := >238    SOURCES := $(file </usr/src/git/dolly-sources.txt)239    OBJECTS := $(addprefix /tmp/git/objects/,$(SOURCES:.c=.o))240    # Keep the bootstrap build unoptimized: Git has hundreds of translation241    # units and this layer is optimized for deterministic browser cold-build242    # latency rather than execution throughput.243    # Git ends with status 128 when its pager cannot start, so the default one244    # is a command for Slop: less when it is installed, cat otherwise.245    CPPFLAGS := \246      -O0 \247      -std=gnu99 \248      -Wno-ignored-attributes \249      -D_DEFAULT_SOURCE \250      -DNO_GETTEXT \251      -DNO_ICONV \252      -DNO_EXPAT \253      -DNO_PTHREADS \254      -DNO_UNIX_SOCKETS \255      -DNO_OPENSSL \256      -DNO_PERL \257      -DNO_PYTHON \258      -DNO_IPV6 \259      -DNO_MMAP \260      -DNO_REGEX \261      -DGAWK \262      -DNO_MBSUPPORT \263      -DNO_MEMMEM \264      -DNO_PREAD \265      -DNO_SETENV \266      -DNO_STRCASESTR \267      -DNO_STRLCPY \268      -DNO_STRTOUMAX \269      -Dprintf=iprintf \270      -Dfprintf=fiprintf \271      -DSHA1_BLK \272      -DSHA256_BLK \273      -DHAVE_ALLOCA_H \274      -DHAVE_STRINGS_H \275      -DHAVE_CLOCK_GETTIME \276      -DHAVE_GETRANDOM \277      '-DGIT_VERSION_H="version-def.h"' \278      '-DBINDIR="/usr/bin"' \279      '-DGIT_EXEC_PATH="/usr/libexec/dolly"' \280      '-DDEFAULT_GIT_TEMPLATE_DIR="/usr/share/git-core/templates"' \281      '-DFALLBACK_RUNTIME_PREFIX="/usr"' \282      '-DGIT_HOST_CPU="wasm64"' \283      '-DGIT_LOCALE_PATH="/usr/share/locale"' \284      '-DSHELL_PATH="/bin/slop"' \285      '-DDEFAULT_PAGER="$$(command -v less || command -v cat)"' \286      '-DPAGER_ENV="LESS=FRX LV=-c"' \287      '-DETC_GITCONFIG="/etc/gitconfig"' \288      '-DETC_GITATTRIBUTES="/etc/gitattributes"' \289      '-DGIT_HTML_PATH="/usr/share/doc/git/html"' \290      '-DGIT_MAN_PATH="/usr/share/man"' \291      '-DGIT_INFO_PATH="/usr/share/info"' \292      -I /usr/src/git/compat/regex \293      -I /usr/src/git \294      -include dolly/runtime.h295    all: /usr/bin/git /usr/libexec/dolly/git-remote-http /usr/libexec/dolly/git-remote-https296    /tmp/git/objects/%.o: /usr/src/git/%.c297    >mkdir -p $(dir $@)298    >cc \299    >  $(CPPFLAGS) \300    >  -c $< \301    >  -o $@302    /usr/lib/libgit.a: $(OBJECTS)303    >ar rcs $@ $^304    /usr/bin/git: /usr/src/git/common-main.c /usr/src/git/git.c /usr/lib/libgit.a305    >cc \306    >  $(CPPFLAGS) \307    >  /usr/src/git/common-main.c \308    >  /usr/src/git/git.c \309    >  -lgit \310    >  -lz \311    >  -o $@312    /usr/libexec/dolly:313    >mkdir -p $@314    /usr/libexec/dolly/git-remote-http: /usr/src/git/common-main.c /usr/src/git/remote-curl.c /usr/src/git/http.c /usr/src/git/http-walker.c /usr/lib/libgit.a | /usr/libexec/dolly315    >cc \316    >  $(CPPFLAGS) \317    >  /usr/src/git/common-main.c \318    >  /usr/src/git/remote-curl.c \319    >  /usr/src/git/http.c \320    >  /usr/src/git/http-walker.c \321    >  -lgit \322    >  -lcurl \323    >  -lz \324    >  -o $@325    /usr/libexec/dolly/git-remote-https: /usr/libexec/dolly/git-remote-http326    >cc \327    >  $(CPPFLAGS) \328    >  /usr/src/git/common-main.c \329    >  /usr/src/git/remote-curl.c \330    >  /usr/src/git/http.c \331    >  /usr/src/git/http-walker.c \332    >  -lgit \333    >  -lcurl \334    >  -lz \335    >  -o $@336SLOP CWD /usr/src/git make \337  -f /tmp/git/Makefile338339EXPORTS TOOL git340341SLOP git \342  --version343SLOP git --help > /usr/share/man/cat1/git.1344345FILE /usr/libexec/dolly/git-remote-http346FILE /usr/libexec/dolly/git-remote-https347FOLDER /usr/share/git-core/templates348FILE /usr/share/licenses/git/COPYING349350SLOP rm \351  -rf \352  /tmp/git \353  /tmp/git.tar \354  /usr/src/git355SOURCE /v0.1.2/dist/static/default/awk.tar f28cae177fa60793a70066d10667e8d06775d979f2262be1c48f8eb941090015 /tmp/awk.tar356SLOP tar \357  -xf /tmp/awk.tar \358  -C /359360FILE /tmp/awk/Makefile361    .RECIPEPREFIX := >362    SOURCES := /usr/src/awk/awkgram.tab.c /usr/src/awk/b.c /usr/src/awk/main.c /usr/src/awk/parse.c /usr/src/awk/proctab.c /usr/src/awk/tran.c /usr/src/awk/lib.c /usr/src/awk/run.c /usr/src/awk/lex.c363    all: /bin/awk364    /usr/libexec/dolly/awk-maketab: /usr/src/awk/maketab.c365    >cc -std=gnu99 -I /usr/src/awk -DNDEBUG $< -o $@366    /usr/src/awk/proctab.c: /usr/libexec/dolly/awk-maketab /usr/src/awk/awkgram.tab.h367    >/usr/libexec/dolly/awk-maketab /usr/src/awk/awkgram.tab.h > $@368    /bin/awk: $(SOURCES)369    >cc -std=gnu99 -fno-builtin -I /usr/src/awk -D_DEFAULT_SOURCE -DNDEBUG $^ -o $@370SLOP CWD /usr/src/awk make \371  -f /tmp/awk/Makefile372373EXPORTS TOOL awk374FILE /usr/share/licenses/awk/LICENSE375376SLOP awk \377  --version378379SLOP rm \380  -rf \381  /tmp/awk \382  /tmp/awk.tar \383  /usr/libexec/dolly/awk-maketab \384  /usr/src/awk385# Focused compatibility commands used by build systems and coding agents.386# Each remains a separate Wasm executable; wrappers which launch another tool387# do so through Dolly's in-userspace spawn/wait contract.388REQUIRES TOOL   git389390SOURCE /v0.1.2/dist/static/default/commands/run-program.h 8434bb55978a286e546878170e882010e63c1901402156bb8b8b8a96adc37f73 /tmp/agent-tools/run-program.h391SOURCE /v0.1.2/dist/static/default/commands/install.c     0aa8729ff8f6d8ecc454757226275b946b28c2e6783afd571f4c33a616cb4ba3 /tmp/agent-tools/install.c392SOURCE /v0.1.2/dist/static/default/commands/du.c          55b6a61ea8dc2a4355aaafc9a80d2218f397fa4d1e170b78462863fc9cb2ed63 /tmp/agent-tools/du.c393SOURCE /v0.1.2/dist/static/default/commands/rev.c         3539529d49f26629a6518437dc76631f113bcc5822ff5dbc8aa26481933f3d05 /tmp/agent-tools/rev.c394SOURCE /v0.1.2/dist/static/default/commands/command.c     93610e7ec64b99dd6a128d66e5a49b453464fa317434167251b492d4913e44da /tmp/agent-tools/command.c395SOURCE /v0.1.2/dist/static/default/commands/xargs.c       4b94714fb29a296df4b71d648dbd222763ca11738b7c651d1de3f5ee5c84e9f3 /tmp/agent-tools/xargs.c396SOURCE /v0.1.2/dist/static/default/commands/find.c        342ba6df849456d47646b7531718ca9682d27b3215c355ebb156eae7e8b16813 /tmp/agent-tools/find.c397SOURCE /v0.1.2/dist/static/default/commands/env.c         9a04ef03ad00956c2a27b3759b84872f118115ebbe1e399621a5c43a59900228 /tmp/agent-tools/env.c398SOURCE /v0.1.2/dist/static/default/commands/time.c        bb49a29e708e9e32716e2d5bf4b4b4e662b07093d0e3731588ef7d41a53ad733 /tmp/agent-tools/time.c399SOURCE /v0.1.2/dist/static/default/commands/timeout.c     4864285ae0b36f853376e6e77855f4d1f8159b96d716bd9466606b9bef1c5f16 /tmp/agent-tools/timeout.c400SOURCE /v0.1.2/dist/static/default/commands/realpath.c    6ec82439ecf3ab1d21a40293ab7e585972c523d8c8e4573a60a7cef86af08250 /tmp/agent-tools/realpath.c401SOURCE /v0.1.2/dist/static/default/commands/diff.c        e1e71b3947fac230f221715577fbbfbd6ba3cf82c6c3cd027905f10ace8cf11e /tmp/agent-tools/diff.c402SOURCE /v0.1.2/dist/static/default/commands/patch.c       01a81c0b50df26223772e568bdc951db73d0be59b71251a1b023234c10a1b63e /tmp/agent-tools/patch.c403SOURCE /v0.1.2/dist/static/default/commands/hostname.c    14a20a493c8559d8b28f221a6edd9b6f89f893f3e3067093b44d7235b4ae060f /tmp/agent-tools/hostname.c404SOURCE /v0.1.2/dist/static/default/commands/tty.c         c51c9598e8245d5f651ade70995f2b03fb936c42a0e99c4c81c83749c5714c7e /tmp/agent-tools/tty.c405SOURCE /v0.1.2/dist/static/default/commands/nproc.c       96ce7b8d1b1cee59d12193c2fa6fab5210bb7f0c9a0d0cc9bde7e0fd8d87c7ac /tmp/agent-tools/nproc.c406SOURCE /v0.1.2/dist/static/default/commands/amy.c         13a1e2eb87c10f39d8c3ff6ecef5acf2eb56ebc721f4ab7570333fe0b808f98d /tmp/agent-tools/amy.c407SOURCE /v0.1.2/dist/static/default/commands/version.h   38d6aed46e71d8422aaace40bb483753d7ce253c8de759df3966475927377dde /tmp/agent-tools/version.h408409FILE /tmp/agent-tools/Makefile410    .RECIPEPREFIX := >411    NAMES := install du rev command xargs find env time timeout realpath diff patch hostname tty nproc amy412    TOOLS := $(addprefix /bin/,$(NAMES))413    all: $(TOOLS) $(NAMES:%=/usr/share/man/cat1/%.1)414    /bin/%: /tmp/agent-tools/%.c /tmp/agent-tools/run-program.h415    >cc -O2 $< -o $@416    /usr/share/man/cat1/%.1: /bin/%417    >$< --help > $@418SLOP make \419  -f /tmp/agent-tools/Makefile420421EXPORTS TOOL install422EXPORTS TOOL du423EXPORTS TOOL rev424EXPORTS TOOL command425EXPORTS TOOL xargs426EXPORTS TOOL find427EXPORTS TOOL env428EXPORTS TOOL time429EXPORTS TOOL timeout430EXPORTS TOOL realpath431EXPORTS TOOL diff432EXPORTS TOOL patch433EXPORTS TOOL hostname434EXPORTS TOOL tty435EXPORTS TOOL nproc436EXPORTS TOOL amy437438SLOP rm \439  -rf \440  /tmp/agent-tools441# Conventional pathname for upstream scripts; the implementation is Slop.442REQUIRES TOOL ln443SLOP ln -s slop /bin/sh444EXPORTS TOOL sh445SLOP cp /usr/share/man/cat1/slop.1 /usr/share/man/cat1/sh.1446FOLDER /usr/share/man447INSTALL /v0.1.2/Dollyfile-display 133d99fcd484b7cb260939ee300895459bd30164ec61aadfcd853cb9571215e8448449ENTRY /bin/foreground -i /bin/slop450