Misc cleanup blocking CC-Release. (#1249)

* Move extraneous stuff out of pkg/urbit/*
* s/urb/herb/g
* Removed some boilerplate for `urbit` builds.
* Build urbit tests and run them in the nix build.
This commit is contained in:
benjamin-tlon 2019-04-24 17:27:27 -07:00 committed by GitHub
parent 62e7c8272b
commit 3c3f7e761e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
58 changed files with 78 additions and 1367 deletions

View File

@ -5,13 +5,13 @@ PKGS = minima extrema rusthello prog
.PHONY: build build-all install release test clean .PHONY: build build-all install release test clean
build: build:
nix-build -A urbit -A urb --no-out-link nix-build -A urbit -A herb --no-out-link
build-all: build-all:
nix-build --no-out-link nix-build --no-out-link
install: install:
nix-env -f . -iA urbit -iA urbit-debug -iA urb nix-env -f . -iA urbit -iA urbit-debug -iA herb
release: release:
sh/release urbit linux32 sh/release urbit linux32

View File

@ -15,13 +15,13 @@ cleanup () {
trap cleanup EXIT trap cleanup EXIT
urb ./zod -p hood -d '+hood/autoload |' herb ./zod -p hood -d '+hood/autoload |'
urb ./zod -p hood -d "+hood/mount %" herb ./zod -p hood -d "+hood/mount %"
rm -r ./zod/home rm -r ./zod/home
cp -r $ARVO ./zod/home cp -r $ARVO ./zod/home
urb ./zod -p hood -d "+hood/commit %home" herb ./zod -p hood -d "+hood/commit %home"
urb ./zod -P brass.pill -d '+brass' herb ./zod -P brass.pill -d '+brass'
mv brass.pill $out mv brass.pill $out

View File

@ -3,7 +3,7 @@
pkgs.stdenv.mkDerivation rec { pkgs.stdenv.mkDerivation rec {
name = "brass"; name = "brass";
builder = ./builder.sh; builder = ./builder.sh;
buildInputs = [ urbit tlon.urb pkgs.coreutils ]; buildInputs = [ urbit tlon.herb pkgs.coreutils ];
FAKEZOD = fakezod; FAKEZOD = fakezod;
ARVO = arvo; ARVO = arvo;

View File

@ -5,13 +5,13 @@ set -ex
urbit -d -F $SHIP -B "$PILL" $out urbit -d -F $SHIP -B "$PILL" $out
check () { check () {
[ 3 -eq "$(urb $out -d 3)" ] [ 3 -eq "$(herb $out -d 3)" ]
} }
if check if check
then then
echo "Boot success." >&2 echo "Boot success." >&2
urb $out -p hood -d '+hood/exit' || true herb $out -p hood -d '+hood/exit' || true
else else
echo "Boot failure." >&2 echo "Boot failure." >&2
kill $(< $out/.vere.lock) || true kill $(< $out/.vere.lock) || true

View File

@ -3,7 +3,7 @@
pkgs.stdenv.mkDerivation rec { pkgs.stdenv.mkDerivation rec {
name = "fake" + ship; name = "fake" + ship;
builder = ./builder.sh; builder = ./builder.sh;
buildInputs = [ urbit tlon.urb ]; buildInputs = [ urbit tlon.herb ];
PILL = brass; PILL = brass;
SHIP = ship; SHIP = ship;
} }

View File

@ -15,8 +15,8 @@ cleanup () {
trap cleanup EXIT trap cleanup EXIT
urb ./zod -p hood -d '+hood/autoload |' herb ./zod -p hood -d '+hood/autoload |'
urb ./zod -p hood -d "+hood/mount %" herb ./zod -p hood -d "+hood/mount %"
rm -r ./zod/home rm -r ./zod/home
cp -r $ARVO ./zod/home cp -r $ARVO ./zod/home
@ -25,7 +25,7 @@ cp -r $ARVO ./zod/home
# cp $ARVO/gen/solid.hoon ./zod/home/gen/ # cp $ARVO/gen/solid.hoon ./zod/home/gen/
# cp $ARVO/lib/pill.hoon ./zod/home/lib/ # cp $ARVO/lib/pill.hoon ./zod/home/lib/
urb ./zod -p hood -d "+hood/commit %home" herb ./zod -p hood -d "+hood/commit %home"
urb ./zod -P urbit.pill -d '+solid, =dub &' herb ./zod -P urbit.pill -d '+solid, =dub &'
mv urbit.pill $out mv urbit.pill $out

View File

@ -3,7 +3,7 @@
pkgs.stdenv.mkDerivation rec { pkgs.stdenv.mkDerivation rec {
name = "solid"; name = "solid";
builder = ./builder.sh; builder = ./builder.sh;
buildInputs = [ urbit tlon.urb pkgs.coreutils ]; buildInputs = [ urbit tlon.herb pkgs.coreutils ];
FAKEZOD = fakezod; FAKEZOD = fakezod;
ARVO = arvo; ARVO = arvo;

View File

@ -20,29 +20,29 @@ shutdown () {
trap shutdown EXIT trap shutdown EXIT
urb ./ship -p hood -d '+hood/autoload |' herb ./ship -p hood -d '+hood/autoload |'
urb ./ship -p hood -d '+hood/mount %' herb ./ship -p hood -d '+hood/mount %'
rm -r ./ship/home rm -r ./ship/home
cp -r $ARVO ./ship/home cp -r $ARVO ./ship/home
urb ./ship -p hood -d '+hood/commit %home' herb ./ship -p hood -d '+hood/commit %home'
# Start the test app # Start the test app
urb ./ship -p hood -d '+hood/start %test' herb ./ship -p hood -d '+hood/start %test'
# Run the %cores tests # Run the %cores tests
urb ./ship -d '~& ~ ~& %start-test-cores ~' herb ./ship -d '~& ~ ~& %start-test-cores ~'
urb ./ship -p test -d ':- %cores /' herb ./ship -p test -d ':- %cores /'
urb ./ship -d '~& %finish-test-cores ~' herb ./ship -d '~& %finish-test-cores ~'
# Run the %renders tests # Run the %renders tests
urb ./ship -d '~& ~ ~& %start-test-renders ~' herb ./ship -d '~& ~ ~& %start-test-renders ~'
urb ./ship -p test -d ':- %renders /' herb ./ship -p test -d ':- %renders /'
urb ./ship -d '~& %finish-test-renders ~' herb ./ship -d '~& %finish-test-renders ~'
# Run the test generator # Run the test generator
urb ./ship -d '+test, =seed `@uvI`(shaz %reproducible)' | herb ./ship -d '+test, =seed `@uvI`(shaz %reproducible)' |
tee test-generator-output tee test-generator-output
shutdown shutdown

View File

@ -3,7 +3,7 @@
pkgs.stdenv.mkDerivation rec { pkgs.stdenv.mkDerivation rec {
name = "test"; name = "test";
builder = ./builder.sh; builder = ./builder.sh;
buildInputs = [ urbit tlon.urb pkgs.coreutils ]; buildInputs = [ urbit tlon.herb pkgs.coreutils ];
SHIP = ship; SHIP = ship;
ARVO = arvo; ARVO = arvo;

View File

@ -4,26 +4,20 @@ let
deps = import ../deps { inherit pkgs; }; deps = import ../deps { inherit pkgs; };
ent = import ./ent { inherit pkgs; };
arvo = import ./arvo { inherit pkgs; };
herb = import ../../pkg/herb { inherit pkgs; };
mkUrbit = { debug }:
import ./urbit {
inherit pkgs ent debug;
inherit (deps) argon2 murmur3 uv ed25519 sni scrypt softfloat3;
inherit (deps) secp256k1 h2o;
};
urbit = mkUrbit { debug=false; };
urbit-debug = mkUrbit { debug=true; };
in in
rec { { inherit ent arvo herb urbit urbit-debug; }
arvo = import ./arvo { inherit pkgs; };
ent = import ./ent { inherit pkgs; };
urb = import ../../pkg/urb { inherit pkgs; };
urbit = import ./urbit {
inherit pkgs ent;
inherit (deps) argon2 murmur3 uv ed25519 sni scrypt softfloat3;
inherit (deps) secp256k1 h2o;
name = "urbit";
debug = false;
};
urbit-debug = import ./urbit {
inherit pkgs ent;
inherit (deps) argon2 murmur3 uv ed25519 sni scrypt softfloat3;
inherit (deps) secp256k1 h2o;
name = "urbit-debug";
debug = true;
};
}

View File

@ -6,7 +6,9 @@ cd src
bash ./configure bash ./configure
make clean
make urbit urbit-worker -j8 make urbit urbit-worker -j8
make test
mkdir -p $out/bin mkdir -p $out/bin
cp urbit $out/bin/$exename cp urbit $out/bin/$exename

View File

@ -1,12 +1,14 @@
{ {
pkgs, pkgs,
name ? "urbit", debug,
debug ? false,
argon2, ed25519, ent, h2o, murmur3, scrypt, secp256k1, sni, softfloat3, uv argon2, ed25519, ent, h2o, murmur3, scrypt, secp256k1, sni, softfloat3, uv
}: }:
let let
name =
if debug then "urbit-debug" else "urbit";
deps = deps =
with pkgs; with pkgs;
[ curl gmp libsigsegv ncurses openssl zlib ]; [ curl gmp libsigsegv ncurses openssl zlib ];
@ -14,16 +16,6 @@ let
vendor = vendor =
[ argon2 softfloat3 ed25519 ent h2o scrypt uv murmur3 secp256k1 sni ]; [ argon2 softfloat3 ed25519 ent h2o scrypt uv murmur3 secp256k1 sni ];
# osx =
# with pkgs;
# lib.optionals stdenv.isDarwin (
# with darwin.apple_sdk.frameworks;
# [ Cocoa CoreServices ]);
# NIX_LDFLAGS =
# pkgs.lib.optionalString pkgs.stdenv.isDarwin
# "-framework CoreServices -framework CoreFoundation";
in in
pkgs.stdenv.mkDerivation { pkgs.stdenv.mkDerivation {

View File

@ -8,6 +8,7 @@ in
import ./default.nix { import ./default.nix {
inherit pkgs; inherit pkgs;
debug = false;
inherit (tlon) ent; inherit (tlon) ent;
inherit (deps) inherit (deps)
argon2 ed25519 h2o murmur3 scrypt secp256k1 sni softfloat3 uv; argon2 ed25519 h2o murmur3 scrypt secp256k1 sni softfloat3 uv;

View File

@ -1,4 +1,4 @@
# urb # Herb
Unix control of Urbit Unix control of Urbit
@ -7,10 +7,10 @@ Unix control of Urbit
To run without installing anything: To run without installing anything:
```bash ```bash
nix-shell --pure --command 'python ./urb -d "(add 3 4)"' nix-shell --pure --command 'python ./herb -d "(add 3 4)"'
``` ```
To install `urb`: To install `herb`:
```bash ```bash
nix-env -if . nix-env -if .

View File

@ -21,19 +21,19 @@ let
in in
pkgs.stdenv.mkDerivation rec { pkgs.stdenv.mkDerivation rec {
name = "urb"; name = "herb";
buildInputs = [ pyenv ]; buildInputs = [ pyenv ];
unpackPhase = "true"; unpackPhase = "true";
installPhase = '' installPhase = ''
mkdir -p $out/bin mkdir -p $out/bin
cp ${./urb} $out/bin/urb.py cp ${./herb} $out/bin/herb.py
cat > $out/bin/urb <<EOF cat > $out/bin/herb <<EOF
#!/usr/bin/env bash #!/usr/bin/env bash
${pyexe} $out/bin/urb.py "\$@" ${pyexe} $out/bin/herb.py "\$@"
EOF EOF
chmod +x $out/bin/urb chmod +x $out/bin/herb
''; '';
} }

View File

@ -23,3 +23,5 @@ GRTAGS
GTAGS GTAGS
*.swo *.swo
*.swp *.swp
hash_tests
hashtable_tests

View File

@ -1,62 +0,0 @@
dist: xenial
language: node_js
node_js:
- 4
# Uncomment me if this gets annoying
#
# notifications:
# email: false
before_install:
# try to get pill early, so configuration errors will be quickly caught
- cd .travis
- bash check-trailing-whitespace.sh
- bash get-brass-pill.sh
- cd ..
- wget https://github.com/ninja-build/ninja/releases/download/v1.8.2/ninja-linux.zip
- unzip ninja-linux.zip
- sudo mv ninja /usr/bin/
install:
# pwd: ~/urbit
- pip3 install --user -I meson
script:
- meson . ./build --buildtype=debugoptimized -Dgc=true -Dprof=true
- cd ./build
- ninja
- ninja test
- sudo ninja install
- cd ../.travis
- npm install
- ulimit -c unlimited -S
- npm run -s test; bash print-core-backtrace.sh $?
addons:
apt:
packages:
- python3
- python3-pip
- python3-setuptools
- python3-wheel
- libgmp3-dev
- libsigsegv-dev
- openssl
- libssl-dev
- libncurses5-dev
- gcc
- libcurl4-gnutls-dev
- unzip
- gdb
# before_deploy: "make deb" # TODO
# deploy:
# skip_cleanup: true
# provider: releases
# prerelease: true # turn this off for official releases
# api_key:
# secure: XX
# file: ./build/urbit # TODO upload package from before_deploy
# on:
# repo: urbit/urbit
# tags: true

View File

@ -1,2 +0,0 @@
# Don't show in diffs or auto-merge
package-lock.json binary

View File

@ -1 +0,0 @@
node_modules/

View File

@ -1,15 +0,0 @@
#!/usr/bin/env bash
whitespace=$(
find .. -path ../.git -prune -o \
-path ../subprojects -prune -o \
-type f \
-exec egrep -l " +$" {} ';' \
)
if [ -n "$whitespace" ]
then
echo 'found trailing whitespace in:';
echo $whitespace;
exit 1;
fi

View File

@ -1,19 +0,0 @@
#!/bin/bash
set -euo pipefail
set -x
if [ ! -f ./pin-arvo-commit.txt ]; then
exit 0
fi
if [ ! -f ./pin-brass-pill.txt ]; then
echo "missing .travis/pin-brass-pill.txt"
exit 1
fi
PILL_NAME=$(cat ./pin-brass-pill.txt | tr -d [:space:])
wget https://bootstrap.urbit.org/$PILL_NAME -O brass.pill && exit 0
echo "$PILL_NAME download failed"
exit 1

View File

@ -1,753 +0,0 @@
{
"name": "vere-tests",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"ajv": {
"version": "5.5.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
"requires": {
"co": "^4.6.0",
"fast-deep-equal": "^1.0.0",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.3.0"
}
},
"array-differ": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
"integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE="
},
"array-union": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
"integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
"requires": {
"array-uniq": "^1.0.1"
}
},
"array-uniq": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
"integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
},
"arrify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
},
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
},
"asn1": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
"requires": {
"safer-buffer": "~2.1.0"
}
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
},
"aws4": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"requires": {
"tweetnacl": "^0.14.3"
}
},
"bluebird": {
"version": "2.11.0",
"resolved": "http://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz",
"integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE="
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
},
"colors": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz",
"integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ=="
},
"combined-stream": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
"integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
"requires": {
"delayed-stream": "~1.0.0"
}
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"core-js": {
"version": "2.5.7",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
"integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": {
"assert-plus": "^1.0.0"
}
},
"del": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
"integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
"requires": {
"globby": "^5.0.0",
"is-path-cwd": "^1.0.0",
"is-path-in-cwd": "^1.0.0",
"object-assign": "^4.0.1",
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0",
"rimraf": "^2.2.8"
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
}
},
"emitter-mixin": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/emitter-mixin/-/emitter-mixin-0.0.3.tgz",
"integrity": "sha1-WUjLKG8uSO3DslGnz8H3iDOW1lw="
},
"errno": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
"integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
"requires": {
"prr": "~1.0.1"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"extend": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz",
"integrity": "sha1-oPX9bPyDpf5J72mNYOyKYk3UV2w="
},
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
},
"fast-deep-equal": {
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
},
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
},
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": {
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"globby": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
"integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
"requires": {
"array-union": "^1.0.1",
"arrify": "^1.0.0",
"glob": "^7.0.3",
"object-assign": "^4.0.1",
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0"
}
},
"graceful-fs": {
"version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
},
"har-validator": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
"integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
"requires": {
"ajv": "^5.3.0",
"har-schema": "^2.0.0"
}
},
"hoek": {
"version": "4.2.1",
"resolved": "http://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
"integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA=="
},
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
}
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"is-path-cwd": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
"integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0="
},
"is-path-in-cwd": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
"integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
"requires": {
"is-path-inside": "^1.0.0"
}
},
"is-path-inside": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
"integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
"requires": {
"path-is-inside": "^1.0.1"
}
},
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
"isemail": {
"version": "2.2.1",
"resolved": "http://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz",
"integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY="
},
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
"items": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/items/-/items-2.1.1.tgz",
"integrity": "sha1-i9FtnIOxlSneWuoyGsqtp4NkoZg="
},
"joi": {
"version": "9.2.0",
"resolved": "http://registry.npmjs.org/joi/-/joi-9.2.0.tgz",
"integrity": "sha1-M4WseQGSEwy+Iw6ALsAskhW7/to=",
"requires": {
"hoek": "4.x.x",
"isemail": "2.x.x",
"items": "2.x.x",
"moment": "2.x.x",
"topo": "2.x.x"
}
},
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
},
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
},
"json-schema-traverse": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
}
},
"junk": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/junk/-/junk-1.0.3.tgz",
"integrity": "sha1-h75jSIZJy9ym9Tqzm+yczSNH9ZI="
},
"maximatch": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz",
"integrity": "sha1-hs2NawTJ8wfAWmuUGZBtA2D7E6I=",
"requires": {
"array-differ": "^1.0.0",
"array-union": "^1.0.1",
"arrify": "^1.0.0",
"minimatch": "^3.0.0"
}
},
"mime-db": {
"version": "1.37.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
"integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg=="
},
"mime-types": {
"version": "2.1.21",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
"integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
"requires": {
"mime-db": "~1.37.0"
}
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
},
"mkdirp": {
"version": "0.5.1",
"resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": {
"minimist": "0.0.8"
}
},
"moment": {
"version": "2.22.2",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz",
"integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y="
},
"nan": {
"version": "2.3.5",
"resolved": "http://registry.npmjs.org/nan/-/nan-2.3.5.tgz",
"integrity": "sha1-gioNwmYpDOTNOhIoLKPn42Rmigg="
},
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1"
}
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"path-is-inside": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
"integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM="
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"pify": {
"version": "2.3.0",
"resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
},
"pinkie": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
},
"pinkie-promise": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"requires": {
"pinkie": "^2.0.0"
}
},
"promise": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
"integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
"requires": {
"asap": "~2.0.3"
}
},
"promise-streams": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/promise-streams/-/promise-streams-2.1.1.tgz",
"integrity": "sha1-cwnx02mDMOp/rasZIvE5iSKayFo=",
"requires": {
"bluebird": "^2.10.2"
}
},
"prr": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
},
"psl": {
"version": "1.1.29",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
"integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ=="
},
"pty.js": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/pty.js/-/pty.js-0.3.1.tgz",
"integrity": "sha1-gfW+0zLW5eeraFaI0boDc0ENUbU=",
"requires": {
"extend": "~1.2.1",
"nan": "2.3.5"
}
},
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
},
"recursive-copy": {
"version": "2.0.9",
"resolved": "https://registry.npmjs.org/recursive-copy/-/recursive-copy-2.0.9.tgz",
"integrity": "sha512-0AkHV+QtfS/1jW01z3m2t/TRTW56Fpc+xYbsoa/bqn8BCYPwmsaNjlYmUU/dyGg9w8MmGoUWihU5W+s+qjxvBQ==",
"requires": {
"del": "^2.2.0",
"emitter-mixin": "0.0.3",
"errno": "^0.1.2",
"graceful-fs": "^4.1.4",
"junk": "^1.0.1",
"maximatch": "^0.1.0",
"mkdirp": "^0.5.1",
"pify": "^2.3.0",
"promise": "^7.0.1",
"slash": "^1.0.0"
}
},
"request": {
"version": "2.88.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
"form-data": "~2.3.2",
"har-validator": "~5.1.0",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
"qs": "~6.5.2",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
},
"dependencies": {
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
}
}
},
"rimraf": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"requires": {
"glob": "^7.0.5"
}
},
"rx": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz",
"integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I="
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"slash": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
"integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU="
},
"split": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
"integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
"requires": {
"through": "2"
}
},
"sshpk": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz",
"integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==",
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
"dashdash": "^1.12.0",
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
}
},
"stream-snitch": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/stream-snitch/-/stream-snitch-0.0.3.tgz",
"integrity": "sha1-iXp48TonFPqESqd74VR3qJbYUqk="
},
"through": {
"version": "2.3.8",
"resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
},
"topo": {
"version": "2.0.2",
"resolved": "http://registry.npmjs.org/topo/-/topo-2.0.2.tgz",
"integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=",
"requires": {
"hoek": "4.x.x"
}
},
"tough-cookie": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"requires": {
"psl": "^1.1.24",
"punycode": "^1.4.1"
}
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"requires": {
"safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
},
"urbit-runner": {
"version": "github:urbit/runner-js#ee2455015dc4ea243d0e0ec623975632c9249c4e",
"from": "github:urbit/runner-js#ee24550",
"requires": {
"colors": "^1.1.2",
"escape-string-regexp": "^1.0.5",
"once": "^1.4.0",
"promise-streams": "^2.1.1",
"pty.js": "^0.3.1",
"recursive-copy": "^2.0.7",
"split": "^1.0.1",
"stream-snitch": "0.0.3",
"wait-on": "^2.0.2"
}
},
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
},
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"requires": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
}
},
"wait-on": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/wait-on/-/wait-on-2.1.2.tgz",
"integrity": "sha512-Jm6pzZkbswtcRUXohxY1Ek5MrL16AwHj83drgW2FTQuglHuhZhVMyBLPIYG0rL1wvr5rdC1uzRuU/7Bc+B9Pwg==",
"requires": {
"core-js": "^2.4.1",
"joi": "^9.2.0",
"minimist": "^1.2.0",
"request": "^2.78.0",
"rx": "^4.1.0"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
}
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
}
}
}

View File

@ -1,14 +0,0 @@
{
"name": "vere-tests",
"version": "1.0.0",
"description": "Test harness for the Urbit runtime",
"scripts": {
"test": "node test.js"
},
"private": true,
"author": "~fyr",
"license": "MIT",
"dependencies": {
"urbit-runner": "github:urbit/runner-js#ee24550"
}
}

View File

@ -1 +0,0 @@
urbit-0.7.2.brass.pill

View File

@ -1,17 +0,0 @@
#!/bin/bash
set -euo pipefail
set -x
RESULT=$1
if [[ ${RESULT} -eq 0 ]]; then
exit 0
else
for i in $(find ./ -maxdepth 1 -name 'core*' -print)
do
gdb urbit core* -ex "thread apply all bt" -ex "set pagination 0" -batch
done
fi
echo "build failed with status code $RESULT"
exit $RESULT

View File

@ -1,68 +0,0 @@
'use strict';
var fs = require('fs')
var runner = require('urbit-runner')
var Urbit = runner.Urbit;
var ERROR = runner.ERROR;
var actions = runner.actions
var args =
(function() {
var commit;
try {
commit = fs.readFileSync('./pin-arvo-commit.txt', 'utf-8');
}
catch (e) {
return ['-cgSF', 'zod', '-B', 'brass.pill', 'zod'];
}
var hash = commit.slice(0, 10);
var pill = 'https://bootstrap.urbit.org/git-' + hash + '.pill';
return ['-u', pill, '-cgPSF', 'zod', 'zod'];
})();
var urbit = new Urbit(args);
// vere hangs (always?) with run in travis-ci with -P
// so we send ^Z if we hang for ~s30
function exit() {
setTimeout(function(){
urbit.pty.write('\x1a');
urbit.pty.on('exit', function(code, signal){
process.exit(0);
})
}, 30 * 1000);
return urbit.exit(0);
}
Promise.resolve(urbit)
// XX temporary
// send ctrl-x to select dojo
//
.then(function(){
return urbit.expect(/talk\[\] /)
.then(function() {
return urbit.pty.write("\x18")
})
.then(function() { return urbit })
})
.then(actions.safeBoot)
.then(actions.test)
.then(function(){
return urbit.line("|mass")
.then(function(){
return urbit.expectEcho("%ran-mass")
.then(function(){ return urbit.resetListeners(); })
})
})
.then(exit)
.catch(function(err){
// we still exit 0, Arvo errors are not our fault ...
return urbit.waitSilent()
.then(function(){
return urbit.warn("Arvo test aborted:", err);
})
.then(exit);
});

View File

@ -15,23 +15,36 @@ worker_objs = $(shell echo $(worker) | sed 's/\.c/.o/g')
all_objs = $(common_objs) $(daemon_objs) $(worker_objs) all_objs = $(common_objs) $(daemon_objs) $(worker_objs)
all_srcs = $(common) $(daemon) $(worker) all_srcs = $(common) $(daemon) $(worker)
all_exes = ./hash_tests ./hashtable_tests ./urbit ./urbit-worker
################################################################################ ################################################################################
.PHONY: all clean mkproper .PHONY: all test clean mkproper
################################################################################ ################################################################################
all: urbit urbit-worker all: urbit urbit-worker hashtable_tests hash_tests
test: hashtable_tests hash_tests
./hashtable_tests
./hash_tests
clean: clean:
rm -f $(all_objs) ./urbit ./urbit-worker ./tags rm -f ./tags $(all_objs) $(all_exes)
mrproper: clean mrproper: clean
rm -f config.mk include/config.h rm -f config.mk include/config.h
################################################################################ ################################################################################
hashtable_tests: $(common_objs) tests/hashtable_tests.o
@echo CC -o $@
@$(CC) $^ $(LDFLAGS) -o $@
hash_tests: $(common_objs) tests/hash_tests.o
@echo CC -o $@
@$(CC) $^ $(LDFLAGS) -o $@
urbit: $(common_objs) $(daemon_objs) urbit: $(common_objs) $(daemon_objs)
@echo CC -o $@ @echo CC -o $@
@$(CC) $^ $(LDFLAGS) -o $@ @$(CC) $^ $(LDFLAGS) -o $@

View File

@ -1,5 +0,0 @@
urbit (0.6-0) unstable; urgency=high
* Memory-allocation bug fix in _box_slot in Vere. Breaking change.
-- Keaton Dunsford <keaton@tlon.io> Fri, 8 Jun 2018 14:31:08 -0700

View File

@ -1 +0,0 @@
10

View File

@ -1,12 +0,0 @@
Source: urbit
Section: net
Priority: extra
Maintainer: Ted Blackman <ted@tlon.io>
Build-Depends: debhelper (>= 9), libgmp3-dev, libsigsegv-dev, openssl, libssl-dev,libtool, meson, re2c, libcurl4-gnutls-dev
Standards-Version: 3.9.5
Homepage: http://urbit.org
Package: urbit
Architecture: any
Depends: libgmp3-dev, libsigsegv-dev, openssl, libcurl4-gnutls-dev
Description: An operating function

View File

@ -1,27 +0,0 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: urbit
Source: <http://urbit.org>
Files: *
License: MIT
The MIT License (MIT)
.
Copyright (c) 2017 Urbit
.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1 +0,0 @@
urbit

View File

@ -1,2 +0,0 @@
LICENSE.txt
README.md

View File

@ -1 +0,0 @@
bin/urbit usr/bin

View File

@ -1,5 +0,0 @@
#!/usr/bin/make -f
%:
dh $@
override_dh_auto_install:

View File

@ -1 +0,0 @@
3.0 (quilt)

View File

@ -1,4 +0,0 @@
file bin/test_hash
handle SIGSEGV nostop noprint
start

View File

@ -1,4 +0,0 @@
#!/usr/bin/env bash
git submodule init
git submodule update

View File

@ -1,5 +0,0 @@
#!/usr/bin/env bash
mkdir ./build &> /dev/null
meson . ./build --buildtype=release "$@"
ninja -C build

View File

@ -1,273 +0,0 @@
/* w/test.c
**
*/
#define C3_GLOBAL
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <unistd.h>
#include <setjmp.h>
#include <gmp.h>
#include <dirent.h>
#include <stdint.h>
#include <uv.h>
#include <ncurses/curses.h>
#include <termios.h>
#include <ncurses/term.h>
#include <errno.h>
#include "all.h"
#if 1
/* u3_walk_load(): load file or bail.
*/
static u3_noun
u3_walk_load(c3_c* pas_c)
{
struct stat buf_b;
c3_i fid_i = open(pas_c, O_RDONLY, 0644);
c3_w fln_w, red_w;
c3_y* pad_y;
if ( (fid_i < 0) || (fstat(fid_i, &buf_b) < 0) ) {
fprintf(stderr, "%s: %s\r\n", pas_c, strerror(errno));
return u3m_bail(c3__fail);
}
fln_w = buf_b.st_size;
pad_y = c3_malloc(buf_b.st_size);
red_w = read(fid_i, pad_y, fln_w);
close(fid_i);
if ( fln_w != red_w ) {
free(pad_y);
return u3m_bail(c3__fail);
}
else {
u3_noun pad = u3i_bytes(fln_w, (c3_y *)pad_y);
free(pad_y);
return pad;
}
}
#endif
#if 0
static c3_w*
_test_walloc(c3_w siz_w)
{
c3_w *ptr_w = u3a_walloc(siz_w);
c3_w i_w;
c3_assert(siz_w >= 1);
*ptr_w = siz_w;
for ( i_w = 1; i_w < siz_w; i_w++ ) {
ptr_w[i_w] = u3r_mug((0xffff & (c3_p)(ptr_w)) + i_w);
}
return ptr_w;
}
static void
_test_free(c3_w* ptr_w)
{
c3_w i_w, siz_w = *ptr_w;
for ( i_w = 1; i_w < siz_w; i_w++ ) {
c3_assert(ptr_w[i_w] == u3r_mug((0xffff & (c3_p)(ptr_w)) + i_w));
}
u3a_free(ptr_w);
}
#define NUM 16384
// Simple allocation test.
//
void
test(void)
{
c3_w* one_w[NUM];
c3_w* two_w[NUM];
c3_w i_w;
for ( i_w = 0; i_w < NUM; i_w++ ) {
c3_w siz_w = c3_max(1, u3r_mug(i_w) & 0xff);
one_w[i_w] = _test_walloc(siz_w);
two_w[i_w] = _test_walloc(siz_w);
}
_road_sane();
for ( i_w = 0; i_w < NUM; i_w++ ) {
_test_free(two_w[NUM - (i_w + 1)]);
_road_sane();
}
for ( i_w = 0; i_w < NUM; i_w++ ) {
c3_w siz_w = c3_max(1, u3r_mug(i_w + 1) & 0xff);
two_w[i_w] = _test_walloc(siz_w);
_road_sane();
}
for ( i_w = 0; i_w < NUM; i_w++ ) {
_test_free(one_w[NUM - (i_w + 1)]);
_road_sane();
}
for ( i_w = 0; i_w < NUM; i_w++ ) {
c3_w siz_w = c3_max(1, u3r_mug(i_w + 2) & 0xff);
one_w[i_w] = _test_walloc(siz_w);
_road_sane();
}
for ( i_w = 0; i_w < NUM; i_w++ ) {
_test_free(one_w[NUM - (i_w + 1)]);
_road_sane();
}
for ( i_w = 0; i_w < NUM; i_w++ ) {
_test_free(two_w[NUM - (i_w + 1)]);
_road_sane();
}
printf("allocations %d, iterations %d\n", ALL_w, ITE_w);
}
#endif
#if 1
static void
_test_hash(void)
{
// u3m_dump();
{
u3h_root* har_u = u3h_new();
c3_w i_w;
c3_w max_w = (1 << 20);
for ( i_w = 0; i_w < max_w; i_w++ ) {
u3_noun key = u3nc(0, i_w);
u3h_put(har_u, key, (i_w + 1));
u3z(key);
}
for ( i_w = 0; i_w < max_w; i_w++ ) {
u3_noun key = u3nc(0, i_w);
u3_noun val = u3h_get(har_u, key);
if ( val != (i_w + 1) ) {
if ( u3_none == val ) {
printf("at %d, nothing\n", i_w);
}
else printf("at %d, oddly, is %d\n", i_w, val);
c3_assert(0);
}
u3z(key);
}
u3h_free(har_u);
}
// u3m_dump();
}
#endif
#if 1
static void
_test_jam(void)
{
// u3m_dump();
{
u3_noun pil = u3_walk_load("urb/urbit.pill");
u3_noun cue, jam;
printf("cueing pill - %d bytes\n", u3r_met(3, pil));
cue = u3ke_cue(pil);
printf("cued - mug %x\n", u3r_mug(cue));
#if 1
jam = u3ke_jam(cue);
printf("jammed - %d bytes\n", u3r_met(3, jam));
cue = u3ke_cue(jam);
printf("cued - mug %x\n", u3r_mug(cue));
#endif
u3z(cue);
}
// u3m_dump();
}
#endif
static void
_test_leap(void)
{
#if 1
// u3m_dump();
{
u3_noun pil;
u3_noun cue, jam;
c3_w gof_w = u3m_golf();
pil = u3_walk_load("urb/urbit.pill");
u3m_leap(0);
printf("cueing pill - %d bytes\n", u3r_met(3, pil));
cue = u3ke_cue(pil);
printf("cued - %p, mug %x\n", u3a_to_ptr(cue), u3r_mug(cue));
u3m_fall();
cue = u3a_take(cue);
printf("taken - %p, mug %x\n", u3a_to_ptr(cue), u3r_mug(cue));
u3m_flog(gof_w);
u3z(pil);
#if 1
jam = u3ke_jam(cue);
printf("jammed - %d bytes\n", u3r_met(3, jam));
cue = u3ke_cue(jam);
printf("cued - mug %x\n", u3r_mug(cue));
#endif
u3z(cue);
}
// u3m_dump();
#endif
}
static void
_test_test(void)
{
u3_noun fol = u3ke_cue(u3_walk_load("pill/west.pill"));
u3_noun val;
printf("test_test: formula mug %x\n", u3r_mug(fol));
val = u3n_nock_on(u3nc(42, 17), fol);
printf("val %d\n", val);
u3z(val);
}
int FOO;
// A simple memory tester.
//
int
main(int argc, char *argv[])
{
printf("hello, world: len %dMB\n", (1 << U3_OS_LoomBits) >> 18);
// _test_words();
u3m_init();
u3m_pave(c3y, c3n);
// u3j_boot();
// u3m_dump();
printf("booted.\n");
{
_test_leap();
// _test_hash();
// _test_jam();
}
// u3m_clear();
// u3m_dump();
}

View File

@ -10,12 +10,12 @@ ship=$1
test -d $ship/.urb test -d $ship/.urb
test -f $ship/.vere.lock test -f $ship/.vere.lock
urb $ship -p hood -d '+hood/autoload |' herb $ship -p hood -d '+hood/autoload |'
urb $ship -p hood -d "+hood/mount %" herb $ship -p hood -d "+hood/mount %"
rm -r $ship/home rm -r $ship/home
cp -r pkg/arvo $ship/home cp -r pkg/arvo $ship/home
urb $ship -p hood -d "+hood/commit %home" herb $ship -p hood -d "+hood/commit %home"