From 1c60e38edfdb01631ce0108872cbf9197c1bbdc6 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 4 Mar 2018 19:48:07 -0400 Subject: 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. --- CHANGELOG | 2 ++ Test.hs | 2 -- git-annex.cabal | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 83692a0e9..e78ff93be 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -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 Wed, 28 Feb 2018 11:53:03 -0400 diff --git a/Test.hs b/Test.hs index 12999b48f..b0f418656 100644 --- a/Test.hs +++ b/Test.hs @@ -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 diff --git a/git-annex.cabal b/git-annex.cabal index 2b17f6729..994e01570 100644 --- a/git-annex.cabal +++ b/git-annex.cabal @@ -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). -- cgit v1.2.3