Commit Graph

62 Commits

Author SHA1 Message Date
Edward Amsden
8d8dc826cb
docker-image: Pass -t flag to vere if not in an interactive container
Vere will not run a ship if STDIN is closed, unless passed the `-t`
flag. Hosted docker containers will not be interactive, but we would
like the docker image to be usable locally and interactively as well.

Thus, we check for STDIN being closed in the shell prior to launching
Vere, and if it is closed, pass the `-t` flag.
2021-01-16 19:44:04 -05:00
Edward Amsden
d3c5aa74c1
build: A 'smart' docker image
This commit adds the `docker-image` attribute to the main Nix
entrypoint, invoking `nix/pkgs/docker-image` which will build
a 'smart' docker image that can load keyfiles or a pier and
boot a ship

It includes a README for the official docker image, suitable
for posting as the README to a Docker Hub or similar docker
image repository.
2021-01-13 07:37:28 -05:00
Joe Bryan
3e4d495500 nix: remove lib/base64 from solid pill staging 2020-12-08 16:22:58 -08:00
Joe Bryan
548440a85d nix: trims trailing whitespace from solid pill builder 2020-11-20 15:23:56 -08:00
Joe Bryan
b1e3b0def2 hoon: moves $xray into userspace 2020-11-20 15:23:56 -08:00
Joe Bryan
aea0f571d7 hoon: moves $plum and +plume to userspace 2020-11-20 15:23:56 -08:00
Brendan Hay
983261a3d8
build: move darwin install_name_tool fixup from vere to king haskell
As well as some variable naming consistency to appease the nixpkgs
gremlins and keep the git history lords on their toes.
2020-11-06 09:47:11 +01:00
Brendan Hay
767a6f85a4 build: remove {sha256,md5} output for push-storage-object effects 2020-11-05 11:39:05 -08:00
Brendan Hay
644acd5002
build: ensure urbit tests are run with the -g argument 2020-11-05 10:25:31 +01:00
Brendan Hay
dd782e062e
vere: ensure debug symbols aren't stripped by default (by nix) 2020-11-05 10:25:30 +01:00
Brendan Hay
8d0a65bb6e
vere: remove dependency on nix-store path for static darwin binary
Poached from @eglaysher's work in #3380.
2020-11-04 20:50:45 +01:00
Brendan Hay
9e1f75da64
build: simplify build tool selection for shell.nix 2020-11-04 15:34:03 +01:00
Brendan Hay
6599a85b99
king: ensure tests are enabled on ci and don't depend on lfs pills 2020-10-29 16:20:41 +01:00
Brendan Hay
fada33dfe6
build: remove checkMaterialization flag 2020-10-28 18:19:53 +01:00
Brendan Hay
689c0eb6a0
build: ensuring release tarball contains singular parent directory
This ensures parity with the current release tarballs.
2020-10-28 11:05:58 +01:00
Brendan Hay
ce3cbf0857
build: rework all nix expressions to support hercules-ci builds
This also removes nixcrpkgs and OSX cross compilation in favour of
compiling on the target. x86_64/musl targets are still supported
on Linux.

All sources are now managed via niv (see nix/sources.json) and Haskell
package sets are provided/organised via IOHK's haskell.nix.

Some effort has been made to expose similar top-level attributes for
development, but in some cases there have been changes. Please see
the comments in the top-level default.nix and ci.nix files for usage.
2020-10-27 13:55:49 +01:00
botter-nidnul
790e2dd5ec libsigsegv: disable stack vma check on arm
Adds the equivalent arm patches to the i386 patches added in #3054

These result in a dramatic speedup in running  `=a (bex 1.000.000.000)` just as they do on x86_x64

This also sneaks in a hack to `/nix/nixcrpkgs/pkgs/libsigsegv/builder.sh` that allows libsigsegv to configure itself properly when cross compiling release binaries from x86_64 to aarch64.

It won’t trigger for you, since you’re not doing that (yet) but it will make it a little easier for me to maintain my aarch64 static release binaries if that `if [ $host = aarch64-linux-musleabi ]` section is upstreamed.
2020-07-27 23:33:14 -05:00
Joe Bryan
6fa194d527 Merge branch 'master' into jb/ipc-redux
* master: (147 commits)
  vere: bump version to 0.10.7
  libsigsegv: disable stack vma check
  vere: bump version to 0.10.6
  ci: add travis as trusted user
  jets: use appropriate macro
  noun: add -C to control memo cache size
  jets: restore fond/play/peek hooks
  jam: add commented-out functionality to count size of atom
  jets: cap memo cache and remove peek, play, and fond jets
  noun: add functions to count size of noun
  release: urbit-os-v1.0.23
  interface/config: fix production build
  soto: run +on-load migration once
  publish, links: restore full height
  sh/build-interface: amend for SPA
  interface/CONTRIBUTING: amend for SPA / webpack
  solid: update pill
  hood + apps: fix OTA process for feat/SPA
  hood: add version %6 for %file-server upgrade
  chat: equally size both code + s3 buttons
  ...
2020-06-26 13:33:00 -07:00
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
Joe Bryan
dcdd1e4be9 vere: removes now-unused sniproxy dependency 2020-06-23 16:04:40 -07:00
Joe Bryan
8fac63661f vere: removes ncurses dependency 2020-06-11 20:25:46 -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