From 14fe4c4d6b5a29be94ecfc0572e0f9a9a081e795 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 30 Apr 2018 09:03:46 -0400 Subject: fix broken SemigroupMonoid transition <> Turns out that with ghc 8.2.2, the instructions given on the page don't work. And the cppless variant that I had compiles, but into effectively mappend = mappend so it loops. The only way I can see to make it work without cpp is to use mappend = (Sem.<>) which is ugly and a land mine waiting to explode if someone changes it to a nicer mappend = (<>) with a newer version of ghc which will compile it and work ok, while breaking it with 8.2.2. Sigh. I posted to haskell-cafe about this. --- src/Propellor/Property/Ccache.hs | 2 +- src/Propellor/Property/Debootstrap.hs | 2 +- src/Propellor/Property/DiskImage/PartSpec.hs | 2 +- src/Propellor/Property/Firewall.hs | 2 +- src/Propellor/Property/Installer/Target.hs | 2 +- src/Propellor/Property/Parted.hs | 2 +- src/Propellor/Property/Parted/Types.hs | 4 ++-- src/Propellor/Property/Ssh.hs | 4 ++-- 8 files changed, 10 insertions(+), 10 deletions(-) (limited to 'src/Propellor/Property') diff --git a/src/Propellor/Property/Ccache.hs b/src/Propellor/Property/Ccache.hs index ebc21b88..ea729b7c 100644 --- a/src/Propellor/Property/Ccache.hs +++ b/src/Propellor/Property/Ccache.hs @@ -31,7 +31,7 @@ instance Sem.Semigroup Limit where instance Monoid Limit where mempty = NoLimit - mappend = (<>) + mappend = (Sem.<>) -- | A string that will be parsed to get a data size. -- diff --git a/src/Propellor/Property/Debootstrap.hs b/src/Propellor/Property/Debootstrap.hs index c6e5c373..923229be 100644 --- a/src/Propellor/Property/Debootstrap.hs +++ b/src/Propellor/Property/Debootstrap.hs @@ -41,7 +41,7 @@ instance Sem.Semigroup DebootstrapConfig where instance Monoid DebootstrapConfig where mempty = DefaultConfig - mappend = (<>) + mappend = (Sem.<>) toParams :: DebootstrapConfig -> [CommandParam] toParams DefaultConfig = [] diff --git a/src/Propellor/Property/DiskImage/PartSpec.hs b/src/Propellor/Property/DiskImage/PartSpec.hs index 0698d806..652b53c8 100644 --- a/src/Propellor/Property/DiskImage/PartSpec.hs +++ b/src/Propellor/Property/DiskImage/PartSpec.hs @@ -189,7 +189,7 @@ instance Sem.Semigroup PartLocation where instance Monoid PartLocation where mempty = Middle - mappend = (<>) + mappend = (Sem.<>) partLocation :: PartSpec PartLocation -> PartLocation -> PartSpec PartLocation partLocation (mp, o, p, _) l = (mp, o, p, l) diff --git a/src/Propellor/Property/Firewall.hs b/src/Propellor/Property/Firewall.hs index ff7ffebf..7b62558d 100644 --- a/src/Propellor/Property/Firewall.hs +++ b/src/Propellor/Property/Firewall.hs @@ -205,4 +205,4 @@ instance Sem.Semigroup Rules where instance Monoid Rules where mempty = Everything - mappend = (<>) + mappend = (Sem.<>) diff --git a/src/Propellor/Property/Installer/Target.hs b/src/Propellor/Property/Installer/Target.hs index 54e9075e..8c865143 100644 --- a/src/Propellor/Property/Installer/Target.hs +++ b/src/Propellor/Property/Installer/Target.hs @@ -444,7 +444,7 @@ instance Sem.Semigroup TargetFilled where instance Monoid TargetFilled where mempty = TargetFilled (0 % 1) - mappend = (<>) + mappend = (Sem.<>) newtype TargetFilledHandle = TargetFilledHandle Integer diff --git a/src/Propellor/Property/Parted.hs b/src/Propellor/Property/Parted.hs index 39ee1723..e11acf57 100644 --- a/src/Propellor/Property/Parted.hs +++ b/src/Propellor/Property/Parted.hs @@ -193,7 +193,7 @@ instance Sem.Semigroup DiskPart where instance Monoid DiskPart where mempty = FixedDiskPart - mappend = (<>) + mappend = (Sem.<>) -- | Make a partition use some percentage of the size of the disk -- (less all fixed size partitions), or the remaining space in the disk. diff --git a/src/Propellor/Property/Parted/Types.hs b/src/Propellor/Property/Parted/Types.hs index 5891cc16..11e0947c 100644 --- a/src/Propellor/Property/Parted/Types.hs +++ b/src/Propellor/Property/Parted/Types.hs @@ -31,7 +31,7 @@ instance Sem.Semigroup PartTable where instance Monoid PartTable where -- | default TableType is MSDOS, with a `safeAlignment`. mempty = PartTable MSDOS safeAlignment [] - mappend = (<>) + mappend = (Sem.<>) -- | A partition on the disk. data Partition = Partition @@ -93,7 +93,7 @@ instance Sem.Semigroup PartSize where instance Monoid PartSize where mempty = MegaBytes 0 - mappend = (<>) + mappend = (Sem.<>) reducePartSize :: PartSize -> PartSize -> PartSize reducePartSize (MegaBytes a) (MegaBytes b) = MegaBytes (a - b) diff --git a/src/Propellor/Property/Ssh.hs b/src/Propellor/Property/Ssh.hs index 05098983..c23a121b 100644 --- a/src/Propellor/Property/Ssh.hs +++ b/src/Propellor/Property/Ssh.hs @@ -238,7 +238,7 @@ instance Sem.Semigroup HostKeyInfo where instance Monoid HostKeyInfo where mempty = HostKeyInfo M.empty - mappend = (<>) + mappend = (Sem.<>) userPubKeys :: User -> [(SshKeyType, PubKeyText)] -> Property (HasInfo + UnixLike) userPubKeys u@(User n) l = pureInfoProperty ("ssh pubkey for " ++ n) $ @@ -260,7 +260,7 @@ instance Sem.Semigroup UserKeyInfo where instance Monoid UserKeyInfo where mempty = UserKeyInfo M.empty - mappend = (<>) + mappend = (Sem.<>) -- | Sets up a user with the specified public keys, and the corresponding -- private keys from the privdata. -- cgit v1.2.3