summaryrefslogtreecommitdiff
path: root/doc/forum/recent_propellor_snapshots_cause_ghc_OOMs
diff options
context:
space:
mode:
authorJoey Hess2016-06-02 18:07:17 -0400
committerJoey Hess2016-06-02 18:07:17 -0400
commit212af50ccadc1143b5f0b31571b909bfa5cc43d6 (patch)
treed57f8f0102cb0df3db9bb54767f4c54e8d969e20 /doc/forum/recent_propellor_snapshots_cause_ghc_OOMs
parent17f843b244df52c19542f0a0869f500ccadf4553 (diff)
analysis
Diffstat (limited to 'doc/forum/recent_propellor_snapshots_cause_ghc_OOMs')
-rw-r--r--doc/forum/recent_propellor_snapshots_cause_ghc_OOMs/comment_9_2944596b92b437f9c5978cfc1e1bf4fb._comment71
1 files changed, 71 insertions, 0 deletions
diff --git a/doc/forum/recent_propellor_snapshots_cause_ghc_OOMs/comment_9_2944596b92b437f9c5978cfc1e1bf4fb._comment b/doc/forum/recent_propellor_snapshots_cause_ghc_OOMs/comment_9_2944596b92b437f9c5978cfc1e1bf4fb._comment
new file mode 100644
index 00000000..d04beb10
--- /dev/null
+++ b/doc/forum/recent_propellor_snapshots_cause_ghc_OOMs/comment_9_2944596b92b437f9c5978cfc1e1bf4fb._comment
@@ -0,0 +1,71 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 9"""
+ date="2016-06-02T21:07:10Z"
+ content="""
+@craige I do get an OOM with your config.hs.
+
+So, the first thing I tried was to delete several of the
+big blocks of `&` properties to simplify it.
+
+That led to some error messages, which didn't OOM ghc this time,
+but were still several pages long each.
+
+The main problem is that standardDesktop etc functions have not finished
+being ported to propellor 3.0. A minimalized example derived from your config
+is as follows:
+
+ standardDesktop :: HostName -> DebianSuite -> Architecture -> Host
+ standardDesktop hn suite arch motd = host hn
+ & osDebian suite arch
+ & Apt.unattendedUpgrades
+ & Apt.cacheCleaned
+ & Apt.installed ["etckeeper"]
+ -- adding more properties here yields exponentially longer
+ -- type inference errors
+
+That would have worked before propellor 3.0, but I had to remove support
+for adding additional properties into an existing Host using `&` like this.
+Also, in propellor 3.0, you have to use `props` when building a list
+of properties to assign to a host. See <upgrading_to_propellor_3.0>.
+
+The way I dealt with it in joeyconfig.hs is to make my standardSystem not
+be a function to generate a Host, but just a Property that combines
+together other properties and can be added to a Host like any other
+Property. I suggest you make similar changes to your config.hs to get it
+to compile. The fixed version of the above example becomes:
+
+ standardDesktop :: DebianSuite -> Architecture -> Property (HasInfo + Debian)
+ standardDesktop suite arch = propertyList "standard desktop" $ props
+ & osDebian suite arch
+ & Apt.unattendedUpgrades
+ & Apt.cacheCleaned
+ & Apt.installed ["etckeeper"]
+
+So in summary, in this case, the ghc OOM is due to a type inference
+error message, proabably quite an enourmous one as ghc chews on
+a bunch of properties that are being combined together, and tries to say
+that their type should be Property (HasInfo + Debian) and not Host, but
+says it in the most verbose way imaginable.
+
+(I don't think the type checker is blowing up, because ghc is able to get
+to the point of saying "Couldn't match expected" before it blows up ..
+the type checker has found a problem and the error message is being lazily
+generated.)
+
+It may be that the super-long error message could be improved by
+[[todo/use_ghc_8.0_custom_compile_errors]], although I believe that
+ ghc still displays the full type error message after the custom error
+message.
+
+ghc is printing out each application of the Propellor.Types.MetaTypes.Intersect
+type-level function, along with all its inputs. I wonder if there's a
+way to "force" application of a type-level function so the error message
+only shows its value?
+
+(It certianly seems a bug that ghc can eat all memory to display totally
+enormous type errror messages.)
+
+(Also @craige, you need to submit some of those modules to include in propellor.
+How can propellor be complete w/o MineCraft support?)
+"""]]