Open friday opened 6 years ago
Thanks for the report! They fail for me as well. I will take a look at it.
I have updated the AUR. It should work now.
Thank you! The build doesn't fail any more, but the resulting binary doesn't run. It's also is 5,6M rather than the 26M one which can be downloaded here (maybe this is because of using shared objects).
When I run klfc -h
I get this:
klfc: error while loading shared libraries: libHSxml-1.3.14-Ew3qY8SQrmLG4scYEQRIVk-ghc8.6.1.so: cannot open shared object file: No such file or directory
Build log:
Writing a default package environment file to
/home/albin/.cache/yay/klfc/src/klfc-abfc7ebd80a33a20caa50d481cfa46183258dda6/cabal.sandbox.config
Creating a new sandbox at
/home/albin/.cache/yay/klfc/src/klfc-abfc7ebd80a33a20caa50d481cfa46183258dda6/.cabal-sandbox
Downloading the latest package list from hackage.haskell.org
To revert to previous state run:
cabal update --index-state='2018-11-01T22:51:10Z'
Resolving dependencies...
Warning: The following packages are likely to be broken by the reinstalls:
zip-archive-0.3.3
megaparsec-6.5.0
parsec-3.1.13.0
network-uri-2.6.1.0
hackage-security-0.5.3.0
HTTP-4000.3.12
Cabal-2.4.0.1
async-2.2.1
resolv-0.1.1.1
libiserv-8.6.1
ghci-8.6.1
ghc-8.6.1
ghc-boot-8.6.1
Continuing even though the plan contains dangerous reinstalls.
Notice: installing into a sandbox located at
/home/albin/.cache/yay/klfc/src/klfc-abfc7ebd80a33a20caa50d481cfa46183258dda6/.cabal-sandbox
Starting fail-4.9.0.0
Starting semigroups-0.18.5
Starting containers-0.5.11.0
Building fail-4.9.0.0
Building semigroups-0.18.5
Building containers-0.5.11.0
Completed fail-4.9.0.0
Completed semigroups-0.18.5
Completed containers-0.5.11.0
Starting microlens-ghc-0.4.9.1
Starting th-abstraction-0.2.8.0
Starting containers-unicode-symbols-0.3.1.1
Starting binary-0.8.6.0
Building microlens-ghc-0.4.9.1
Building containers-unicode-symbols-0.3.1.1
Building th-abstraction-0.2.8.0
Building binary-0.8.6.0
Completed containers-unicode-symbols-0.3.1.1
Completed microlens-ghc-0.4.9.1
Completed th-abstraction-0.2.8.0
Starting microlens-th-0.4.2.3
Building microlens-th-0.4.2.3
Completed microlens-th-0.4.2.3
Completed binary-0.8.6.0
Starting text-1.2.3.1
Building text-1.2.3.1
Completed text-1.2.3.1
Starting xml-1.3.14
Starting chunked-data-0.3.1
Starting hashable-1.2.7.0
Building xml-1.3.14
Building hashable-1.2.7.0
Building chunked-data-0.3.1
Completed chunked-data-0.3.1
Completed hashable-1.2.7.0
Starting uuid-types-1.0.3
Starting case-insensitive-1.2.0.11
Starting scientific-0.3.6.2
Starting unordered-containers-0.2.9.0
Building scientific-0.3.6.2
Building case-insensitive-1.2.0.11
Building uuid-types-1.0.3
Building unordered-containers-0.2.9.0
Completed xml-1.3.14
Completed case-insensitive-1.2.0.11
Completed uuid-types-1.0.3
Completed scientific-0.3.6.2
Starting megaparsec-7.0.3
Starting attoparsec-0.13.2.2
Building megaparsec-7.0.3
Building attoparsec-0.13.2.2
Completed unordered-containers-0.2.9.0
Starting microlens-platform-0.3.10
Building microlens-platform-0.3.10
Completed microlens-platform-0.3.10
Completed megaparsec-7.0.3
Completed attoparsec-0.13.2.2
Starting aeson-1.4.1.0
Building aeson-1.4.1.0
Completed aeson-1.4.1.0
Resolving dependencies...
Configuring keyboard-layout-files-creator-1.5.3...
Preprocessing executable 'klfc' for keyboard-layout-files-creator-1.5.3..
Building executable 'klfc' for keyboard-layout-files-creator-1.5.3..
[ 1 of 40] Compiling JsonComments ( src/JsonComments.hs, dist/build/klfc/klfc-tmp/JsonComments.o )
[ 2 of 40] Compiling JsonPretty ( src/JsonPretty.hs, dist/build/klfc/klfc-tmp/JsonPretty.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.o )
[ 4 of 40] Compiling Stream ( src/Stream.hs, dist/build/klfc/klfc-tmp/Stream.o )
[ 5 of 40] Compiling Util ( src/Util.hs, dist/build/klfc/klfc-tmp/Util.o )
[ 6 of 40] Compiling Permutation ( src/Permutation.hs, dist/build/klfc/klfc-tmp/Permutation.o )
[ 7 of 40] Compiling Layout.Pos ( src/Layout/Pos.hs, dist/build/klfc/klfc-tmp/Layout/Pos.o )
[ 8 of 40] Compiling Layout.Mod ( src/Layout/Mod.hs, dist/build/klfc/klfc-tmp/Layout/Mod.o )
[ 9 of 40] Compiling Layout.DeadKey ( src/Layout/DeadKey.hs, dist/build/klfc/klfc-tmp/Layout/DeadKey.o )
[10 of 40] Compiling PresetDeadKey ( src/PresetDeadKey.hs, dist/build/klfc/klfc-tmp/PresetDeadKey.o )
[11 of 40] Compiling Layout.Action ( src/Layout/Action.hs, dist/build/klfc/klfc-tmp/Layout/Action.o )
[12 of 40] Compiling Filter ( src/Filter.hs, dist/build/klfc/klfc-tmp/Filter.o )
[13 of 40] Compiling FileType ( src/FileType.hs, dist/build/klfc/klfc-tmp/FileType.o )
[14 of 40] Compiling WithBar ( src/WithBar.hs, dist/build/klfc/klfc-tmp/WithBar.o )
[15 of 40] Compiling WithPlus ( src/WithPlus.hs, dist/build/klfc/klfc-tmp/WithPlus.o )
[16 of 40] Compiling Layout.Modifier ( src/Layout/Modifier.hs, dist/build/klfc/klfc-tmp/Layout/Modifier.o )
[17 of 40] Compiling Layout.ModifierEffect ( src/Layout/ModifierEffect.hs, dist/build/klfc/klfc-tmp/Layout/ModifierEffect.o )
[18 of 40] Compiling Layout.Key ( src/Layout/Key.hs, dist/build/klfc/klfc-tmp/Layout/Key.o )
[19 of 40] Compiling Layout.Layout ( src/Layout/Layout.hs, dist/build/klfc/klfc-tmp/Layout/Layout.o )
[20 of 40] Compiling Layout.Types ( src/Layout/Types.hs, dist/build/klfc/klfc-tmp/Layout/Types.o )
[21 of 40] Compiling PresetLayout ( src/PresetLayout.hs, dist/build/klfc/klfc-tmp/PresetLayout.o )
[22 of 40] Compiling Lookup.Tmk ( src/Lookup/Tmk.hs, dist/build/klfc/klfc-tmp/Lookup/Tmk.o )
[23 of 40] Compiling Lookup.MacOS ( src/Lookup/MacOS.hs, dist/build/klfc/klfc-tmp/Lookup/MacOS.o )
[24 of 40] Compiling Lookup.Linux ( src/Lookup/Linux.hs, dist/build/klfc/klfc-tmp/Lookup/Linux.o )
[25 of 40] Compiling Tmk ( src/Tmk.hs, dist/build/klfc/klfc-tmp/Tmk.o )
[26 of 40] Compiling Lookup.Windows ( src/Lookup/Windows.hs, dist/build/klfc/klfc-tmp/Lookup/Windows.o )
[27 of 40] Compiling PklParse ( src/PklParse.hs, dist/build/klfc/klfc-tmp/PklParse.o )
[28 of 40] Compiling Pkl ( src/Pkl.hs, dist/build/klfc/klfc-tmp/Pkl.o )
[29 of 40] Compiling KlcParse ( src/KlcParse.hs, dist/build/klfc/klfc-tmp/KlcParse.o )
[30 of 40] Compiling Klc ( src/Klc.hs, dist/build/klfc/klfc-tmp/Klc.o )
[31 of 40] Compiling Keylayout ( src/Keylayout.hs, dist/build/klfc/klfc-tmp/Keylayout.o )
[32 of 40] Compiling Ahk ( src/Ahk.hs, dist/build/klfc/klfc-tmp/Ahk.o )
[33 of 40] Compiling Xkb.General ( src/Xkb/General.hs, dist/build/klfc/klfc-tmp/Xkb/General.o )
[34 of 40] Compiling Xkb.Keycodes ( src/Xkb/Keycodes.hs, dist/build/klfc/klfc-tmp/Xkb/Keycodes.o )
[35 of 40] Compiling Xkb.Parse ( src/Xkb/Parse.hs, dist/build/klfc/klfc-tmp/Xkb/Parse.o )
[36 of 40] Compiling Xkb.Types ( src/Xkb/Types.hs, dist/build/klfc/klfc-tmp/Xkb/Types.o )
[37 of 40] Compiling Xkb.Symbols ( src/Xkb/Symbols.hs, dist/build/klfc/klfc-tmp/Xkb/Symbols.o )
[38 of 40] Compiling Xkb.XCompose ( src/Xkb/XCompose.hs, dist/build/klfc/klfc-tmp/Xkb/XCompose.o )
[39 of 40] Compiling Xkb ( src/Xkb.hs, dist/build/klfc/klfc-tmp/Xkb.o )
[40 of 40] Compiling Main ( src/Main.hs, dist/build/klfc/klfc-tmp/Main.o )
Linking dist/build/klfc/klfc ..
The resulting binary indeed doesn't run when the build directory is removed. (It does run when it's still there.) Installing the global packages doesn't help either. Even if it would, the Megaparsec package is still at an older version.
A solution would be statically build the binary, but I don't know how to do that with the Arch packages.
I'm not a Haskell dev and I'm fairly new with Arch (just switch from Mac to Antergos some months ago), so I'm afraid I can't help you much.
One possible solution I've seen other packages use is downloading the binary instead of compiling. Usually those packages have the suffix "-bin". Ex: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=visual-studio-code-bin
Personally this would be better for me since it would avoid the build time, and it'd likely mean less complexity/breakage like this for you to maintain (if you do this instead of the current AUR). It may however be considered a bad praxis or the "wrong solution" or something, and possibly miss optimizations or compatibility for some cpu architectures.
I found some info related to the static linking problem for Arch, but it seems very cumbersome: https://vadosware.io/post/static-binaries-for-haskell-a-convoluted-approach/ https://www.reddit.com/r/haskell/comments/7a1ty3/whats_the_correct_way_to_install_ghc_and_cabal_on/
I created this basic PKGBUILD which just copies the binary from your github release to /usr/bin:
pkgname=klfc-bin
provides=('klfc')
conflicts=('klfc')
pkgver=1.5.3
pkgrel=1
pkgdesc="Tool to create advanced keyboard layouts in various formats (binary version)"
url="https://github.com/39aldo39/klfc"
license=("GPL3")
arch=('x86_64')
source=(https://github.com/39aldo39/klfc/releases/download/v${pkgver}/klfc-linux-amd64-v${pkgver}.tar.xz)
sha256sums=('bc71abe4548ec36b2565f1ff37a21235c76b329fde00b1f463c111b53ddad9e0')
package() {
mkdir -p "${pkgdir}/usr/bin"
cp "${srcdir}/klfc" "${pkgdir}/usr/bin/"
}
I could add it to aur.archlinux.org, but I'm not sure I would be a good maintainer. Is this something you would consider adding and maintaining? Perhaps the other arch users @ninrod and @noctuid from #5 has opinions on this?
Thanks for the PKGBUILD! I have added it to the AUR under the name klfc-bin
.
I have a similar problem:
% klfc --version
klfc: error while loading shared libraries: libffi.so.6: cannot open shared object file: No such file or directory
% ldd `which klfc`
linux-vdso.so.1 (0x00007ffdeebf6000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f12f5c95000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007f12f5c8a000)
libutil.so.1 => /usr/lib/libutil.so.1 (0x00007f12f5c85000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f12f5c7e000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f12f5c5d000)
libgmp.so.10 => /usr/lib/libgmp.so.10 (0x00007f12f5bbd000)
libatomic.so.1 => /usr/lib/libatomic.so.1 (0x00007f12f5bb1000)
libffi.so.6 => not found
libc.so.6 => /usr/lib/libc.so.6 (0x00007f12f59e5000)
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f12f5e0e000)
I installed klfc-bin
from AUR.
I tried building the AUR with yay and with
makepkg -si
, but it fails, and I'm getting this output in the build phase:ghc-pkg check
only lists missing html docs and the build log file is the same as the output.