Commit Graph

42 Commits

Author SHA1 Message Date
Philip Monk
2713083386
libsigsegv: disable stack vma check
This patches libsigsegv to not check the stack vma on Linux, since that
involves reading procfs, and we make very heavy use of sigsegv.  This
eliminates most of urbit's performance discrepancy between Linux and
MacOS.  These are the benchmarks used; note this is a local MBP vs a
cloud Linux server, and the MBP is almost certainly faster hardware.

We take two benchmarks, one of which decrements 10 million times and the
other simply allocates 125MB of memory.  These are the results:

cpu-heavy ==  =/ n 10.000.000 |-(?~(n n $(n (dec n))))
mem-heavy == =a (bex 1.000.000.008)

macos, cpu-heavy: 6 seconds
macos, mem-heavy: 1 second

linux-before, cpu-heavy: 30 seconds
linux-before, mem-heavy: 160 seconds

linux-after, cpu-heavy 9 seconds
linux-after, mem-heavy 1.3 seconds

This represents a 3x speedup for the cpu-heavy operation and a 120x
speedup for the memory-heavy operation.

This check was used to try to distinguish stack overflow from other
forms of segmentation fault.  In the comments in src/handler-unix.c, it
describes three heuristics it uses, depending on what's available from
the OS.  In the linux-i386 case, all three are availble, so we simply
disable the slow one.  This correctly recognizes stack overflow if you
simply alloca(10000000000).
2020-06-26 11:15:01 -07:00
Elliot Glaysher
cc3a139440 aes_siv: vendors libaes_siv since it isn't in nix.
This vendors libaes_siv so that we can use it to jet
+sivc:aes:crypto.
2020-05-20 13:51:59 -07:00
Jared Tobin
c078c16eba
build: remove urbit-large-log-limit derivation
Made unnecessary by 578593d45.
2020-03-01 23:04:22 +04:00
Jared Tobin
ce3c1a0e21
build: better vere label patch
Moves the secondary URBIT_VERSION assignment to a different hunk to
avoid undesirable patching conflicts.
2020-02-24 15:15:56 +04:00
Jared Tobin
05a0a9092a
build: add configurePhase for urbit derivation
46a438f introduced use of the stdenv generic builder instead of an
explicit builder.sh script.  This was reverted in 1daaf041a as it proved
to cause problems when building on some Linux variants.

This fixes the problem encountered on Linux by calling the standard
configure script with bash in an explicit configurePhase.
2020-02-24 14:40:10 +04:00
Jared Tobin
f66d750e1c
build: label large-log-limit vere version
Ensures that large log limit Vere builds are labelled as such, and are
thus easily identifiable.
2020-02-24 14:40:10 +04:00
Jared Tobin
813261dc31
Revert "Revert "Merge branch 'jt/urbit-large-log' (#2211)""
This reverts a revert, commit 1daaf041a7,
in order to fix the problems that led to it being reverted.
2020-02-24 14:37:41 +04:00
Jared Tobin
1daaf041a7
Revert "Merge branch 'jt/urbit-large-log' (#2211)"
This reverts commit 0fc9056074, reversing
changes made to 1e3a1434e0.

The changes made here evidently broke builds on some Linux variants.
2020-01-31 15:26:15 +04:00
Jared Tobin
a6e15c9418
build: add urbit-large-log derivation
Adds a derivation that uses a patched pkg/urbit/vere/lmdb.c that employs
a sixty gigabyte log limit, instead of the default forty.  This is
useful for ships e.g. ~zod that receive a lot of traffic on mainnet.
2020-01-30 13:57:03 +04:00
Jared Tobin
46a438f26e
build: use generic builder in urbit derivation
'installPhase' captures all the important stuff that builder.sh
previously did, and use of the generic builder allows stages of the
build to be more easily overridden.
2020-01-30 11:20:40 +04:00
Joe Bryan
68a94f420f nix: actually enables debug symbols in release builds 2019-12-05 17:17:33 -08:00
Joe Bryan
80628e0cac nix: enables debug symbols in release builds 2019-12-04 22:59:53 -08:00
Jared Tobin
25fbb5c54a
arvo-ropsten: revert ALEF to AMES [ci skip]
f035955a renamed %alef to %ames, so the Ropsten Arvo derivation should
be updated accordingly.
2019-12-02 16:04:06 +08:00
Philip Monk
a5412f01de
Merge branch 'alef-testnet-merge' into philip/mall-real 2019-11-19 13:03:07 -08:00
Jared Tobin
c9c2e33f63 zuse, build: remove default testnet config
Returns the target %zuse contract configuration to mainnet, and also
tweaks the 'arvo-ropsten' build to use %alef instead of %ames.

Also fixes a merge conflict artifact in nix/ops/default.nix.
2019-11-15 19:26:43 +09:00
Jared Tobin
999bc1704e
build: give arvo a high priority
0bdced981e introduced the 'arvo-ropsten' derivation.  Attempting to
install both 'arvo' and 'arvo-ropsten' via nix-env will result in a
priority error; this assigns a higher priority to 'arvo' to resolve the
conflict.

Fixes #1912.
2019-11-05 07:10:04 +08:00
Jared Tobin
0bdced981e
build: add Ropsten derivations for arvo and pills
Arvo testnets typically use Ropsten's deploy of the Azimuth contract
instead of mainnet's.  This commit adds an 'arvo-ropsten' derivation for
Arvo as specialised to Ropsten.

In addition to using a different Azimuth address in %zuse, this also
configures %ames and :acme appropriately for running an alternate
network on Ropsten.  %ames has its protocol version incremented, and
:acme uses the Let's Encrypt staging API.

Included here are derivations for creating brass and ivory pills using
arvo-ropsten, to boot.
2019-10-24 10:03:52 +08:00
Brendan Hay
4813d9829b
build: simplify image build interface
This removes the baked in codedump inspection and wrapper scripts
in favour of downstream tooling overriding this as necessary by
using FROM <image> in their respective dockerfile.
2019-10-22 10:18:37 +08:00
Joe Bryan
10645a8d23 build: always include debug symbols 2019-10-17 18:20:23 -07:00
Brendan Hay
578adc9363
build: move ops debug conditional usage to drv metadata
Rather than conditional reconstructing the "urbit/bin/urbit-debug -g"
string everytime using the debug conditional, this information has been
added to the derivation's .meta attribute.
2019-10-14 10:25:34 +02:00
Brendan Hay
9fee1ffb12
Adding conditional gdb/coredump logging for debug images 2019-10-04 22:31:25 +02:00
Brendan Hay
a312651e58
Adding nix expressions to build/bake docker images 2019-10-03 20:21:41 +02:00
Joe Bryan
47d7d48928 moves ca-bundle header generation into a separate nix derivation 2019-08-02 13:57:34 -07:00
Joe Bryan
e9def4d3d8 moves ivory header generation into a separate nix derivation 2019-08-02 13:55:15 -07:00
Joe Bryan
0d3df28fdb automatically generates header for embedded ivory.pill 2019-07-23 12:25:26 -07:00
Elliot Glaysher
8e2ddd6e42 Move urbit output binary to a build directory. 2019-07-11 15:44:17 -07:00
Elliot Glaysher
1dd274fec3 Embed the nix SSL certificate file into the resulting binary.
This writes the SSL certs to a temporary file on startup and then
uses environment variables to control OpenSSL and curl so that
they use them. We have to do this because OSX no longer ships the
normal ca pems, and we statically link with these libraries.
2019-07-11 14:43:18 -07:00
Joe Bryan
a67a9a75a6 adds ge-additions package to urbit nix-shell config 2019-06-28 11:37:18 -07:00
Elliot Glaysher
f1622fd3c2 Minus the stdenv? 2019-06-24 15:53:33 -07:00
Elliot Glaysher
c6bee9593c Maybe we have to manually add CFLAGS like release.sh in urbit? 2019-06-24 15:45:35 -07:00
Elliot Glaysher
abdb1e234b Ben says this might work. 2019-06-24 15:06:49 -07:00
Elliot Glaysher
4eefedabad Actually add the cross.nix file. 2019-06-24 14:55:02 -07:00
Elliot Glaysher
44ddebdb4f Attempt at getting cross-compilation working. 2019-06-24 14:41:54 -07:00
Elliot Glaysher
496e62e01d Merge branch 'cc-release' into rings
This translates the meson build to nix. Previously, we had our ge-additions
package just manually compiled in instead of having its own file.
2019-06-24 13:47:53 -07:00
benjamin-tlon
ade1e59ce1
Get cross-compilation ready for release. (#1263)
* Add cross-compilation for `lmdb`.
* Got built caching working in CI with `cachix`.
* Cache cross compilation dependencies and toolchains.
* Do release builds in CI.
* Upload release builds to `bootstrap.urbit.org` on successful build.
* Lots of optimization work for CI.
* Boot from a solid pill in CI and load arvo with `-A`.
* Increase `vere` HTTP timeout to 15m.
2019-05-02 13:13:48 -07:00
benjamin-tlon
1c4732ca22
Run urbit tests on the debug build, with GC enabled. (#1252)
* Run tests with `urbit-debug` and enable GC while running tests.
* Build `urbit-debug` with `-O0`.
2019-04-25 16:45:39 -07:00
Elliot Glaysher
0a0d7e0e57
Merge pull request #1248 from urbit/cc-lmdb-log-storage
Use lmdb for log storage instead of hand-rolled structure
2019-04-25 12:50:49 -07:00
benjamin-tlon
3c3f7e761e
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.
2019-04-24 17:27:27 -07:00
benjamin-tlon
edd57d380d
Finish cc-release cross-compilation. (#1202)
- Fixes the IPC bug
- Fixes the terminfo bug
- Moves the OSX SDK out of our nixcrpkgs fork.
- Vendor nixcrpkgs instead of having it be a submodule.
2019-04-23 19:50:38 -07:00
Elliot Glaysher
2bef1a30da First minor integration with lmdb.
This stores the ship's identity information in a separate META table in
the lmdb datastore.
2019-04-18 14:01:44 -07:00
benjamin-tlon
4024cdb739
Fixed Nix build errors on Bernardo's Ubuntu. (#1220) 2019-03-06 11:57:31 -08:00
benjamin-tlon
c86879e833
Nix Build + Monorepo Structure (#1196) 2019-03-04 16:43:53 -08:00