Dial back optimisation when building on arm

Prevent ghc and llc from running out of memory when optimising some
files.

Sean Whitton reported that doing this only in Test.hs was insufficient,
the build still OOMed by the time it got to Test.hs. He had earlier found
the build worked when these options are applied globally.

See https://ghc.haskell.org/trac/ghc/ticket/14821 for why it needs -O1;
once that's fixed it may suffice to use "GHC-Options: -O2 -optlo-O2",
although it may also be that the -O1 prevents ghc from using/leaking
as much memory.

os(arm) should match armel, armhf, armeb, and arm.
It probably also matches arm64, somewhat unfortunately since arm64
systems probably tend to have more memory. See list of arches in
https://hackage.haskell.org/package/Cabal-1.22.2.0/docs/src/Distribution-System.html

This commit was sponsored by Henrik Riomar on Patreon.
This commit is contained in:
Joey Hess 2018-03-04 19:48:07 -04:00
parent 0361937ee3
commit 6063b3df3f
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 8 additions and 3 deletions

View file

@ -1,6 +1,8 @@
git-annex (6.20180228) UNRELEASED; urgency=medium
* Support exporttree=yes for rsync special remotes.
* Dial back optimisation when building on arm, which prevents
ghc and llc from running out of memory when optimising some files.
-- Joey Hess <id@joeyh.name> Wed, 28 Feb 2018 11:53:03 -0400

View file

@ -6,8 +6,6 @@
-}
{-# LANGUAGE CPP #-}
{- Avoid optimising this file much, since it's large and does not need it._-}
{-# OPTIONS_GHC -O1 -optlo-O2 #-}
module Test where

View file

@ -377,7 +377,12 @@ Executable git-annex
-- Fully optimize for production.
if flag(Production)
GHC-Options: -O2
-- Lower memory systems can run out of memory with -O2, so
-- optimise slightly less.
if arch(arm)
GHC-Options: -O1 -optlo-O2
else
GHC-Options: -O2
-- Avoid linking with unused dynamic libaries.
-- (Only tested on Linux).