mirror of
https://github.com/urbit/shrub.git
synced 2024-08-16 23:50:55 +03:00
Nix Build + Monorepo Structure (#1196)
This commit is contained in:
parent
5bb2904f1b
commit
c86879e833
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
bin/* filter=lfs diff=lfs merge=lfs -text
|
||||
bin/*/* filter=lfs diff=lfs merge=lfs -text
|
40
.gitignore
vendored
40
.gitignore
vendored
@ -1,35 +1,7 @@
|
||||
# subrepositories, downloaded pills
|
||||
/arvo/
|
||||
*.pill
|
||||
# autoconf
|
||||
/.MAKEFILE-VERSION
|
||||
/make.conf
|
||||
/.make.conf
|
||||
# intermediate
|
||||
*.swo
|
||||
*.swp
|
||||
*.o
|
||||
/outside/**/*.a
|
||||
/outside/re2/obj
|
||||
# build
|
||||
/bin/
|
||||
/vere.pkg
|
||||
.tags
|
||||
.etags
|
||||
GPATH
|
||||
GTAGS
|
||||
GRTAGS
|
||||
# scratch
|
||||
/zod/
|
||||
# dependencies
|
||||
node_modules/
|
||||
.sass-cache
|
||||
# OS
|
||||
.DS_Store
|
||||
# ??
|
||||
/inst
|
||||
cscope.*
|
||||
build/
|
||||
TAGS
|
||||
/fakezod
|
||||
/out
|
||||
/result
|
||||
/result-*
|
||||
/work
|
||||
/zod
|
||||
/fakezod*
|
||||
tags
|
||||
|
42
.gitmodules
vendored
42
.gitmodules
vendored
@ -1,30 +1,12 @@
|
||||
[submodule "subprojects/argon2"]
|
||||
path = subprojects/argon2
|
||||
url = https://github.com/urbit/argon2.git
|
||||
[submodule "subprojects/ed25519"]
|
||||
path = subprojects/ed25519
|
||||
url = https://github.com/urbit/ed25519.git
|
||||
[submodule "subprojects/h2o"]
|
||||
path = subprojects/libh2o
|
||||
url = https://github.com/urbit/h2o.git
|
||||
[submodule "subprojects/libent"]
|
||||
path = subprojects/libent
|
||||
url = https://github.com/urbit/libent.git
|
||||
[submodule "subprojects/libuv"]
|
||||
path = subprojects/libuv
|
||||
url = https://github.com/urbit/libuv.git
|
||||
[submodule "subprojects/libscrypt"]
|
||||
path = subprojects/libscrypt
|
||||
url = https://github.com/urbit/libscrypt.git
|
||||
[submodule "subprojects/libsni"]
|
||||
path = subprojects/libsni
|
||||
url = https://github.com/urbit/sniproxy
|
||||
[submodule "subprojects/murmur3"]
|
||||
path = subprojects/murmur3
|
||||
url = https://github.com/urbit/murmur3.git
|
||||
[submodule "subprojects/secp256k1"]
|
||||
path = subprojects/secp256k1
|
||||
url = https://github.com/urbit/secp256k1.git
|
||||
[submodule "subprojects/softfloat3"]
|
||||
path = subprojects/softfloat3
|
||||
url = https://github.com/urbit/berkeley-softfloat-3.git
|
||||
[submodule "nix/nixcrpkgs"]
|
||||
path = nix/nixcrpkgs
|
||||
url = https://github.com/urbit/nixcrpkgs
|
||||
[submodule "pkg/urb"]
|
||||
path = pkg/urb
|
||||
url = https://github.com/urbit/urb.git
|
||||
[submodule "pkg/ent"]
|
||||
path = pkg/ent
|
||||
url = https://github.com/urbit/libent
|
||||
[submodule "pkg/arvo"]
|
||||
path = pkg/arvo
|
||||
url = https://github.com/urbit/arvo.git
|
||||
|
70
.travis.yml
70
.travis.yml
@ -1,62 +1,16 @@
|
||||
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/
|
||||
language: nix
|
||||
nix: 2.1.3
|
||||
|
||||
install:
|
||||
# pwd: ~/urbit
|
||||
- pip3 install --user -I meson
|
||||
# nix-env -iA cachix -f https://cachix.org/api/v1/install
|
||||
|
||||
before_install:
|
||||
- git lfs pull
|
||||
|
||||
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
|
||||
# cachix authtoken "$CACHIX_AUTH_TOKEN" >/dev/null
|
||||
# cachix use urbit
|
||||
- make
|
||||
- make test
|
||||
- sh/update-brass-pill # To verify that this works.
|
||||
# ./sh/cachix
|
||||
|
25
Makefile
Normal file
25
Makefile
Normal file
@ -0,0 +1,25 @@
|
||||
PKGS = minima extrema rusthello prog
|
||||
|
||||
################################################################################
|
||||
|
||||
.PHONY: build all install release test clean
|
||||
|
||||
build:
|
||||
nix-build --no-out-link
|
||||
|
||||
all: build release test
|
||||
|
||||
install:
|
||||
nix-env -f . -iA urbit -iA urbit-debug -iA urb
|
||||
|
||||
release:
|
||||
sh/release urbit linux32
|
||||
sh/release urbit linux64
|
||||
sh/release urbit darwin
|
||||
|
||||
test:
|
||||
sh/test
|
||||
|
||||
clean:
|
||||
rm -rf ./out ./work
|
||||
rm -f result result-*
|
3
bin/brass.pill
Normal file
3
bin/brass.pill
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:eb04cfc9a02f56a5d844dc3cb2959dfebf43387280563434f977b78627a23398
|
||||
size 5057757
|
3
bin/ivory.pill
Normal file
3
bin/ivory.pill
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:847a5166d8d5106a0c909c914cc96ee6bcb47afef6ebdd6c05bebcd8b01ae87a
|
||||
size 5859838
|
35
default.nix
35
default.nix
@ -1,37 +1,8 @@
|
||||
let
|
||||
|
||||
pkgs =
|
||||
builtins.fetchGit {
|
||||
name = "nixpkgs-2018-11-13";
|
||||
url = https://github.com/nixos/nixpkgs/;
|
||||
rev = "695a3d4254545968fc3015142c5299c0da5ca0a9";
|
||||
};
|
||||
pkgs = import ./nix/pkgs {};
|
||||
deps = import ./nix/deps {};
|
||||
|
||||
in
|
||||
|
||||
with (import pkgs {});
|
||||
|
||||
let
|
||||
|
||||
osxdeps = lib.optionals stdenv.isDarwin (
|
||||
with darwin.apple_sdk.frameworks;
|
||||
[ Cocoa CoreServices ]);
|
||||
|
||||
deps = [ cmark curl gcc gmp libsigsegv meson ncurses ninja pkgconfig zlib
|
||||
re2c openssl ];
|
||||
|
||||
isGitDir = (path: type: type != "directory" || baseNameOf path != ".git");
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "urbit";
|
||||
|
||||
src = builtins.filterSource isGitDir ./.;
|
||||
|
||||
buildInputs = osxdeps ++ deps;
|
||||
|
||||
mesonFlags = "-Dnix=true";
|
||||
|
||||
NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-framework CoreServices";
|
||||
}
|
||||
deps // pkgs
|
||||
|
@ -1,55 +0,0 @@
|
||||
/* j/6/slot.c
|
||||
**
|
||||
*/
|
||||
#include "all.h"
|
||||
|
||||
|
||||
/* functions
|
||||
*/
|
||||
u3_noun
|
||||
u3qf_slot(u3_atom axe,
|
||||
u3_noun vax)
|
||||
{
|
||||
u3_noun fag = u3r_at(axe, u3t(vax));
|
||||
|
||||
fprintf(stderr, "slot axe %d\r\n", axe);
|
||||
|
||||
if ( u3_none == fag ) {
|
||||
return u3m_bail(c3__exit);
|
||||
}
|
||||
else {
|
||||
u3_noun typ = u3qfu_peek(
|
||||
}
|
||||
c3_w i_w, met_w = c3_min(u3r_met(3, axe), u3r_met(3, vax));
|
||||
|
||||
if ( c3n == _slot_fiz(axe, vax) ) {
|
||||
return c3n;
|
||||
}
|
||||
for ( i_w = 0; i_w < met_w; i_w++ ) {
|
||||
c3_y axe_y = u3r_byte(i_w, axe);
|
||||
c3_y vax_y = u3r_byte(i_w, vax);
|
||||
|
||||
if ( (axe_y >= 'A') && (axe_y <= 'Z') ) axe_y = 0;
|
||||
if ( (vax_y >= 'A') && (vax_y <= 'Z') ) vax_y = 0;
|
||||
|
||||
if ( axe_y && vax_y && (axe_y != vax_y) ) {
|
||||
return c3n;
|
||||
}
|
||||
}
|
||||
return c3y;
|
||||
}
|
||||
|
||||
u3_noun
|
||||
u3we_slot(u3_noun cor)
|
||||
{
|
||||
u3_noun axe, vax;
|
||||
|
||||
if ( (c3n == u3r_mean(cor, u3x_sam_2, &axe, u3x_sam_3, &vax, 0)) ||
|
||||
(c3n == u3ud(axe)) ||
|
||||
(c3n == u3du(vax)) )
|
||||
{
|
||||
return u3m_bail(c3__fail);
|
||||
} else {
|
||||
return u3qf_slot(axe, vax);
|
||||
}
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
/* j/6/type.c
|
||||
**
|
||||
*/
|
||||
|
||||
/* new template for type switching
|
||||
*/
|
||||
{
|
||||
u3_noun p_sut, q_sut, r_sut;
|
||||
|
||||
if ( c3n == u3du(sut) ) switch ( sut ) {
|
||||
default: return u3m_bail(c3__fail);
|
||||
|
||||
case c3__noun:
|
||||
{
|
||||
}
|
||||
case c3__void:
|
||||
{
|
||||
}
|
||||
}
|
||||
else switch ( u3h(sut) ) {
|
||||
default: return u3m_bail(c3__fail);
|
||||
|
||||
case c3__atom: u3x_cell(u3t(sut), &p_sut, &q_sut);
|
||||
{
|
||||
}
|
||||
case c3__cell: u3x_cell(u3t(sut), &p_sut, &q_sut);
|
||||
{
|
||||
}
|
||||
case c3__core: u3x_cell(u3t(sut), &p_sut, &q_sut);
|
||||
{
|
||||
}
|
||||
case c3__face: u3x_cell(u3t(sut), &p_sut, &q_sut);
|
||||
{
|
||||
}
|
||||
case c3__fork: p_sut = u3t(sut);
|
||||
{
|
||||
}
|
||||
case c3__hint: u3x_cell(u3t(sut), &p_sut, &q_sut);
|
||||
{
|
||||
}
|
||||
case c3__hold: u3x_cell(u3t(sut), &p_sut, &q_sut);
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
424
meson.build
424
meson.build
@ -1,424 +0,0 @@
|
||||
project('urbit', 'c', meson_version: '>=0.29.0')
|
||||
|
||||
legacy_meson = false
|
||||
|
||||
detect_meson_version = run_command('meson', '--version')
|
||||
meson_ver = detect_meson_version.stdout()
|
||||
|
||||
if(meson_ver == '0.29.0\n')
|
||||
legacy_meson = true
|
||||
elif(not meson.version().version_compare('>=0.40.0'))
|
||||
error('Meson 0.29.0 is last legacy version supported. Otherwise please upgrade to 0.40.0 or higher.')
|
||||
endif
|
||||
|
||||
jets_a_src = [
|
||||
'jets/a/add.c',
|
||||
'jets/a/dec.c',
|
||||
'jets/a/div.c',
|
||||
'jets/a/gte.c',
|
||||
'jets/a/gth.c',
|
||||
'jets/a/lte.c',
|
||||
'jets/a/lth.c',
|
||||
'jets/a/mod.c',
|
||||
'jets/a/mul.c',
|
||||
'jets/a/sub.c',]
|
||||
|
||||
jets_b_src = [
|
||||
'jets/b/bind.c',
|
||||
'jets/b/clap.c',
|
||||
'jets/b/drop.c',
|
||||
'jets/b/flop.c',
|
||||
'jets/b/lent.c',
|
||||
'jets/b/levy.c',
|
||||
'jets/b/lien.c',
|
||||
'jets/b/murn.c',
|
||||
'jets/b/need.c',
|
||||
'jets/b/reap.c',
|
||||
'jets/b/reel.c',
|
||||
'jets/b/roll.c',
|
||||
'jets/b/skid.c',
|
||||
'jets/b/skim.c',
|
||||
'jets/b/skip.c',
|
||||
'jets/b/scag.c',
|
||||
'jets/b/slag.c',
|
||||
'jets/b/snag.c',
|
||||
'jets/b/sort.c',
|
||||
'jets/b/turn.c',
|
||||
'jets/b/weld.c' ]
|
||||
|
||||
jets_c_src = [
|
||||
'jets/c/bex.c',
|
||||
'jets/c/xeb.c',
|
||||
'jets/c/can.c',
|
||||
'jets/c/cap.c',
|
||||
'jets/c/cat.c',
|
||||
'jets/c/con.c',
|
||||
'jets/c/cut.c',
|
||||
'jets/c/dor.c',
|
||||
'jets/c/dvr.c',
|
||||
'jets/c/dis.c',
|
||||
'jets/c/end.c',
|
||||
'jets/c/gor.c',
|
||||
'jets/c/lsh.c',
|
||||
'jets/c/mas.c',
|
||||
'jets/c/met.c',
|
||||
'jets/c/mix.c',
|
||||
'jets/c/mor.c',
|
||||
'jets/c/mug.c',
|
||||
'jets/c/muk.c',
|
||||
'jets/c/peg.c',
|
||||
'jets/c/po.c',
|
||||
'jets/c/pow.c',
|
||||
'jets/c/rap.c',
|
||||
'jets/c/rep.c',
|
||||
'jets/c/rev.c',
|
||||
'jets/c/rip.c',
|
||||
'jets/c/ripn.c',
|
||||
'jets/c/rsh.c',
|
||||
'jets/c/swp.c',
|
||||
'jets/c/sqt.c'
|
||||
]
|
||||
|
||||
jets_d_src = [
|
||||
'jets/d/in_has.c',
|
||||
'jets/d/in_int.c',
|
||||
'jets/d/in_gas.c',
|
||||
'jets/d/in_mer.c',
|
||||
'jets/d/in_put.c',
|
||||
'jets/d/in_tap.c',
|
||||
'jets/d/in_uni.c',
|
||||
'jets/d/in_wyt.c',
|
||||
'jets/d/in_bif.c',
|
||||
'jets/d/in_dif.c',
|
||||
'jets/d/in_del.c',
|
||||
'jets/d/by_del.c',
|
||||
'jets/d/by_gas.c',
|
||||
'jets/d/by_get.c',
|
||||
'jets/d/by_has.c',
|
||||
'jets/d/by_int.c',
|
||||
'jets/d/by_jab.c',
|
||||
'jets/d/by_put.c',
|
||||
'jets/d/by_uni.c',
|
||||
'jets/d/by_bif.c',
|
||||
'jets/d/by_dif.c'
|
||||
]
|
||||
|
||||
jets_e_src = [
|
||||
'jets/e/aes_ecb.c',
|
||||
'jets/e/aes_cbc.c',
|
||||
'jets/e/aesc.c',
|
||||
'jets/e/argon2.c',
|
||||
'jets/e/blake.c',
|
||||
'jets/e/cue.c',
|
||||
'jets/e/fl.c',
|
||||
'jets/e/hmac.c',
|
||||
'jets/e/jam.c',
|
||||
'jets/e/mat.c',
|
||||
'jets/e/mink.c',
|
||||
'jets/e/mule.c',
|
||||
'jets/e/parse.c',
|
||||
'jets/e/rd.c',
|
||||
'jets/e/rq.c',
|
||||
'jets/e/rs.c',
|
||||
'jets/e/rh.c',
|
||||
'jets/e/rub.c',
|
||||
'jets/e/scr.c',
|
||||
'jets/e/secp.c',
|
||||
'jets/e/shax.c',
|
||||
'jets/e/sha1.c',
|
||||
'jets/e/lore.c',
|
||||
'jets/e/loss.c',
|
||||
'jets/e/lune.c',
|
||||
'jets/e/trip.c',
|
||||
'jets/e/ripe.c'
|
||||
]
|
||||
|
||||
jets_e_ed_src = [
|
||||
'jets/e/ed_puck.c',
|
||||
'jets/e/ed_sign.c',
|
||||
'jets/e/ed_veri.c',
|
||||
'jets/e/ed_shar.c'
|
||||
]
|
||||
|
||||
jets_f_src = [
|
||||
'jets/f/ap.c',
|
||||
'jets/f/cell.c',
|
||||
'jets/f/comb.c',
|
||||
'jets/f/cons.c',
|
||||
'jets/f/core.c',
|
||||
'jets/f/face.c',
|
||||
'jets/f/fitz.c',
|
||||
'jets/f/flan.c',
|
||||
'jets/f/flip.c',
|
||||
'jets/f/flor.c',
|
||||
'jets/f/fork.c',
|
||||
'jets/f/hint.c',
|
||||
'jets/f/hike.c',
|
||||
'jets/f/look.c',
|
||||
'jets/f/loot.c'
|
||||
]
|
||||
|
||||
jets_f_ut_src = [
|
||||
'jets/f/ut.c',
|
||||
'jets/f/ut_buss.c',
|
||||
'jets/f/ut_crop.c',
|
||||
'jets/f/ut_find.c',
|
||||
'jets/f/ut_fire.c',
|
||||
'jets/f/ut_fish.c',
|
||||
'jets/f/ut_fuse.c',
|
||||
'jets/f/ut_gain.c',
|
||||
'jets/f/ut_lose.c',
|
||||
'jets/f/ut_mint.c',
|
||||
'jets/f/ut_mull.c',
|
||||
'jets/f/ut_nest.c',
|
||||
'jets/f/ut_peek.c',
|
||||
'jets/f/ut_peel.c',
|
||||
'jets/f/ut_play.c',
|
||||
'jets/f/ut_repo.c',
|
||||
'jets/f/ut_rest.c',
|
||||
'jets/f/ut_tack.c',
|
||||
'jets/f/ut_toss.c',
|
||||
'jets/f/ut_wrap.c'
|
||||
]
|
||||
|
||||
jets_src = [
|
||||
'jets/tree.c'
|
||||
]
|
||||
|
||||
jets_all_src = [
|
||||
jets_a_src, jets_b_src,
|
||||
jets_c_src, jets_d_src,
|
||||
jets_e_src, jets_e_ed_src,
|
||||
jets_f_src, jets_f_ut_src,
|
||||
jets_src
|
||||
]
|
||||
|
||||
noun_src = [
|
||||
'noun/allocate.c',
|
||||
'noun/events.c',
|
||||
'noun/hashtable.c',
|
||||
'noun/imprison.c',
|
||||
'noun/jets.c',
|
||||
'noun/manage.c',
|
||||
'noun/nock.c',
|
||||
'noun/retrieve.c',
|
||||
'noun/trace.c',
|
||||
'noun/vortex.c',
|
||||
'noun/xtract.c',
|
||||
'noun/zave.c'
|
||||
]
|
||||
|
||||
vere_lib_src = [
|
||||
'vere/ames.c',
|
||||
'vere/behn.c',
|
||||
'vere/cttp.c',
|
||||
'vere/dawn.c',
|
||||
'vere/foil.c',
|
||||
#'vere/fuse.c',
|
||||
'vere/http.c',
|
||||
'vere/ivory.c',
|
||||
'vere/king.c',
|
||||
'vere/newt.c',
|
||||
'vere/pier.c',
|
||||
'vere/reck.c',
|
||||
'vere/save.c',
|
||||
'vere/term.c',
|
||||
'vere/time.c',
|
||||
'vere/unix.c',
|
||||
'vere/walk.c'
|
||||
]
|
||||
|
||||
incdir = include_directories('include/')
|
||||
|
||||
conf_data = configuration_data()
|
||||
conf_data.set('URBIT_VERSION', '"0.7.2"')
|
||||
conf_data.set('U3_MEMORY_DEBUG', get_option('gc'))
|
||||
conf_data.set('U3_CPU_DEBUG', get_option('prof'))
|
||||
conf_data.set('U3_EVENT_TIME_DEBUG', get_option('event-time'))
|
||||
conf_data.set('U3_MEMORY_LOG', get_option('memory-log'))
|
||||
|
||||
osdet = host_machine.system()
|
||||
cc = meson.get_compiler('c')
|
||||
os_c_flags = ['-funsigned-char','-ffast-math']
|
||||
os_deps = [dependency('threads')]
|
||||
os_link_flags = []
|
||||
|
||||
if osdet == 'linux'
|
||||
conf_data.set('U3_OS_linux', true)
|
||||
|
||||
ncurses_dep = dependency('ncurses')
|
||||
os_deps = os_deps + [ncurses_dep]
|
||||
|
||||
elif osdet == 'darwin'
|
||||
conf_data.set('U3_OS_osx', true)
|
||||
|
||||
# os_c_flags = os_c_flags + ['-bind_at_load']
|
||||
# os_link_flags = ['-framework CoreServices', '-framework CoreFoundation']
|
||||
if(legacy_meson)
|
||||
ncurses_dep = find_library('ncurses')
|
||||
else
|
||||
ncurses_dep = cc.find_library('ncurses')
|
||||
endif
|
||||
|
||||
os_deps = os_deps + [ncurses_dep]
|
||||
|
||||
elif osdet == 'bsd' or osdet == 'freebsd'
|
||||
conf_data.set('U3_OS_bsd', true)
|
||||
|
||||
kvm_dep = cc.find_library('kvm')
|
||||
ncurses_dep = dependency('ncurses')
|
||||
os_deps = os_deps + [kvm_dep, ncurses_dep]
|
||||
|
||||
elif osdet == 'openbsd'
|
||||
conf_data.set('U3_OS_bsd', true)
|
||||
os_link_flags = ['-L/usr/local/lib', '-lgmp', '-lsigsegv', '-lcurses']
|
||||
gmp_dep = []
|
||||
sigsegv_dep = []
|
||||
|
||||
else
|
||||
error('Unsupported OS detected:' + osdet)
|
||||
endif
|
||||
|
||||
endian = host_machine.endian()
|
||||
|
||||
if endian == 'little'
|
||||
conf_data.set('U3_OS_ENDIAN_little', true)
|
||||
else
|
||||
error('Little endian encoding required')
|
||||
endif
|
||||
|
||||
configure_file(input : 'include/config.h.in',
|
||||
output : 'config.h',
|
||||
configuration : conf_data)
|
||||
|
||||
# We expect these libs to supplied with the distribution
|
||||
curl_dep = dependency('libcurl', version: '>=7.19.0')
|
||||
|
||||
if (osdet == 'darwin' and not get_option('nix') and
|
||||
run_command('test', '-d', '/usr/local/opt/openssl/lib').returncode() == 0)
|
||||
libcrypto = cc.find_library('crypto', dirs: [ '/usr/local/opt/openssl/lib/' ])
|
||||
libssl = cc.find_library('ssl', dirs: [ '/usr/local/opt/openssl/lib/' ])
|
||||
openssl_dep = declare_dependency(dependencies: [libcrypto, libssl], include_directories: include_directories('/usr/local/opt/openssl/include'))
|
||||
else
|
||||
openssl_dep = dependency('openssl', version: '>=1.0.0')
|
||||
endif
|
||||
|
||||
if(legacy_meson)
|
||||
gmp_dep = find_library('gmp')
|
||||
sigsegv_dep = find_library('sigsegv')
|
||||
elif osdet != 'openbsd'
|
||||
# XX on OS X with MacPorts, set LIBRARY_PATH=/opt/local/lib to get meson to
|
||||
# find these.
|
||||
gmp_dep = cc.find_library('gmp')
|
||||
sigsegv_dep = cc.find_library('sigsegv')
|
||||
endif
|
||||
|
||||
# For these libs we provide fallback bundle
|
||||
#
|
||||
argon2_dep = dependency('argon2', version: '>=1', fallback: ['argon2', 'argon2_dep'])
|
||||
ed25519_dep = dependency('ed25519', version: '>=0.1.0', fallback: ['ed25519', 'ed25519_dep'])
|
||||
libscrypt_dep = dependency('libscrypt', version: '>=0.1.21', fallback: ['libscrypt', 'libscrypt_dep'])
|
||||
murmur3_dep = dependency('murmur3', version: '>=0.1.0', fallback: ['murmur3', 'murmur3_dep'])
|
||||
secp256k1_dep = dependency('libsecp256k1', version: '>=0.1.0', fallback: ['secp256k1', 'secp256k1_dep'])
|
||||
softfloat3_dep = dependency('softfloat3', version: '>=3.0.0', fallback: ['softfloat3', 'softfloat3_dep'])
|
||||
|
||||
# XX temporary, should only be needed in vere
|
||||
#
|
||||
libh2o_dep = dependency('libh2o', version: '>=0.13.3', fallback: ['libh2o', 'libh2o_dep'])
|
||||
libuv_dep = dependency('libuv', version: '>=1.8.0', fallback:['libuv', 'libuv_dep'])
|
||||
|
||||
|
||||
noun_deps = [argon2_dep,
|
||||
ed25519_dep,
|
||||
gmp_dep,
|
||||
libscrypt_dep,
|
||||
murmur3_dep,
|
||||
openssl_dep,
|
||||
secp256k1_dep,
|
||||
sigsegv_dep,
|
||||
softfloat3_dep,
|
||||
libh2o_dep,
|
||||
libuv_dep]
|
||||
|
||||
libnoun = static_library('noun',
|
||||
sources: [noun_src, jets_all_src],
|
||||
include_directories: incdir,
|
||||
c_args : os_c_flags,
|
||||
link_args: os_link_flags,
|
||||
dependencies: noun_deps + os_deps,
|
||||
install: false
|
||||
)
|
||||
|
||||
# For these two libs we provide fallback bundle
|
||||
|
||||
libent_dep = dependency(
|
||||
'libent',
|
||||
version: '>=0.2.1',
|
||||
fallback: ['libent', 'libent_dep'],
|
||||
)
|
||||
|
||||
libsni_dep = dependency(
|
||||
'libsni',
|
||||
version: '>=0.5.0',
|
||||
fallback: ['libsni', 'libsni_dep'],
|
||||
)
|
||||
|
||||
vere_deps = [
|
||||
curl_dep,
|
||||
libent_dep,
|
||||
libh2o_dep,
|
||||
libsni_dep,
|
||||
libuv_dep,
|
||||
openssl_dep,
|
||||
]
|
||||
|
||||
executable('urbit',
|
||||
sources : vere_lib_src + [ 'vere/main.c' ],
|
||||
include_directories : incdir,
|
||||
c_args : os_c_flags,
|
||||
link_args: os_link_flags,
|
||||
dependencies: vere_deps + os_deps,
|
||||
link_with: libnoun,
|
||||
install: true)
|
||||
|
||||
executable('urbit-worker',
|
||||
sources : vere_lib_src + [ 'vere/serf.c' ],
|
||||
include_directories : incdir,
|
||||
c_args : os_c_flags,
|
||||
link_args: os_link_flags,
|
||||
dependencies: vere_deps + os_deps,
|
||||
link_with: libnoun,
|
||||
install: true)
|
||||
|
||||
test_hashtable = executable('test-hashtable',
|
||||
sources : vere_lib_src + ['tests/hashtable_tests.c'],
|
||||
include_directories : incdir,
|
||||
c_args : os_c_flags,
|
||||
link_args: os_link_flags,
|
||||
dependencies: vere_deps + os_deps,
|
||||
link_with: libnoun,
|
||||
install: false)
|
||||
|
||||
test('test-hashtable', test_hashtable)
|
||||
|
||||
test_mem = executable('test-mem',
|
||||
sources : vere_lib_src + ['tests/test.c'],
|
||||
include_directories : incdir,
|
||||
c_args : os_c_flags,
|
||||
link_args: os_link_flags,
|
||||
dependencies: vere_deps + os_deps,
|
||||
link_with: libnoun,
|
||||
install: false)
|
||||
|
||||
test('test-mem', test_mem, should_fail: true)
|
||||
|
||||
test_hash = executable('test-hash',
|
||||
sources : vere_lib_src + ['tests/hash_tests.c'],
|
||||
include_directories : incdir,
|
||||
c_args : os_c_flags,
|
||||
link_args: os_link_flags,
|
||||
dependencies: vere_deps + os_deps,
|
||||
link_with: libnoun,
|
||||
install: false)
|
||||
|
||||
test('test-hash', test_hash)
|
@ -1,10 +0,0 @@
|
||||
option('gc', type : 'boolean', value : false,
|
||||
description : 'Add debugging information to heap. Run with -g. Breaks image.')
|
||||
option('prof', type : 'boolean', value : false,
|
||||
description : 'Activate profiling. Run with -P.')
|
||||
option('event-time', type : 'boolean', value : false,
|
||||
description : 'Print timing information per event.')
|
||||
option('memory-log', type : 'boolean', value : false,
|
||||
description : 'Write memory usage to a logfile.')
|
||||
option('nix', type: 'boolean', value: false,
|
||||
description: 'Build using nix.')
|
13
nix/crossdeps.nix
Normal file
13
nix/crossdeps.nix
Normal file
@ -0,0 +1,13 @@
|
||||
crossenv:
|
||||
|
||||
rec {
|
||||
argon2 = import ./deps/argon2/cross.nix { inherit crossenv; };
|
||||
murmur3 = import ./deps/murmur3/cross.nix { inherit crossenv; };
|
||||
uv = import ./deps/uv/cross.nix { inherit crossenv; };
|
||||
ed25519 = import ./deps/ed25519/cross.nix { inherit crossenv; };
|
||||
sni = import ./deps/sni/cross.nix { inherit crossenv; };
|
||||
scrypt = import ./deps/scrypt/cross.nix { inherit crossenv; };
|
||||
softfloat3 = import ./deps/softfloat3/cross.nix { inherit crossenv; };
|
||||
secp256k1 = import ./deps/secp256k1/cross.nix { inherit crossenv; };
|
||||
h2o = import ./deps/h2o/cross.nix { inherit crossenv uv; };
|
||||
}
|
19
nix/dep-repos.nix
Normal file
19
nix/dep-repos.nix
Normal file
@ -0,0 +1,19 @@
|
||||
# This is a hack to give us access to the fetching of dependency repos
|
||||
# as nix builds. We use this to cache those Cachix for faster rebuilds
|
||||
# in CI.
|
||||
|
||||
with (import ./deps {});
|
||||
|
||||
{
|
||||
argon2-src = argon2.src;
|
||||
ed25519-src = ed25519.src;
|
||||
ent-src = ent.src;
|
||||
h2o-src = h2o.src;
|
||||
murmur3-src = murmur3.src;
|
||||
nodehello-src = nodehello.src;
|
||||
scrypt-src = scrypt.src;
|
||||
secp256k1-src = secp256k1.src;
|
||||
sni-src = sni.src;
|
||||
softfloat3-src = softfloat3.src;
|
||||
uv-src = uv.src;
|
||||
}
|
31
nix/deps-env.nix
Normal file
31
nix/deps-env.nix
Normal file
@ -0,0 +1,31 @@
|
||||
let
|
||||
|
||||
pkgs = import ./nixpkgs.nix;
|
||||
tlon = import ./pkgs { pkgs=pkgs; };
|
||||
deps = import ./deps { pkgs=pkgs; };
|
||||
|
||||
tools =
|
||||
with pkgs;
|
||||
[ cargo rustc meson ninja pkgconfig libtool gdb ];
|
||||
|
||||
libs =
|
||||
with pkgs;
|
||||
[ openssl zlib curl gmp scrypt libsigsegv ncurses openssl zlib ];
|
||||
|
||||
osx =
|
||||
with pkgs;
|
||||
lib.optionals stdenv.isDarwin (
|
||||
with darwin.apple_sdk.frameworks;
|
||||
[ Cocoa CoreServices ]);
|
||||
|
||||
vendor =
|
||||
with deps;
|
||||
[ argon2 ed25519 h2o murmur3 scrypt secp256k1 sni softfloat3 uv ent ];
|
||||
|
||||
in
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "urbit-deps-env";
|
||||
env = pkgs.buildEnv { name = name; paths = buildInputs; };
|
||||
buildInputs = tools ++ libs ++ osx ++ vendor;
|
||||
}
|
14
nix/deps/argon2/builder.sh
Normal file
14
nix/deps/argon2/builder.sh
Normal file
@ -0,0 +1,14 @@
|
||||
source $stdenv/setup
|
||||
|
||||
cp -r $src ./src
|
||||
chmod -R a+w ./src
|
||||
cd ./src
|
||||
|
||||
sed -i 's|ar rcs|${AR} rcs|' Makefile
|
||||
|
||||
make libargon2.a -j4
|
||||
|
||||
mkdir -p $out/{lib,include}
|
||||
cp libargon2.a $out/lib
|
||||
cp include/argon2.h $out/include
|
||||
cp ./src/blake2/*.h $out/include
|
17
nix/deps/argon2/cross.nix
Normal file
17
nix/deps/argon2/cross.nix
Normal file
@ -0,0 +1,17 @@
|
||||
{ crossenv }:
|
||||
|
||||
crossenv.make_derivation rec {
|
||||
name = "argon2-4da94";
|
||||
builder = ./builder.sh;
|
||||
|
||||
CC = "${crossenv.host}-gcc";
|
||||
AR = "${crossenv.host}-ar";
|
||||
NO_THREADS = true;
|
||||
|
||||
src = crossenv.nixpkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "argon2";
|
||||
rev = "4da94a611ee62bad87ab2b131ffda3bcc0723d9c";
|
||||
sha256 = "0bqq1hg367l4jkb6cqhxlblpvdbwz3l586qsfakwzfd9wdvnm3yc";
|
||||
};
|
||||
}
|
13
nix/deps/argon2/default.nix
Normal file
13
nix/deps/argon2/default.nix
Normal file
@ -0,0 +1,13 @@
|
||||
{ pkgs }:
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "argon2-4da94";
|
||||
builder = ./builder.sh;
|
||||
NO_THREADS = true;
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "argon2";
|
||||
rev = "4da94a611ee62bad87ab2b131ffda3bcc0723d9c";
|
||||
sha256 = "0bqq1hg367l4jkb6cqhxlblpvdbwz3l586qsfakwzfd9wdvnm3yc";
|
||||
};
|
||||
}
|
13
nix/deps/default.nix
Normal file
13
nix/deps/default.nix
Normal file
@ -0,0 +1,13 @@
|
||||
{ pkgs ? import ../nixpkgs.nix }:
|
||||
|
||||
rec {
|
||||
argon2 = import ./argon2 { inherit pkgs; };
|
||||
murmur3 = import ./murmur3 { inherit pkgs; };
|
||||
uv = import ./uv { inherit pkgs; };
|
||||
ed25519 = import ./ed25519 { inherit pkgs; };
|
||||
sni = import ./sni { inherit pkgs; };
|
||||
scrypt = import ./scrypt { inherit pkgs; };
|
||||
softfloat3 = import ./softfloat3 { inherit pkgs; };
|
||||
secp256k1 = import ./secp256k1 { inherit pkgs; };
|
||||
h2o = import ./h2o { inherit pkgs uv; };
|
||||
}
|
29
nix/deps/ed25519/builder.sh
Normal file
29
nix/deps/ed25519/builder.sh
Normal file
@ -0,0 +1,29 @@
|
||||
source $stdenv/setup
|
||||
|
||||
sources=" \
|
||||
$src/src/add_scalar.c \
|
||||
$src/src/seed.c \
|
||||
$src/src/verify.c \
|
||||
$src/src/add_scalar.c \
|
||||
$src/src/sha512.c \
|
||||
$src/src/ge.c \
|
||||
$src/src/fe.c \
|
||||
$src/src/keypair.c \
|
||||
$src/src/sign.c \
|
||||
$src/src/sc.c \
|
||||
$src/src/key_exchange.c \
|
||||
"
|
||||
|
||||
CFLAGS="-O3 -Wall -I$src/src"
|
||||
|
||||
for fn in $sources
|
||||
do echo $CC $CFLAGS -c $fn -o $(basename $fn).o
|
||||
$CC -O3 -Wall -I$src/src -c $fn -o $(basename $fn).o
|
||||
done
|
||||
|
||||
mkdir -p $out/{lib,include}
|
||||
|
||||
$AR rcs $out/lib/libed25519.a *.o
|
||||
echo $AR rcs $out/lib/libed25519.a *.o
|
||||
|
||||
cp $src/src/*.h $out/include
|
16
nix/deps/ed25519/cross.nix
Normal file
16
nix/deps/ed25519/cross.nix
Normal file
@ -0,0 +1,16 @@
|
||||
{ crossenv }:
|
||||
|
||||
crossenv.make_derivation rec {
|
||||
name = "ed25519-76385";
|
||||
builder = ./builder.sh;
|
||||
|
||||
CC = "${crossenv.host}-gcc";
|
||||
AR = "${crossenv.host}-ar";
|
||||
|
||||
src = crossenv.nixpkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "ed25519";
|
||||
rev = "76385f2ebbbc9580a9c236952d68d11d73a6135c";
|
||||
sha256 = "0s1spif4s9lgcwcny3fl2fvpbw6acqn3s8r6qxnrmkd9icgyw4cp";
|
||||
};
|
||||
}
|
12
nix/deps/ed25519/default.nix
Normal file
12
nix/deps/ed25519/default.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{ pkgs }:
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "ed25519-76385";
|
||||
builder = ./builder.sh;
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "ed25519";
|
||||
rev = "76385f2ebbbc9580a9c236952d68d11d73a6135c";
|
||||
sha256 = "0s1spif4s9lgcwcny3fl2fvpbw6acqn3s8r6qxnrmkd9icgyw4cp";
|
||||
};
|
||||
}
|
109
nix/deps/h2o/builder.sh
Normal file
109
nix/deps/h2o/builder.sh
Normal file
@ -0,0 +1,109 @@
|
||||
source $stdenv/setup
|
||||
|
||||
sources=" \
|
||||
deps/cloexec/cloexec.c \
|
||||
deps/libgkc/gkc.c \
|
||||
deps/libyrmcds/close.c \
|
||||
deps/libyrmcds/connect.c \
|
||||
deps/libyrmcds/recv.c \
|
||||
deps/libyrmcds/send.c \
|
||||
deps/libyrmcds/send_text.c \
|
||||
deps/libyrmcds/socket.c \
|
||||
deps/libyrmcds/strerror.c \
|
||||
deps/libyrmcds/text_mode.c \
|
||||
deps/picohttpparser/picohttpparser.c \
|
||||
lib/common/cache.c \
|
||||
lib/common/file.c \
|
||||
lib/common/filecache.c \
|
||||
lib/common/hostinfo.c \
|
||||
lib/common/http1client.c \
|
||||
lib/common/memcached.c \
|
||||
lib/common/memory.c \
|
||||
lib/common/multithread.c \
|
||||
lib/common/serverutil.c \
|
||||
lib/common/socket.c \
|
||||
lib/common/socketpool.c \
|
||||
lib/common/string.c \
|
||||
lib/common/time.c \
|
||||
lib/common/timeout.c \
|
||||
lib/common/url.c \
|
||||
lib/core/config.c \
|
||||
lib/core/configurator.c \
|
||||
lib/core/context.c \
|
||||
lib/core/headers.c \
|
||||
lib/core/logconf.c \
|
||||
lib/core/proxy.c \
|
||||
lib/core/request.c \
|
||||
lib/core/token.c \
|
||||
lib/core/util.c \
|
||||
lib/handler/access_log.c \
|
||||
lib/handler/chunked.c \
|
||||
lib/handler/compress.c \
|
||||
lib/handler/compress/gzip.c \
|
||||
lib/handler/errordoc.c \
|
||||
lib/handler/expires.c \
|
||||
lib/handler/fastcgi.c \
|
||||
lib/handler/file.c \
|
||||
lib/handler/headers.c \
|
||||
lib/handler/mimemap.c \
|
||||
lib/handler/proxy.c \
|
||||
lib/handler/redirect.c \
|
||||
lib/handler/reproxy.c \
|
||||
lib/handler/throttle_resp.c \
|
||||
lib/handler/status.c \
|
||||
lib/handler/headers_util.c \
|
||||
lib/handler/status/events.c \
|
||||
lib/handler/status/requests.c \
|
||||
lib/handler/http2_debug_state.c \
|
||||
lib/handler/status/durations.c \
|
||||
lib/handler/configurator/access_log.c \
|
||||
lib/handler/configurator/compress.c \
|
||||
lib/handler/configurator/errordoc.c \
|
||||
lib/handler/configurator/expires.c \
|
||||
lib/handler/configurator/fastcgi.c \
|
||||
lib/handler/configurator/file.c \
|
||||
lib/handler/configurator/headers.c \
|
||||
lib/handler/configurator/proxy.c \
|
||||
lib/handler/configurator/redirect.c \
|
||||
lib/handler/configurator/reproxy.c \
|
||||
lib/handler/configurator/throttle_resp.c \
|
||||
lib/handler/configurator/status.c \
|
||||
lib/handler/configurator/http2_debug_state.c \
|
||||
lib/handler/configurator/headers_util.c \
|
||||
lib/http1.c \
|
||||
lib/tunnel.c \
|
||||
lib/http2/cache_digests.c \
|
||||
lib/http2/casper.c \
|
||||
lib/http2/connection.c \
|
||||
lib/http2/frame.c \
|
||||
lib/http2/hpack.c \
|
||||
lib/http2/scheduler.c \
|
||||
lib/http2/stream.c \
|
||||
lib/http2/http2_debug_state.c \
|
||||
"
|
||||
|
||||
CFLAGS=" \
|
||||
-O3 \
|
||||
-Wall -Wno-unused-value -Wno-unused-function \
|
||||
-I$src/include \
|
||||
-I$src/deps/cloexec \
|
||||
-I$src/deps/brotli/enc \
|
||||
-I$src/deps/golombset \
|
||||
-I$src/deps/libgkc \
|
||||
-I$src/deps/libyrmcds \
|
||||
-I$src/deps/klib \
|
||||
-I$src/deps/neverbleed \
|
||||
-I$src/deps/picohttpparser \
|
||||
-I$src/deps/picotest \
|
||||
-I$src/deps/yaml/include \
|
||||
-I$src/deps/yoml
|
||||
"
|
||||
|
||||
for s in $sources
|
||||
do cc $CFLAGS -c $src/$s -o $(sed 's|/|_|g; s/.c$/.o/' <<< $s)
|
||||
done
|
||||
|
||||
mkdir -p $out/{lib,include}
|
||||
ar rcs $out/lib/libh2o.a *.o
|
||||
cp -r $src/include/* $out/include
|
||||
cp $src/deps/picohttpparser/picohttpparser.h $out/include
|
17
nix/deps/h2o/cross.nix
Normal file
17
nix/deps/h2o/cross.nix
Normal file
@ -0,0 +1,17 @@
|
||||
{ crossenv, uv }:
|
||||
|
||||
crossenv.make_derivation rec {
|
||||
inherit (crossenv) openssl zlib;
|
||||
inherit uv;
|
||||
|
||||
name = "h2o-0ed9a";
|
||||
cross_inputs = [ uv crossenv.openssl crossenv.zlib ];
|
||||
builder = ./cross.sh;
|
||||
|
||||
src = crossenv.nixpkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "h2o";
|
||||
rev = "0ed9ac70757a16ec45f91b8a347850d9699c3fb1";
|
||||
sha256 = "16b5zbwdq371hhqga76dh7x4c0qr3xb5ah9r8hnm6rip460p6xpm";
|
||||
};
|
||||
}
|
26
nix/deps/h2o/cross.sh
Normal file
26
nix/deps/h2o/cross.sh
Normal file
@ -0,0 +1,26 @@
|
||||
source $stdenv/setup
|
||||
|
||||
cp -r $src src
|
||||
chmod -R u+w src
|
||||
cd src
|
||||
|
||||
cmake-cross . \
|
||||
-DZLIB_LIBRARY=$zlib/lib/libz.a \
|
||||
-DZLIB_INCLUDE_DIR=$zlib/include \
|
||||
-DCMAKE_INSTALL_PREFIX=$out \
|
||||
-DBUILD_SHARED_LIBS=off \
|
||||
-DWITH_MRUBY=off \
|
||||
-DWITH_BUNDLED_SSL=off \
|
||||
-DWITH_PICOTLS=on
|
||||
|
||||
make libh2o
|
||||
|
||||
mkdir -p $out/{lib,lib/pkgconfig,include}
|
||||
|
||||
cp ./libh2o.a $out/lib
|
||||
|
||||
cp ./libh2o.pc $out/lib/pkgconfig
|
||||
|
||||
cp -r include/* $out/include
|
||||
|
||||
cp deps/picohttpparser/picohttpparser.h $out/include
|
13
nix/deps/h2o/default.nix
Normal file
13
nix/deps/h2o/default.nix
Normal file
@ -0,0 +1,13 @@
|
||||
{ pkgs, uv }:
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "h2o-0ed9a";
|
||||
buildInputs = [ uv pkgs.openssl pkgs.zlib ];
|
||||
builder = ./builder.sh;
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "h2o";
|
||||
rev = "0ed9ac70757a16ec45f91b8a347850d9699c3fb1";
|
||||
sha256 = "16b5zbwdq371hhqga76dh7x4c0qr3xb5ah9r8hnm6rip460p6xpm";
|
||||
};
|
||||
}
|
11
nix/deps/murmur3/builder.sh
Normal file
11
nix/deps/murmur3/builder.sh
Normal file
@ -0,0 +1,11 @@
|
||||
source $stdenv/setup
|
||||
|
||||
echo $CC -fPIC -O3 -o murmur3.o -c $src/murmur3.c
|
||||
$CC -fPIC -O3 -o murmur3.o -c $src/murmur3.c
|
||||
|
||||
mkdir -p $out/{lib,include}
|
||||
|
||||
echo $AR rcs $out/lib/libmurmur3.a murmur3.o
|
||||
$AR rcs $out/lib/libmurmur3.a murmur3.o
|
||||
|
||||
cp $src/murmur3.h $out/include
|
16
nix/deps/murmur3/cross.nix
Normal file
16
nix/deps/murmur3/cross.nix
Normal file
@ -0,0 +1,16 @@
|
||||
{ crossenv }:
|
||||
|
||||
crossenv.make_derivation rec {
|
||||
name = "murmur3-71a75";
|
||||
builder = ./builder.sh;
|
||||
|
||||
CC = "${crossenv.host}-gcc";
|
||||
AR = "${crossenv.host}-ar";
|
||||
|
||||
src = crossenv.nixpkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "murmur3";
|
||||
rev = "71a75d57ca4e7ca0f7fc2fd84abd93595b0624ca";
|
||||
sha256 = "0k7jq2nb4ad9ajkr6wc4w2yy2f2hkwm3nkbj2pklqgwsg6flxzwg";
|
||||
};
|
||||
}
|
12
nix/deps/murmur3/default.nix
Normal file
12
nix/deps/murmur3/default.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{ pkgs }:
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "murmur3-71a75";
|
||||
builder = ./builder.sh;
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "murmur3";
|
||||
rev = "71a75d57ca4e7ca0f7fc2fd84abd93595b0624ca";
|
||||
sha256 = "0k7jq2nb4ad9ajkr6wc4w2yy2f2hkwm3nkbj2pklqgwsg6flxzwg";
|
||||
};
|
||||
}
|
27
nix/deps/scrypt/builder.sh
Normal file
27
nix/deps/scrypt/builder.sh
Normal file
@ -0,0 +1,27 @@
|
||||
source $stdenv/setup
|
||||
|
||||
sources=" \
|
||||
crypto_scrypt-check \
|
||||
crypto_scrypt-hash \
|
||||
crypto_scrypt-hexconvert \
|
||||
crypto_scrypt-nosse \
|
||||
crypto-mcf \
|
||||
crypto-scrypt-saltgen \
|
||||
slowequals \
|
||||
sha256 \
|
||||
b64 \
|
||||
"
|
||||
|
||||
CFLAGS="-I$src -Wall -ffast-math -O3 -D_FORTIFY_SOURCE=2 -fstack-protector"
|
||||
|
||||
for s in $sources
|
||||
do echo $CC $CFLAGS -c $src/$s.c -o $s.o
|
||||
$CC $CFLAGS -c $src/$s.c -o $s.o
|
||||
done
|
||||
|
||||
echo $AR rcs libscrypt.a *.o
|
||||
$AR rcs libscrypt.a *.o
|
||||
|
||||
mkdir -p $out/{lib,include}
|
||||
cp libscrypt.a $out/lib
|
||||
cp $src/*.h $out/include
|
16
nix/deps/scrypt/cross.nix
Normal file
16
nix/deps/scrypt/cross.nix
Normal file
@ -0,0 +1,16 @@
|
||||
{ crossenv }:
|
||||
|
||||
crossenv.make_derivation rec {
|
||||
name = "scrypt-02969";
|
||||
builder = ./builder.sh;
|
||||
|
||||
CC = "${crossenv.host}-gcc";
|
||||
AR = "${crossenv.host}-ar";
|
||||
|
||||
src = crossenv.nixpkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "libscrypt";
|
||||
rev = "029693ff1cbe4f69d3a2da87d0f4f034f92cc0c2";
|
||||
sha256 = "17pcxypzjmmrvacw45cacvibm6mlr9ip30hy30l1appsnywx679n";
|
||||
};
|
||||
}
|
12
nix/deps/scrypt/default.nix
Normal file
12
nix/deps/scrypt/default.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{ pkgs }:
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "scrypt-02969";
|
||||
builder = ./builder.sh;
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "libscrypt";
|
||||
rev = "029693ff1cbe4f69d3a2da87d0f4f034f92cc0c2";
|
||||
sha256 = "17pcxypzjmmrvacw45cacvibm6mlr9ip30hy30l1appsnywx679n";
|
||||
};
|
||||
}
|
11
nix/deps/secp256k1/builder.sh
Normal file
11
nix/deps/secp256k1/builder.sh
Normal file
@ -0,0 +1,11 @@
|
||||
source $stdenv/setup
|
||||
|
||||
cp -r $src ./src
|
||||
chmod -R u+w ./src
|
||||
cd src
|
||||
|
||||
libtoolize
|
||||
./autogen.sh
|
||||
./configure --prefix=$out --host=$host $configureFlags
|
||||
make
|
||||
make install
|
25
nix/deps/secp256k1/cross.nix
Normal file
25
nix/deps/secp256k1/cross.nix
Normal file
@ -0,0 +1,25 @@
|
||||
{ crossenv }:
|
||||
|
||||
crossenv.make_derivation rec {
|
||||
name = "secp256k1-b4e87";
|
||||
builder = ./builder.sh;
|
||||
|
||||
CFLAGS = "-fPIC";
|
||||
|
||||
configureFlags = [
|
||||
"--disable-shared"
|
||||
"--enable-module-recovery"
|
||||
];
|
||||
|
||||
cross_inputs = [ crossenv.libgmp ];
|
||||
native_inputs =
|
||||
with crossenv.nixpkgs;
|
||||
[ autoconf automake libtool m4 ];
|
||||
|
||||
src = crossenv.nixpkgs.fetchFromGitHub {
|
||||
owner = "bitcoin-core";
|
||||
repo = "secp256k1";
|
||||
rev = "e34ceb333b1c0e6f4115ecbb80c632ac1042fa49";
|
||||
sha256 = "0as78s179hcr3ysk3fw98k5wzabgnwri7vkkc17wg31lyz6ids6c";
|
||||
};
|
||||
}
|
25
nix/deps/secp256k1/default.nix
Normal file
25
nix/deps/secp256k1/default.nix
Normal file
@ -0,0 +1,25 @@
|
||||
{ pkgs }:
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "secp256k1-b4e87";
|
||||
builder = ./builder.sh;
|
||||
|
||||
CFLAGS = "-fPIC";
|
||||
|
||||
configureFlags = [
|
||||
"--disable-shared"
|
||||
"--enable-module-recovery"
|
||||
];
|
||||
|
||||
buildInputs = [ pkgs.gmp ];
|
||||
nativeBuildInputs =
|
||||
with pkgs;
|
||||
[ autoconf automake libtool m4 ];
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "bitcoin-core";
|
||||
repo = "secp256k1";
|
||||
rev = "e34ceb333b1c0e6f4115ecbb80c632ac1042fa49";
|
||||
sha256 = "0as78s179hcr3ysk3fw98k5wzabgnwri7vkkc17wg31lyz6ids6c";
|
||||
};
|
||||
}
|
13
nix/deps/sni/builder.sh
Normal file
13
nix/deps/sni/builder.sh
Normal file
@ -0,0 +1,13 @@
|
||||
source $stdenv/setup
|
||||
|
||||
CFLAGS="-O3 -Wall -ffast-math -Wno-unused-const-variable"
|
||||
|
||||
echo $CC $CFLAGS -c $src/src/tls.c -o tls.o
|
||||
$CC $CFLAGS -c $src/src/tls.c -o tls.o
|
||||
|
||||
echo $AR rcs libsni.a tls.o
|
||||
$AR rcs libsni.a tls.o
|
||||
|
||||
mkdir -p $out/{lib,include}
|
||||
cp libsni.a $out/lib/
|
||||
cp $src/src/tls.h $out/include/
|
18
nix/deps/sni/cross.nix
Normal file
18
nix/deps/sni/cross.nix
Normal file
@ -0,0 +1,18 @@
|
||||
{ crossenv }:
|
||||
|
||||
crossenv.make_derivation rec {
|
||||
name = "sni";
|
||||
builder = ./builder.sh;
|
||||
|
||||
CC = "${crossenv.host}-gcc";
|
||||
AR = "${crossenv.host}-ar";
|
||||
|
||||
src = crossenv.nixpkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "sniproxy";
|
||||
rev = "173beb88ee62bddd13874ca04ab338cdec704928";
|
||||
sha256 = "1ib6p7vhpvbg6d5a2aimppsb09kjg4px4vlw5h3ys9zf9c1if5z4";
|
||||
};
|
||||
}
|
||||
|
||||
|
12
nix/deps/sni/default.nix
Normal file
12
nix/deps/sni/default.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{ pkgs }:
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "sni";
|
||||
builder = ./builder.sh;
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "sniproxy";
|
||||
rev = "173beb88ee62bddd13874ca04ab338cdec704928";
|
||||
sha256 = "1ib6p7vhpvbg6d5a2aimppsb09kjg4px4vlw5h3ys9zf9c1if5z4";
|
||||
};
|
||||
}
|
15
nix/deps/softfloat3/builder.sh
Normal file
15
nix/deps/softfloat3/builder.sh
Normal file
@ -0,0 +1,15 @@
|
||||
source $stdenv/setup
|
||||
|
||||
cp -r $src $TMP/$name
|
||||
chmod -R u+w $TMP/$name
|
||||
cd $TMP/$name
|
||||
|
||||
cd ./build/Linux-386-SSE2-GCC
|
||||
sed -i 's|gcc|$(CC)|' Makefile
|
||||
sed -i 's/ar crs/$(AR) crs/' Makefile
|
||||
|
||||
make -j4
|
||||
|
||||
mkdir -p $out/{lib,include}
|
||||
cp $src/source/include/*.h $out/include
|
||||
cp softfloat.a $out/lib/libsoftfloat3.a
|
16
nix/deps/softfloat3/cross.nix
Normal file
16
nix/deps/softfloat3/cross.nix
Normal file
@ -0,0 +1,16 @@
|
||||
{ crossenv }:
|
||||
|
||||
crossenv.make_derivation rec {
|
||||
name = "softfloat3-ec4c7";
|
||||
builder = ./builder.sh;
|
||||
|
||||
CC = "${crossenv.host}-gcc";
|
||||
AR = "${crossenv.host}-ar";
|
||||
|
||||
src = crossenv.nixpkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "berkeley-softfloat-3";
|
||||
rev = "ec4c7e31b32e07aad80e52f65ff46ac6d6aad986";
|
||||
sha256 = "1lz4bazbf7lns1xh8aam19c814a4n4czq5xsq5rmi9sgqw910339";
|
||||
};
|
||||
}
|
12
nix/deps/softfloat3/default.nix
Normal file
12
nix/deps/softfloat3/default.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{ pkgs }:
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "softfloat3-ec4c7";
|
||||
builder = ./builder.sh;
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "berkeley-softfloat-3";
|
||||
rev = "ec4c7e31b32e07aad80e52f65ff46ac6d6aad986";
|
||||
sha256 = "1lz4bazbf7lns1xh8aam19c814a4n4czq5xsq5rmi9sgqw910339";
|
||||
};
|
||||
}
|
9
nix/deps/uv/builder.sh
Normal file
9
nix/deps/uv/builder.sh
Normal file
@ -0,0 +1,9 @@
|
||||
source $stdenv/setup
|
||||
|
||||
cp -r $src ./src
|
||||
chmod -R a+w ./src
|
||||
cd ./src
|
||||
|
||||
LIBTOOLIZE=libtoolize ./autogen.sh
|
||||
./configure --prefix=$out --host=$host $configureFlags
|
||||
make install
|
17
nix/deps/uv/cross.nix
Normal file
17
nix/deps/uv/cross.nix
Normal file
@ -0,0 +1,17 @@
|
||||
{ crossenv }:
|
||||
|
||||
crossenv.make_derivation rec {
|
||||
name = "uv-64294";
|
||||
native_inputs = with crossenv.nixpkgs; [ autoconf automake libtool m4 ];
|
||||
builder = ./builder.sh;
|
||||
|
||||
configureFlags = [ "--disable-shared" ];
|
||||
CFLAGS = "-fPIC";
|
||||
|
||||
src = crossenv.nixpkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "libuv";
|
||||
rev = "6429495dc9a80aaf1c243038b381451f12bc7dcf";
|
||||
sha256 = "07m2m4v9mds0wihzjxjwswwfj3rnk2ycr3vgwfcrvnb5xjz7rs15";
|
||||
};
|
||||
}
|
27
nix/deps/uv/default.nix
Normal file
27
nix/deps/uv/default.nix
Normal file
@ -0,0 +1,27 @@
|
||||
{ pkgs }:
|
||||
|
||||
let
|
||||
|
||||
osx =
|
||||
with pkgs;
|
||||
lib.optionals stdenv.isDarwin (
|
||||
with darwin.apple_sdk.frameworks;
|
||||
[ Cocoa CoreServices ]);
|
||||
|
||||
in
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "uv-64294";
|
||||
buildInputs = osx ++ (with pkgs; [ autoconf automake libtool m4 ]);
|
||||
builder = ./builder.sh;
|
||||
|
||||
CFLAGS = "-fPIC";
|
||||
configureFlags = [ "--disable-shared" ];
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "urbit";
|
||||
repo = "libuv";
|
||||
rev = "6429495dc9a80aaf1c243038b381451f12bc7dcf";
|
||||
sha256 = "07m2m4v9mds0wihzjxjwswwfj3rnk2ycr3vgwfcrvnb5xjz7rs15";
|
||||
};
|
||||
}
|
1
nix/nixcrpkgs
Submodule
1
nix/nixcrpkgs
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 59c86f2709001a62e1d82e3c41fd01c4f236bdd7
|
7
nix/nixcrpkgs.nix
Normal file
7
nix/nixcrpkgs.nix
Normal file
@ -0,0 +1,7 @@
|
||||
let
|
||||
|
||||
nixpkgs = import ./nixpkgs.nix;
|
||||
|
||||
in
|
||||
|
||||
import ./nixcrpkgs/top.nix { inherit nixpkgs; }
|
13
nix/nixpkgs.nix
Normal file
13
nix/nixpkgs.nix
Normal file
@ -0,0 +1,13 @@
|
||||
let
|
||||
|
||||
rev = "61c3169a0e17d789c566d5b241bfe309ce4a6275";
|
||||
hash = "0qbycg7wkb71v20rchlkafrjfpbk2fnlvvbh3ai9pyfisci5wxvq";
|
||||
pkgs = builtins.fetchTarball {
|
||||
name = "nixpkgs-2019-01-15";
|
||||
url = "https://github.com/nixos/nixpkgs/archive/${rev}.tar.gz";
|
||||
sha256 = hash;
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
import pkgs {}
|
27
nix/ops/brass/builder.sh
Executable file
27
nix/ops/brass/builder.sh
Executable file
@ -0,0 +1,27 @@
|
||||
source $stdenv/setup
|
||||
|
||||
set -ex
|
||||
|
||||
cp -r $FAKEZOD ./zod
|
||||
chmod -R u+rw ./zod
|
||||
|
||||
urbit -d ./zod
|
||||
|
||||
cleanup () {
|
||||
if [ -e ./zod/.vere.lock ]
|
||||
then kill $(< ./zod/.vere.lock) || true;
|
||||
fi
|
||||
}
|
||||
|
||||
trap cleanup EXIT
|
||||
|
||||
urb ./zod -p hood -d '+hood/autoload |'
|
||||
urb ./zod -p hood -d "+hood/mount %"
|
||||
|
||||
rm -r ./zod/home
|
||||
cp -r $ARVO ./zod/home
|
||||
|
||||
urb ./zod -p hood -d "+hood/commit %home"
|
||||
urb ./zod -P brass.pill -d '+brass'
|
||||
|
||||
mv brass.pill $out
|
10
nix/ops/brass/default.nix
Normal file
10
nix/ops/brass/default.nix
Normal file
@ -0,0 +1,10 @@
|
||||
{ pkgs, tlon, deps, urbit, fakezod, arvo }:
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "brass";
|
||||
builder = ./builder.sh;
|
||||
buildInputs = [ urbit tlon.urb pkgs.coreutils ];
|
||||
|
||||
FAKEZOD = fakezod;
|
||||
ARVO = arvo;
|
||||
}
|
46
nix/ops/default.nix
Normal file
46
nix/ops/default.nix
Normal file
@ -0,0 +1,46 @@
|
||||
{ pkgs ? import ../nixpkgs.nix }:
|
||||
|
||||
let
|
||||
|
||||
deps = import ../deps { inherit pkgs; };
|
||||
tlon = import ../pkgs { inherit pkgs; };
|
||||
arvo = tlon.arvo;
|
||||
urbit = tlon.urbit;
|
||||
|
||||
in
|
||||
|
||||
rec {
|
||||
|
||||
bootzod = import ./fakeship {
|
||||
inherit pkgs tlon deps urbit;
|
||||
brass = ../../bin/brass.pill;
|
||||
ship = "zod";
|
||||
};
|
||||
|
||||
bootbus = import ./fakeship {
|
||||
inherit pkgs tlon deps urbit;
|
||||
brass = ../../bin/brass.pill;
|
||||
ship = "bus";
|
||||
};
|
||||
|
||||
test = import ./test {
|
||||
inherit pkgs tlon deps urbit arvo;
|
||||
ship = bootzod;
|
||||
};
|
||||
|
||||
solid = import ./solid {
|
||||
inherit arvo pkgs tlon deps urbit;
|
||||
fakezod = bootzod;
|
||||
};
|
||||
|
||||
brass = import ./brass {
|
||||
inherit arvo pkgs tlon deps urbit;
|
||||
fakezod = bootzod;
|
||||
};
|
||||
|
||||
fakezod = import ./fakeship {
|
||||
inherit pkgs tlon deps urbit brass;
|
||||
ship = "zod";
|
||||
};
|
||||
|
||||
}
|
19
nix/ops/fakeship/builder.sh
Executable file
19
nix/ops/fakeship/builder.sh
Executable file
@ -0,0 +1,19 @@
|
||||
source $stdenv/setup
|
||||
|
||||
set -ex
|
||||
|
||||
urbit -d -F $SHIP -B "$PILL" $out
|
||||
|
||||
check () {
|
||||
[ 3 -eq "$(urb $out -d 3)" ]
|
||||
}
|
||||
|
||||
if check
|
||||
then
|
||||
echo "Boot success." >&2
|
||||
urb $out -p hood -d '+hood/exit' || true
|
||||
else
|
||||
echo "Boot failure." >&2
|
||||
kill $(< $out/.vere.lock) || true
|
||||
exit 1
|
||||
fi
|
9
nix/ops/fakeship/default.nix
Normal file
9
nix/ops/fakeship/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{ pkgs, tlon, deps, urbit, brass, ship ? "zod" }:
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "fake" + ship;
|
||||
builder = ./builder.sh;
|
||||
buildInputs = [ urbit tlon.urb ];
|
||||
PILL = brass;
|
||||
SHIP = ship;
|
||||
}
|
31
nix/ops/solid/builder.sh
Executable file
31
nix/ops/solid/builder.sh
Executable file
@ -0,0 +1,31 @@
|
||||
source $stdenv/setup
|
||||
|
||||
set -ex
|
||||
|
||||
cp -r $FAKEZOD ./zod
|
||||
chmod -R u+rw ./zod
|
||||
|
||||
urbit -d ./zod
|
||||
|
||||
cleanup () {
|
||||
if [ -e ./zod/.vere.lock ]
|
||||
then kill $(< ./zod/.vere.lock) || true;
|
||||
fi
|
||||
}
|
||||
|
||||
trap cleanup EXIT
|
||||
|
||||
urb ./zod -p hood -d '+hood/autoload |'
|
||||
urb ./zod -p hood -d "+hood/mount %"
|
||||
|
||||
rm -r ./zod/home
|
||||
cp -r $ARVO ./zod/home
|
||||
|
||||
# cp -r $ARVO/sys ./zod/home/
|
||||
# cp $ARVO/gen/solid.hoon ./zod/home/gen/
|
||||
# cp $ARVO/lib/pill.hoon ./zod/home/lib/
|
||||
|
||||
urb ./zod -p hood -d "+hood/commit %home"
|
||||
urb ./zod -P urbit.pill -d '+solid, =dub &'
|
||||
|
||||
mv urbit.pill $out
|
10
nix/ops/solid/default.nix
Normal file
10
nix/ops/solid/default.nix
Normal file
@ -0,0 +1,10 @@
|
||||
{ pkgs, tlon, deps, urbit, fakezod, arvo }:
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "solid";
|
||||
builder = ./builder.sh;
|
||||
buildInputs = [ urbit tlon.urb pkgs.coreutils ];
|
||||
|
||||
FAKEZOD = fakezod;
|
||||
ARVO = arvo;
|
||||
}
|
65
nix/ops/test/builder.sh
Normal file
65
nix/ops/test/builder.sh
Normal file
@ -0,0 +1,65 @@
|
||||
source $stdenv/setup
|
||||
|
||||
set -ex
|
||||
|
||||
cp -r $SHIP ./ship
|
||||
chmod -R u+rw ./ship
|
||||
|
||||
urbit -d ./ship 2> urbit-output
|
||||
|
||||
tail -f urbit-output >&2 &
|
||||
tailproc=$!
|
||||
|
||||
shutdown () {
|
||||
if [ -e ./ship/.vere.lock ]
|
||||
then kill $(< ./ship/.vere.lock) || true;
|
||||
fi
|
||||
|
||||
kill "$tailproc" || true;
|
||||
}
|
||||
|
||||
trap shutdown EXIT
|
||||
|
||||
urb ./ship -p hood -d '+hood/autoload |'
|
||||
urb ./ship -p hood -d '+hood/mount %'
|
||||
|
||||
rm -r ./ship/home
|
||||
cp -r $ARVO ./ship/home
|
||||
|
||||
urb ./ship -p hood -d '+hood/commit %home'
|
||||
|
||||
# Start the test app
|
||||
urb ./ship -p hood -d '+hood/start %test'
|
||||
|
||||
# Run the %cores tests
|
||||
urb ./ship -d '~& ~ ~& %start-test-cores ~'
|
||||
urb ./ship -p test -d ':- %cores /'
|
||||
urb ./ship -d '~& %finish-test-cores ~'
|
||||
|
||||
# Run the %renders tests
|
||||
urb ./ship -d '~& ~ ~& %start-test-renders ~'
|
||||
urb ./ship -p test -d ':- %renders /'
|
||||
urb ./ship -d '~& %finish-test-renders ~'
|
||||
|
||||
# Run the test generator
|
||||
urb ./ship -d '+test' | tee test-generator-output
|
||||
|
||||
shutdown
|
||||
|
||||
# Collect output
|
||||
|
||||
cp urbit-output test-cores-output
|
||||
cp urbit-output test-renders-output
|
||||
rm urbit-output
|
||||
|
||||
sed -i '0,/start-test-renders/d' test-renders-output
|
||||
sed -i '/finish-test-renders/,$d' test-renders-output
|
||||
|
||||
sed -i '0,/start-test-cores/d' test-cores-output
|
||||
sed -i '/finish-test-cores/,$d' test-cores-output
|
||||
|
||||
mkdir $out
|
||||
|
||||
cp test-renders-output $out/renders
|
||||
cp test-cores-output $out/cores
|
||||
cp test-generator-output $out/generator
|
10
nix/ops/test/default.nix
Normal file
10
nix/ops/test/default.nix
Normal file
@ -0,0 +1,10 @@
|
||||
{ pkgs, tlon, deps, urbit, ship, arvo }:
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "test";
|
||||
builder = ./builder.sh;
|
||||
buildInputs = [ urbit tlon.urb pkgs.coreutils ];
|
||||
|
||||
SHIP = ship;
|
||||
ARVO = arvo;
|
||||
}
|
3
nix/pkgs/arvo/builder.sh
Normal file
3
nix/pkgs/arvo/builder.sh
Normal file
@ -0,0 +1,3 @@
|
||||
source $stdenv/setup
|
||||
|
||||
cp -r $src $out
|
7
nix/pkgs/arvo/default.nix
Normal file
7
nix/pkgs/arvo/default.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{ pkgs }:
|
||||
|
||||
pkgs.stdenv.mkDerivation {
|
||||
name = "arvo";
|
||||
builder = ./builder.sh;
|
||||
src = pkgs.buildRustCrateHelpers.exclude [ ".git" ] ../../../pkg/arvo;
|
||||
}
|
29
nix/pkgs/default.nix
Normal file
29
nix/pkgs/default.nix
Normal file
@ -0,0 +1,29 @@
|
||||
{ pkgs ? import ../nixpkgs.nix }:
|
||||
|
||||
let
|
||||
|
||||
deps = import ../deps { inherit pkgs; };
|
||||
|
||||
in
|
||||
|
||||
rec {
|
||||
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;
|
||||
};
|
||||
}
|
8
nix/pkgs/ent/builder.sh
Normal file
8
nix/pkgs/ent/builder.sh
Normal file
@ -0,0 +1,8 @@
|
||||
source $stdenv/setup
|
||||
|
||||
cp -r $src ./src
|
||||
chmod -R u+w ./src
|
||||
cd ./src
|
||||
|
||||
./configure
|
||||
PREFIX=$out make install
|
10
nix/pkgs/ent/cross.nix
Normal file
10
nix/pkgs/ent/cross.nix
Normal file
@ -0,0 +1,10 @@
|
||||
{ env_name, env, deps }:
|
||||
|
||||
env.make_derivation rec {
|
||||
name = "ent-7506f";
|
||||
builder = ./builder.sh;
|
||||
src = ../../../pkg/ent;
|
||||
|
||||
CC = "${env.host}-gcc";
|
||||
AR = "${env.host}-ar";
|
||||
}
|
7
nix/pkgs/ent/default.nix
Normal file
7
nix/pkgs/ent/default.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{ pkgs }:
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
name = "ent-7506f";
|
||||
builder = ./builder.sh;
|
||||
src = ../../../pkg/ent;
|
||||
}
|
13
nix/pkgs/urbit/builder.sh
Normal file
13
nix/pkgs/urbit/builder.sh
Normal file
@ -0,0 +1,13 @@
|
||||
source $stdenv/setup
|
||||
|
||||
cp -r $src ./src
|
||||
chmod -R u+w ./src
|
||||
cd src
|
||||
|
||||
./configure
|
||||
|
||||
make urbit urbit-worker -j8
|
||||
|
||||
mkdir -p $out/bin
|
||||
cp urbit $out/bin/$exename
|
||||
cp urbit-worker $out/bin/$exename-worker
|
44
nix/pkgs/urbit/default.nix
Normal file
44
nix/pkgs/urbit/default.nix
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
pkgs,
|
||||
name ? "urbit",
|
||||
debug ? false,
|
||||
argon2, ed25519, ent, h2o, murmur3, scrypt, secp256k1, sni, softfloat3, uv
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
deps =
|
||||
with pkgs;
|
||||
[ curl gmp libsigsegv ncurses openssl zlib ];
|
||||
|
||||
vendor =
|
||||
[ 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
|
||||
|
||||
pkgs.stdenv.mkDerivation {
|
||||
name = name;
|
||||
exename = name;
|
||||
src = ../../../pkg/urbit;
|
||||
builder = ./builder.sh;
|
||||
|
||||
nativeBuildInputs = deps ++ vendor;
|
||||
|
||||
# See https://github.com/NixOS/nixpkgs/issues/18995
|
||||
hardeningDisable = if debug then [ "all" ] else [];
|
||||
|
||||
CFLAGS = if debug then "-O0 -g" else "-O3";
|
||||
MEMORY_DEBUG = debug;
|
||||
CPU_DEBUG = debug;
|
||||
EVENT_TIME_DEBUG = false;
|
||||
}
|
29
nix/pkgs/urbit/release.nix
Normal file
29
nix/pkgs/urbit/release.nix
Normal file
@ -0,0 +1,29 @@
|
||||
{ env_name, env, deps }:
|
||||
|
||||
{ ent, name ? "urbit", debug ? false }:
|
||||
|
||||
let
|
||||
|
||||
crossdeps =
|
||||
with env;
|
||||
[ curl libgmp libsigsegv ncurses openssl zlib ];
|
||||
|
||||
vendor =
|
||||
with deps;
|
||||
[ argon2 softfloat3 ed25519 h2o scrypt uv murmur3 secp256k1 sni ];
|
||||
|
||||
in
|
||||
|
||||
env.make_derivation {
|
||||
CFLAGS = if debug then "-O0 -g" else "-O3";
|
||||
LDFLAGS = if debug then "" else "-s";
|
||||
MEMORY_DEBUG = debug;
|
||||
CPU_DEBUG = debug;
|
||||
EVENT_TIME_DEBUG = false;
|
||||
|
||||
name = "${name}-${env_name}";
|
||||
exename = name;
|
||||
src = ../../../pkg/urbit;
|
||||
cross_inputs = crossdeps ++ vendor ++ [ ent ];
|
||||
builder = ./release.sh;
|
||||
}
|
21
nix/pkgs/urbit/release.sh
Normal file
21
nix/pkgs/urbit/release.sh
Normal file
@ -0,0 +1,21 @@
|
||||
source $setup
|
||||
|
||||
cp -r $src ./src
|
||||
chmod -R u+w ./src
|
||||
cd src
|
||||
|
||||
for dep in $cross_inputs; do
|
||||
export CFLAGS="${CFLAGS-} -I$dep/include"
|
||||
export LDFLAGS="${LDFLAGS-} -L$dep/lib"
|
||||
done
|
||||
|
||||
CC=$host-gcc \
|
||||
PKG_CONFIG=pkg-config-cross \
|
||||
HOST=$host \
|
||||
./configure
|
||||
|
||||
make urbit urbit-worker -j8
|
||||
|
||||
mkdir -p $out/bin
|
||||
cp urbit $out/bin/$exename
|
||||
cp urbit-worker $out/bin/$exename-worker
|
14
nix/pkgs/urbit/shell.nix
Normal file
14
nix/pkgs/urbit/shell.nix
Normal file
@ -0,0 +1,14 @@
|
||||
let
|
||||
|
||||
pkgs = import ../../nixpkgs.nix;
|
||||
deps = import ../../deps { inherit pkgs; };
|
||||
tlon = import ../../pkgs { inherit pkgs; };
|
||||
|
||||
in
|
||||
|
||||
import ./default.nix {
|
||||
inherit pkgs;
|
||||
inherit (tlon) ent;
|
||||
inherit (deps)
|
||||
argon2 ed25519 h2o murmur3 scrypt secp256k1 sni softfloat3 uv;
|
||||
}
|
51
nix/release.nix
Normal file
51
nix/release.nix
Normal file
@ -0,0 +1,51 @@
|
||||
let
|
||||
|
||||
nixpkgs = import ./nixpkgs.nix;
|
||||
nixcrpkgs = import ./nixcrpkgs.nix;
|
||||
crossdeps = import ./crossdeps.nix;
|
||||
|
||||
release =
|
||||
env_name: env: {
|
||||
inherit env env_name;
|
||||
deps = crossdeps env;
|
||||
};
|
||||
|
||||
linux32 = release "linux32" nixcrpkgs.linux32;
|
||||
linux64 = release "linux64" nixcrpkgs.linux64;
|
||||
darwin = release "darwin" nixcrpkgs.mac;
|
||||
|
||||
ent = env:
|
||||
import ./pkgs/ent/cross.nix env;
|
||||
|
||||
urbit = env:
|
||||
import ./pkgs/urbit/release.nix env
|
||||
{ ent = ent env; debug = false; name = "urbit"; };
|
||||
|
||||
urbit-debug = env:
|
||||
import ./pkgs/urbit/release.nix env
|
||||
{ ent = ent env; debug = true; name = "urbit-debug"; };
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
linux32-env = linux32.env;
|
||||
linux32 = linux32.deps // {
|
||||
ent = ent linux32;
|
||||
urbit = urbit linux32;
|
||||
urbit-debug = urbit-debug linux32;
|
||||
};
|
||||
|
||||
linux64-env = linux64.env;
|
||||
linux64 = linux64.deps // {
|
||||
ent = ent linux64;
|
||||
urbit = urbit linux64;
|
||||
urbit-debug = urbit-debug linux64;
|
||||
};
|
||||
|
||||
darwin-env = darwin.env;
|
||||
darwin = darwin.deps // {
|
||||
ent = ent darwin;
|
||||
urbit = urbit darwin;
|
||||
urbit-debug = urbit-debug darwin;
|
||||
};
|
||||
}
|
1
pkg/arvo
Submodule
1
pkg/arvo
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 7542084ee74c18f1d477c7b3b359582a95810864
|
1
pkg/ent
Submodule
1
pkg/ent
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 31ac2913f14c6f7631f5792ad942605fb2d9fb87
|
1
pkg/urb
Submodule
1
pkg/urb
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 29a2e6a79e59f93e6399225efec6e09bc17f2767
|
25
pkg/urbit/.gitignore
vendored
Normal file
25
pkg/urbit/.gitignore
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
#
|
||||
# Configuration Result
|
||||
#
|
||||
/config.mk
|
||||
include/config.h
|
||||
#
|
||||
# Build Outputs
|
||||
#
|
||||
*.o
|
||||
/urbit
|
||||
/urbit-worker
|
||||
/tags
|
||||
#
|
||||
# Editor Bullshit
|
||||
#
|
||||
.tags
|
||||
TAGS
|
||||
cscope.*
|
||||
.DS_Store
|
||||
/.etags
|
||||
GPATH
|
||||
GRTAGS
|
||||
GTAGS
|
||||
*.swo
|
||||
*.swp
|
62
pkg/urbit/.travis.yml
Normal file
62
pkg/urbit/.travis.yml
Normal file
@ -0,0 +1,62 @@
|
||||
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
|
48
pkg/urbit/Makefile
Normal file
48
pkg/urbit/Makefile
Normal file
@ -0,0 +1,48 @@
|
||||
include config.mk
|
||||
|
||||
jets = jets/tree.c $(wildcard jets/*/*.c)
|
||||
noun = $(wildcard noun/*.c)
|
||||
vere = $(wildcard vere/*.c)
|
||||
king = $(wildcard king/*.c)
|
||||
serf = $(wildcard serf/*.c)
|
||||
|
||||
common = $(jets) $(noun) $(vere)
|
||||
headers = $(shell find include -type f)
|
||||
|
||||
common_objs = $(shell echo $(common) | sed 's/\.c/.o/g')
|
||||
king_objs = $(shell echo $(king) | sed 's/\.c/.o/g')
|
||||
serf_objs = $(shell echo $(serf) | sed 's/\.c/.o/g')
|
||||
|
||||
all_objs = $(common_objs) $(king_objs) $(serf_objs)
|
||||
all_srcs = $(common) $(king) $(serf)
|
||||
|
||||
################################################################################
|
||||
|
||||
.PHONY: all clean mkproper
|
||||
|
||||
################################################################################
|
||||
|
||||
all: urbit urbit-worker
|
||||
|
||||
clean:
|
||||
rm -f $(all_objs) ./urbit ./urbit-worker ./tags
|
||||
|
||||
mrproper: clean
|
||||
rm -f config.mk include/config.h
|
||||
|
||||
################################################################################
|
||||
|
||||
urbit: $(common_objs) $(king_objs)
|
||||
@echo CC -o $@
|
||||
@$(CC) $^ $(LDFLAGS) -o $@
|
||||
|
||||
urbit-worker: $(common_objs) $(serf_objs)
|
||||
@echo CC -o $@
|
||||
@$(CC) $^ $(LDFLAGS) -o $@
|
||||
|
||||
%.o: %.c $(headers)
|
||||
@echo CC $<
|
||||
@$(CC) -I./include $(CFLAGS) -c $< -o $@
|
||||
|
||||
tags: $(all_srcs) $(headers)
|
||||
ctags $^
|
89
pkg/urbit/configure
vendored
Executable file
89
pkg/urbit/configure
vendored
Executable file
@ -0,0 +1,89 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
URBIT_VERSION=0.7.0
|
||||
|
||||
deps=" \
|
||||
curl gmp sigsegv argon2 ed25519 ent h2o scrypt sni uv murmur3 secp256k1 \
|
||||
softfloat3 ncurses ssl crypto z \
|
||||
"
|
||||
|
||||
echo '#pragma once' >include/config.h
|
||||
|
||||
defmacro () {
|
||||
echo "#define $1 $2" >>include/config.h
|
||||
}
|
||||
|
||||
defmacro URBIT_VERSION '"0.7.0"'
|
||||
|
||||
[ -n "$MEMORY_DEBUG" ] && defmacro U3_MEMORY_DEBUG 1
|
||||
[ -n "$CPU_DEBUG" ] && defmacro U3_CPU_DEBUG 1
|
||||
[ -n "$EVENT_TIME_DEBUG" ] && defmacro U3_EVENT_TIME_DEBUG 1
|
||||
|
||||
if [ -n "${HOST-}" ]
|
||||
then os=$(sed 's$^[^-]*-\([^-]*\)-.*$\1$' <<< "$HOST")
|
||||
cpu=$(sed 's$-.*$$' <<< ${HOST})
|
||||
else os=$(uname -s)
|
||||
cpu=$(uname -p)
|
||||
fi
|
||||
|
||||
case $(tr A-Z a-z <<< $cpu) in
|
||||
unknown)
|
||||
defmacro U3_OS_ENDIAN_little 1
|
||||
;;
|
||||
i386)
|
||||
defmacro U3_OS_ENDIAN_little 1
|
||||
;;
|
||||
i686)
|
||||
defmacro U3_OS_ENDIAN_little 1
|
||||
;;
|
||||
x86_64)
|
||||
defmacro U3_OS_ENDIAN_little 1
|
||||
;;
|
||||
*)
|
||||
echo "Unknown or unsupported CPU: '$cpu'" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# TODO Determine if the target cpu is little or big endian.
|
||||
case $(tr A-Z a-z <<< $os) in
|
||||
*linux*)
|
||||
defmacro U3_OS_linux 1
|
||||
;;
|
||||
*darwin*)
|
||||
defmacro U3_OS_osx 1
|
||||
;;
|
||||
*apple*)
|
||||
defmacro U3_OS_osx 1
|
||||
;;
|
||||
*freebsd*)
|
||||
defmacro U3_OS_bsd 1
|
||||
osdeps="kvm"
|
||||
;;
|
||||
*openbsd*)
|
||||
defmacro U3_OS_bsd 1
|
||||
;;
|
||||
*)
|
||||
echo "Unknown or unsupported OS: '$os'" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
for dep in ${osdeps-} $deps
|
||||
do LDFLAGS="${LDFLAGS-} -l$dep"
|
||||
${PKG_CONFIG-pkg-config} --cflags --libs $dep 2>/dev/null || true
|
||||
done
|
||||
|
||||
cat >config.mk <<EOF
|
||||
CFLAGS := ${CFLAGS-} -funsigned-char -ffast-math
|
||||
LDFLAGS := $LDFLAGS
|
||||
CC := ${CC-cc}
|
||||
EOF
|
||||
|
||||
echo == config.mk == >&2
|
||||
cat config.mk >&2
|
||||
|
||||
echo == include/config.h == >&2
|
||||
cat include/config.h >&2
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user