From 9da4feb106126940264dd27925ea3c19b04aac20 Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Wed, 30 Dec 2020 12:24:47 -0500 Subject: bild: build everyting Now bild knows how to determine between modules that require ghcjs and ghc. It also knows what *not* to build, meaning it won't try to build non-buildable nix targets, for example (unfortunately this is just hardcoded for now), but it also won't build scm or py targets that I haven't implemented yet. It just silently fails, which is fine, because it means I can do `bild **/*` and everything just works. Of course, if I want to build scm code then I will have to implement that, but that's not a priority right now. --- Biz/Bild/Deps/Haskell.nix | 1 + Biz/Bild/Rules.nix | 26 +++++++++--------- Biz/Bild/ShellHook.sh | 67 +++++++++-------------------------------------- 3 files changed, 27 insertions(+), 67 deletions(-) (limited to 'Biz/Bild') diff --git a/Biz/Bild/Deps/Haskell.nix b/Biz/Bild/Deps/Haskell.nix index 001cdb2..dc33483 100644 --- a/Biz/Bild/Deps/Haskell.nix +++ b/Biz/Bild/Deps/Haskell.nix @@ -3,6 +3,7 @@ with hpkgs; [ MonadRandom QuickCheck + SafeSemaphore acid-state aeson async diff --git a/Biz/Bild/Rules.nix b/Biz/Bild/Rules.nix index 9a7ad77..be9fa31 100644 --- a/Biz/Bild/Rules.nix +++ b/Biz/Bild/Rules.nix @@ -77,7 +77,7 @@ in rec { ghcjs = main: let data = analyze main; - ghcjs = mkGhcjsPackageSet (hp: selectAttrs data.dep hp); + ghcjs = mkGhcjsPackageSet (hp: selectAttrs data.deps hp); in stdenv.mkDerivation { name = data.module; src = ../../.; @@ -105,18 +105,18 @@ in rec { # haskell deps (mkGhcPackageSet haskellDeps) # ghcjs doesn't need everything, and many things fail to build - (mkGhcjsPackageSet [ - "aeson" - "clay" - "containers" - "miso" - "protolude" - "servant" - "split" - "string-quote" - "text" - "ghcjs-base" - ]) + (mkGhcjsPackageSet (hp: with hp; [ + aeson + clay + containers + miso + protolude + servant + split + string-quote + text + ghcjs-base + ])) # scheme deps nixpkgs.guile diff --git a/Biz/Bild/ShellHook.sh b/Biz/Bild/ShellHook.sh index e83973e..e307e04 100644 --- a/Biz/Bild/ShellHook.sh +++ b/Biz/Bild/ShellHook.sh @@ -7,7 +7,6 @@ function help() { echo " deps manage dependencies with niv" echo " ghci start ghci with correct options" echo " help show this message" - echo " hero compile and start a dev server for herocomics.app" echo " lint auto-lint all changed files" echo " pie product improvement engine" echo " push send a namespace to the cloud" @@ -34,28 +33,6 @@ function deps() { alias ghci="ghci -i$BIZ_ROOT -ghci-script $BIZ_ROOT/.ghci" -function hero() { - export HERO_PORT=3000 - export HERO_KEEP=$BIZ_ROOT/_/keep - export HERO_SKEY=$BIZ_ROOT/_/skey - bild="runghc Biz.Bild" - if [[ ! -z "${IN_NIX_SHELL}" ]] - then - out="_/bild/dev" - # in dev mode, mmc.js is a directory of js assets - export HERO_NODE=$BIZ_ROOT/$out/static/mmc.js - rg --files \ - | entr -rcs \ - "$bild Hero.Host.hs && $bild Hero.Node.hs && $out/bin/mmc" - else - out="_/bild/nix" - export HERO_NODE=$BIZ_ROOT/$out/Hero.Node/static - rg --files \ - | entr -rcs \ - "$bild Hero.Host && $bild Hero.Node && $out/Hero.Host/bin/mmc" - fi -} - alias lint=$BIZ_ROOT/Biz/Lint.py function pie() { @@ -73,6 +50,7 @@ function push() { else target="$prefix.$1" fi + echo "push: $target" what=$(realpath "$BIZ_ROOT/_/bild/nix/$target") # hack: get the domain from the activation script. there does not seem # to be a way to get it from nix-instantiate @@ -84,21 +62,18 @@ function push() { # TODO: convert to haskell function ship() { - $BIZ_ROOT/Biz/Lint.py - stuff=(${1}) + lint + stuff=(${@}) if [[ ${#stuff[@]} -eq 0 ]] then stuff=( - Biz.Cloud - Biz.Dev - Que.Prod - Hero.Prod + Biz/Cloud.nix + Biz/Dev.nix + Biz/Que/Prod.nix + Hero/Prod.nix ) fi - for thing in ${stuff[@]} - do - bild $thing - done + bild ${stuff[@]} for thing in ${stuff[@]} do push $thing @@ -106,27 +81,11 @@ function ship() { } # Poor man's ci -function ci() { - set -e - lint **/* - stuff=( - Biz/Pie.hs - Biz/Pie.nix - Biz/Devalloc.hs - Biz/Que/Site.hs - Biz/Que/Host.hs - Biz/Que/Prod.nix - Biz/Cloud.nix - Biz/Dev.nix - Hero/Host.hs - Hero/Node.hs - Hero/Prod.nix - ) - for thing in ${stuff[@]} - do - bild "$thing" - done - set +e +function run-ci() { + lint **/* && bild **/* } +alias ci="time run-ci" + +export PS1='\n$(printf "%3.*s" $? $?)> ' help -- cgit v1.2.3