diff --git a/automated/nix-build/README.md b/automated/nix-build/README.md new file mode 100644 index 000000000..56901b267 --- /dev/null +++ b/automated/nix-build/README.md @@ -0,0 +1,5 @@ +# Building Stackage with Nix + +The script `build.sh` is supposed to be run in a directory where `curator unpack` +was run - it assumes existence of `unpack-dir` directory with a Stackage +snapshot `stack.yaml` and unpacked packages in it. diff --git a/automated/nix-build/build.sh b/automated/nix-build/build.sh new file mode 100644 index 000000000..62918fe5f --- /dev/null +++ b/automated/nix-build/build.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -eu +x + +NIX_VERSION="2.0.4" +curl https://nixos.org/releases/nix/nix-$NIX_VERSION/install | sh + +# no code to install stack2nix yet + +stack2nix --cabal2nix-args="--no-hpack" unpack-dir > snapshot.nix + +nix build -f snapshot-fixed.nix diff --git a/automated/nix-build/fetch-nixpkgs.nix b/automated/nix-build/fetch-nixpkgs.nix new file mode 100644 index 000000000..29cac91fc --- /dev/null +++ b/automated/nix-build/fetch-nixpkgs.nix @@ -0,0 +1,23 @@ +let + spec = builtins.fromJSON (builtins.readFile ./nixpkgs-src.json); + src = import { + url = "https://github.com/${spec.owner}/${spec.repo}/archive/${spec.rev}.tar.gz"; + inherit (spec) sha256; + }; + nixcfg = import ; +in builtins.derivation { + system = builtins.currentSystem; + name = "${src.name}-unpacked"; + builder = builtins.storePath nixcfg.shell; + inherit src; + args = [ + (builtins.toFile "builder" '' + $coreutils/mkdir $out + cd $out + $gzip -d < $src | $tar -x --strip-components=1 + '') + ]; + coreutils = builtins.storePath nixcfg.coreutils; + tar = builtins.storePath nixcfg.tar; + gzip = builtins.storePath nixcfg.gzip; +} diff --git a/automated/nix-build/nixpkgs-src.json b/automated/nix-build/nixpkgs-src.json new file mode 100644 index 000000000..00ed9d5d6 --- /dev/null +++ b/automated/nix-build/nixpkgs-src.json @@ -0,0 +1,6 @@ +{ + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c2950341d038995bf46a7b72db961bb3d3e9ac12", + "sha256": "0ghirjm6xvsihci3fladrn4nrnh2yr529v7c406hmw0yp25kv0i4" +} diff --git a/automated/nix-build/snapshot-fixed.nix b/automated/nix-build/snapshot-fixed.nix new file mode 100644 index 000000000..bac92a89b --- /dev/null +++ b/automated/nix-build/snapshot-fixed.nix @@ -0,0 +1,41 @@ +{ pkgs ? import (import ./fetch-nixpkgs.nix) {} +, compiler ? pkgs.haskell.packages.ghc863 +}: +let + snapshot = import ./snapshot.nix { pkgs = pkgs; compiler = compiler; }; +in + snapshot.override (with pkgs.haskell.lib; { + overrides = self: super: { + # disabling packages from non-hackage-packages.nix + futhark = null; + multi-ghc-travis = null; + vaultenv = null; + # native deps + check-email = super.check-email.override { resolv = null; }; + flac = super.flac.override { FLAC = pkgs.flac; }; + freenect = super.freenect.override { freenect_sync = null; libfreenect = null; }; + haskell-gi = super.haskell-gi.override { gobject-introspection = pkgs.gnome3.gobjectIntrospection; }; + HDBC-mysql = super.HDBC-mysql.override { mysqlclient = pkgs.mysql;}; + libffi = super.libffi.override { ffi = null; }; + # fixes + blas-ffi = overrideCabal super.blas-ffi ( + old: { libraryPkgconfigDepends = old.libraryPkgconfigDepends ++ [ pkgs.openblasCompat ]; } + ); + odbc = overrideCabal super.odbc ( + old: { librarySystemDepends = old.librarySystemDepends ++ [ pkgs.freetds ]; } + ); + html-entities = null; # https://github.com/nikita-volkov/html-entities/issues/8 + category = null; # conflict in Prelude.hs + constraint = null; # because of category + lame = null; # fails with 'Total ticks: 451489' + proto-lens-protobuf-types = overrideCabal super.proto-lens-protobuf-types ( + old: { libraryToolDepends = old.libraryToolDepends ++ [ pkgs.protobuf ]; } + ); + # libraft = null; # xxx/postgres/entries.sql: openFile: does not exist (No such file or directory) in libraft-0.2.0.0 + xmlbf-xeno = null; # because of html-entities + xmonad = null; # xmonad requires extra patches for Nix + xmonad-contrib = null; + xmonad-extras = null; + hlibgit2 = disableHardening super.hlibgit2 [ "format" ]; + }; + }) diff --git a/build-constraints.yaml b/build-constraints.yaml index d9390fd3d..1f0d891a8 100644 --- a/build-constraints.yaml +++ b/build-constraints.yaml @@ -4789,6 +4789,21 @@ skipped-tests: # Uses Cabal's "library internal" stanza feature - s3-signer + # Due to cycles, which are actually just limitations in Stack right now. + - call-stack + - HUnit + - criterion + - hspec + - foundation + - attoparsec + - case-insensitive + - nanospec + - scientific + - vector-binary-instances + - clock + - js-flot + - js-jquery + # Requires filesystem access - json-autotype # https://github.com/commercialhaskell/stackage/issues/4185 # end of skipped-tests @@ -5041,6 +5056,51 @@ expected-test-failures: # https://github.com/commercialhaskell/stackage/issues/4294 - asif + # to get fixed in version after 0.3.2 https://github.com/snoyberg/tar-conduit/issues/28 + - tar-conduit + + # https://github.com/cchalmers/pcg-random/pull/7 + - pcg-random + + # https://github.com/snoyberg/conduit/issues/385 + - conduit-extra + + # Stack builds test and benchmarks in one pass so benchmark could prevent tests from getting built + - cryptohash + + # https://github.com/basvandijk/threads/issues/10 + - threads + + # https://github.com/alphaHeavy/lzma-conduit/issues/19 + - lzma-conduit + + # https://github.com/blamario/monoid-subclasses/issues/18 + - monoid-subclasses + + # https://github.com/takenobu-hs/ghci-hexcalc/issues/1 + - ghci-hexcalc + + # https://github.com/Bodigrim/exp-pairs/issues/16 + - exp-pairs + + # doctests for the following packages fail because of ambiguous module + # names, to be fixed in https://github.com/sol/doctest/pull/218 + - blaze-colonnade + - co-log-core + - colonnade + - control-dsl + - dhall + - greskell-core + - jose-jwt + - jwt + - language-nix + - lens-regex + - pcre-heavy + - servant-checked-exceptions-core + - servant-rawm + - vinyl + - world-peace + # end of expected-test-failures # Benchmarks which are known not to build. Note that, currently we do not run @@ -5325,6 +5385,16 @@ skipped-benchmarks: # See: https://github.com/fpco/stackage-curator/issues/68 - tomland + # Due to cycles, which are actually just limitations in Stack right now. + - criterion + - foundation + - hspec + - attoparsec + - case-insensitive + - nanospec + - scientific + - vector-binary-instances + # end of skipped-benchmarks