Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build failures #40

Closed
ghost opened this issue Dec 10, 2021 · 5 comments
Closed

Build failures #40

ghost opened this issue Dec 10, 2021 · 5 comments

Comments

@ghost
Copy link

ghost commented Dec 10, 2021

Cloning the repo, switching to tag v1.5.6 and attempting to build cabal (by running cabal install) leads to the following error message:

Failed to build keyboard-layout-files-creator-1.5.6.
Build log (
/home/user/.cabal/logs/ghc-9.0.1/keyboard-layout-files-creator-1.5.6-7fca942ae05080a38a2c10ea78bf7257bf45d078a09aaa9ce8cad5ffb1603133.log
):
Configuring keyboard-layout-files-creator-1.5.6...
Preprocessing executable 'klfc' for keyboard-layout-files-creator-1.5.6..
Building executable 'klfc' for keyboard-layout-files-creator-1.5.6..
[ 1 of 40] Compiling JsonComments     ( src/JsonComments.hs, dist/build/klfc/klfc-tmp/JsonComments.dyn_o )
[ 2 of 40] Compiling JsonPretty       ( src/JsonPretty.hs, dist/build/klfc/klfc-tmp/JsonPretty.dyn_o )

src/JsonPretty.hs:139:91: error:
    • Couldn't match type: Data.Aeson.KeyMap.KeyMap Value
                     with: Data.HashMap.Internal.HashMap T.Text Value
      Expected: Data.HashMap.Internal.HashMap T.Text Value
        Actual: aeson-2.0.1.0:Data.Aeson.Types.Internal.Object
    • In the first argument of ‘H.toList’, namely ‘m’
      In the first argument of ‘pstSort’, namely ‘(H.toList m)’
      In the fifth argument of ‘fromCompound’, namely
        ‘(pstSort (H.toList m))’
    |
139 |     go (Object m) = fromCompound st ("{","}") delim (fromPair delims') (pstSort (H.toList m))
    |                                                                                           ^
cabal: Failed to build keyboard-layout-files-creator-1.5.6. See the build log
above for details.

The master branch also fails to compile with the following error message:

Failed to build keyboard-layout-files-creator-1.5.7.
Build log (
/home/user/.cabal/logs/ghc-9.0.1/keyboard-layout-files-creator-1.5.7-7a47f650a6a8a576b48f08b1d8a1800c1840aa8182f39eff83e99bd5ac487bd4.log
):
Warning: keyboard-layout-files-creator.cabal:75:39: version operators used. To
use version operators the package needs to specify at least 'cabal-version: >=
1.8'.
Configuring keyboard-layout-files-creator-1.5.7...
Preprocessing executable 'klfc' for keyboard-layout-files-creator-1.5.7..
Building executable 'klfc' for keyboard-layout-files-creator-1.5.7..
[ 1 of 40] Compiling JsonComments     ( src/JsonComments.hs, dist/build/klfc/klfc-tmp/JsonComments.dyn_o )
[ 2 of 40] Compiling JsonPretty       ( src/JsonPretty.hs, dist/build/klfc/klfc-tmp/JsonPretty.dyn_o )
[ 3 of 40] Compiling Paths_keyboard_layout_files_creator ( dist/build/klfc/autogen/Paths_keyboard_layout_files_creator.hs, dist/build/klfc/klfc-tmp/Paths_keyboard_layout_files_creator.dyn_o )
[ 4 of 40] Compiling Stream           ( src/Stream.hs, dist/build/klfc/klfc-tmp/Stream.dyn_o )
[ 5 of 40] Compiling Util             ( src/Util.hs, dist/build/klfc/klfc-tmp/Util.dyn_o )

src/Util.hs:83:20: error:
    • Couldn't match type ‘γ0’
                     with ‘(Maybe α -> σ0 -> σ0) -> (σ0 -> Maybe α) -> Lens' σ0 α’
      Expected: (σ0 -> α) -> γ0
        Actual: (σ0 -> α)
                -> (Maybe α -> σ0 -> σ0) -> (σ0 -> Maybe α) -> Lens' σ0 α
      Cannot instantiate unification variable ‘γ0’
      with a type involving polytypes:
        (Maybe α -> σ0 -> σ0) -> (σ0 -> Maybe α) -> Lens' σ0 α
    • In the first argument of ‘(∘)’, namely ‘lensWithDefault’
      In the expression: lensWithDefault ∘ const
      In an equation for ‘lensWithDefault'’:
          lensWithDefault' = lensWithDefault ∘ const
    • Relevant bindings include
        lensWithDefault' :: α
                            -> (Maybe α -> σ -> σ) -> (σ -> Maybe α) -> Lens' σ α
          (bound at src/Util.hs:83:1)
   |
83 | lensWithDefault' = lensWithDefault ∘ const
   |                    ^^^^^^^^^^^^^^^

src/Util.hs:83:20: error:
    • Couldn't match type ‘γ0’
                     with ‘(Maybe α -> σ -> σ) -> (σ -> Maybe α) -> Lens' σ α’
      Expected: α -> (Maybe α -> σ -> σ) -> (σ -> Maybe α) -> Lens' σ α
        Actual: α -> γ0
      Cannot instantiate unification variable ‘γ0’
      with a type involving polytypes:
        (Maybe α -> σ -> σ) -> (σ -> Maybe α) -> Lens' σ α
    • In the expression: lensWithDefault ∘ const
      In an equation for ‘lensWithDefault'’:
          lensWithDefault' = lensWithDefault ∘ const
    • Relevant bindings include
        lensWithDefault' :: α
                            -> (Maybe α -> σ -> σ) -> (σ -> Maybe α) -> Lens' σ α
          (bound at src/Util.hs:83:1)
   |
83 | lensWithDefault' = lensWithDefault ∘ const
   |                    ^^^^^^^^^^^^^^^^^^^^^^^
cabal: Failed to build keyboard-layout-files-creator-1.5.7. See the build log
above for details.

possible useful info:

  • ghc version: Glasgow Haskell Compiler, Version 9.0.1, stage 2 booted by GHC version 9.0.1
  • cabal version: cabal-install version 3.4.0.0 compiled using version 3.4.0.0 of the Cabal library
  • cabal configured to build link dynamically (in ~/.cobol/config)
library-vanilla: False
shared: True
executable-dynamic: True
program-default-options
  ghc-options: -dynamic

system: manjaro linux, ghc and cabal from the official repos

AUR build of the package klfc also fails:
cabal: unrecognised command: v1-sandbox (try --help)

The latest binary uploaded to github fails due to libffi.so.7 not being found (system only has version 8).

Edit: I also have the issue described in #39

@39aldo39
Copy link
Owner

Version v1.5.6 doesn't compile anymore due to an update to a dependency (fixed in a636eab). Version v.1.5.7 fixes it, but after some investigation it looks like GHC 9.0.1 had a breaking change (see this). I don't understand the reasoning fully myself, but I am quite surprised that seemingly equivalent programs aren't all valid anymore with this breaking change (???)

Anyway, it looks like the only affected line is line 83 in src/Utils.hs: lensWithDefault' = lensWithDefault ∘ const. I don't have GHC 9.0.1 myself, but could you try which of the following changes do compile:

  • lensWithDefault' x = lensWithDefault (const x)
  • lensWithDefault' x = lensWithDefault (\_ → x)

@ghost
Copy link
Author

ghost commented Dec 11, 2021

I have tried both modifications to line 83:

  • lensWithDefault' x = lensWithDefault (const x)

Result:

Failed to build keyboard-layout-files-creator-1.5.7.
Build log (
/home/user/.cabal/logs/ghc-9.0.1/keyboard-layout-files-creator-1.5.7-5160acee156172ad4373b00c87b5808156082037b938dd5a27a165720a49d369.log
):
Warning: keyboard-layout-files-creator.cabal:75:39: version operators used. To
use version operators the package needs to specify at least 'cabal-version: >=
1.8'.
Configuring keyboard-layout-files-creator-1.5.7...
Preprocessing executable 'klfc' for keyboard-layout-files-creator-1.5.7..
Building executable 'klfc' for keyboard-layout-files-creator-1.5.7..
[ 1 of 40] Compiling JsonComments     ( src/JsonComments.hs, dist/build/klfc/klfc-tmp/JsonComments.dyn_o )
[ 2 of 40] Compiling JsonPretty       ( src/JsonPretty.hs, dist/build/klfc/klfc-tmp/JsonPretty.dyn_o )
[ 3 of 40] Compiling Paths_keyboard_layout_files_creator ( dist/build/klfc/autogen/Paths_keyboard_layout_files_creator.hs, dist/build/klfc/klfc-tmp/Paths_keyboard_layout_files_creator.dyn_o )
[ 4 of 40] Compiling Stream           ( src/Stream.hs, dist/build/klfc/klfc-tmp/Stream.dyn_o )
[ 5 of 40] Compiling Util             ( src/Util.hs, dist/build/klfc/klfc-tmp/Util.dyn_o )
[ 6 of 40] Compiling Permutation      ( src/Permutation.hs, dist/build/klfc/klfc-tmp/Permutation.dyn_o )
[ 7 of 40] Compiling Layout.Pos       ( src/Layout/Pos.hs, dist/build/klfc/klfc-tmp/Layout/Pos.dyn_o )
[ 8 of 40] Compiling Layout.Mod       ( src/Layout/Mod.hs, dist/build/klfc/klfc-tmp/Layout/Mod.dyn_o )
[ 9 of 40] Compiling Layout.DeadKey   ( src/Layout/DeadKey.hs, dist/build/klfc/klfc-tmp/Layout/DeadKey.dyn_o )
[10 of 40] Compiling PresetDeadKey    ( src/PresetDeadKey.hs, dist/build/klfc/klfc-tmp/PresetDeadKey.dyn_o )
[11 of 40] Compiling Layout.Action    ( src/Layout/Action.hs, dist/build/klfc/klfc-tmp/Layout/Action.dyn_o )
[12 of 40] Compiling Filter           ( src/Filter.hs, dist/build/klfc/klfc-tmp/Filter.dyn_o )
[13 of 40] Compiling FileType         ( src/FileType.hs, dist/build/klfc/klfc-tmp/FileType.dyn_o )
[14 of 40] Compiling WithBar          ( src/WithBar.hs, dist/build/klfc/klfc-tmp/WithBar.dyn_o )
[15 of 40] Compiling WithPlus         ( src/WithPlus.hs, dist/build/klfc/klfc-tmp/WithPlus.dyn_o )

src/WithPlus.hs:7:7: error:
    Ambiguous occurrence ‘singleton’
    It could refer to
       either ‘BasePrelude.singleton’,
              imported from ‘BasePrelude’ at src/WithPlus.hs:12:1-44
              (and originally defined in ‘base-4.15.0.0:Data.OldList’)
           or ‘WithPlus.singleton’, defined at src/WithPlus.hs:32:1
  |
7 |     , singleton
  |       ^^^^^^^^^
cabal: Failed to build keyboard-layout-files-creator-1.5.7. See the build log
above for details.

Seems like compiling Util was successful now.

  • lensWithDefault' x = lensWithDefault (\_ → x)

(as far as I can see it is the same error message when compiling WithPlus)

Failed to build keyboard-layout-files-creator-1.5.7.
Build log (
/home/user/.cabal/logs/ghc-9.0.1/keyboard-layout-files-creator-1.5.7-c05c0690b0cc2268d937b6df250af65ce8ac1dd6a07bafcc410264ed4292beb1.log
):
Warning: keyboard-layout-files-creator.cabal:75:39: version operators used. To
use version operators the package needs to specify at least 'cabal-version: >=
1.8'.
Configuring keyboard-layout-files-creator-1.5.7...
Preprocessing executable 'klfc' for keyboard-layout-files-creator-1.5.7..
Building executable 'klfc' for keyboard-layout-files-creator-1.5.7..
[ 1 of 40] Compiling JsonComments     ( src/JsonComments.hs, dist/build/klfc/klfc-tmp/JsonComments.dyn_o )
[ 2 of 40] Compiling JsonPretty       ( src/JsonPretty.hs, dist/build/klfc/klfc-tmp/JsonPretty.dyn_o )
[ 3 of 40] Compiling Paths_keyboard_layout_files_creator ( dist/build/klfc/autogen/Paths_keyboard_layout_files_creator.hs, dist/build/klfc/klfc-tmp/Paths_keyboard_layout_files_creator.dyn_o )
[ 4 of 40] Compiling Stream           ( src/Stream.hs, dist/build/klfc/klfc-tmp/Stream.dyn_o )
[ 5 of 40] Compiling Util             ( src/Util.hs, dist/build/klfc/klfc-tmp/Util.dyn_o )
[ 6 of 40] Compiling Permutation      ( src/Permutation.hs, dist/build/klfc/klfc-tmp/Permutation.dyn_o )
[ 7 of 40] Compiling Layout.Pos       ( src/Layout/Pos.hs, dist/build/klfc/klfc-tmp/Layout/Pos.dyn_o )
[ 8 of 40] Compiling Layout.Mod       ( src/Layout/Mod.hs, dist/build/klfc/klfc-tmp/Layout/Mod.dyn_o )
[ 9 of 40] Compiling Layout.DeadKey   ( src/Layout/DeadKey.hs, dist/build/klfc/klfc-tmp/Layout/DeadKey.dyn_o )
[10 of 40] Compiling PresetDeadKey    ( src/PresetDeadKey.hs, dist/build/klfc/klfc-tmp/PresetDeadKey.dyn_o )
[11 of 40] Compiling Layout.Action    ( src/Layout/Action.hs, dist/build/klfc/klfc-tmp/Layout/Action.dyn_o )
[12 of 40] Compiling Filter           ( src/Filter.hs, dist/build/klfc/klfc-tmp/Filter.dyn_o )
[13 of 40] Compiling FileType         ( src/FileType.hs, dist/build/klfc/klfc-tmp/FileType.dyn_o )
[14 of 40] Compiling WithBar          ( src/WithBar.hs, dist/build/klfc/klfc-tmp/WithBar.dyn_o )
[15 of 40] Compiling WithPlus         ( src/WithPlus.hs, dist/build/klfc/klfc-tmp/WithPlus.dyn_o )

src/WithPlus.hs:7:7: error:
    Ambiguous occurrence ‘singleton’
    It could refer to
       either ‘BasePrelude.singleton’,
              imported from ‘BasePrelude’ at src/WithPlus.hs:12:1-44
              (and originally defined in ‘base-4.15.0.0:Data.OldList’)
           or ‘WithPlus.singleton’, defined at src/WithPlus.hs:32:1
  |
7 |     , singleton
  |       ^^^^^^^^^
cabal: Failed to build keyboard-layout-files-creator-1.5.7. See the build log
above for details.

@ghost
Copy link
Author

ghost commented Dec 11, 2021

I will attempt to compile it with the latest 8.x ghc, once I figure out how to use ghcup.

@ghost
Copy link
Author

ghost commented Dec 11, 2021

I got ghc 8.10.7 from ghcup, successfully compiled klfc, however now I am running into the missing libffi.so.7 (my system only has libffi.so.8 in /usr/lib) error mentioned in #39

Clarification: I used the master branch (reverted the line 83 changes in utils.hs)

39aldo39 added a commit that referenced this issue Dec 16, 2021
See https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.0#simplified-subsumption
for the required eta-expansion in lensWithDefault'

Hiding singleton from BasePrelude gives a warning for previous GHC versions,
but this is a minor issue
@ghost
Copy link
Author

ghost commented Dec 18, 2021

The libffi.so.7 error is not present with the latest releases binary. Klfc works perfectly on my system now. Thank you for developing and maintaining this awesome software package!

@ghost ghost closed this as completed Feb 11, 2022
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant