summaryrefslogtreecommitdiff
path: root/guix/build/haskell-build-system.scm
AgeCommit message (Collapse)Author
2023-02-26build: haskell-build-system: Build static executables by default.Lars-Dominik Braun
This is the only way to get reasonably small binaries that don’t pull in a ton of ghc-* packages. * guix/build/haskell-build-system.scm (configure): Explicitly add --enable-static and --disable-executable-dynamic, as well as -split-sections to configure flags.
2023-02-26build-system: haskell: Drop default "static" output.Lars-Dominik Braun
* guix/build-system/haskell.scm (lower): Pass outputs to lowered bag. * guix/build/haskell-build-system.scm (install): Remove static library moving code. * gnu/packages/haskell-check.scm (ghc-hunit): Remove "static" output. * gnu/packages/haskell-crypto.scm (ghc-crypto-api-tests): Likewise. * gnu/packages/haskell-xyz.scm (ghc-case-insensitive): Likewise. (ghc-cmdargs): Likewise. (ghc-conduit): Likewise. (ghc-fgl): Likewise. (ghc-haskell-src-exts): Likewise. (ghc-lib-parser): Likewise. (ghc-mono-traversable): Likewise. (ghc-parallel): Likewise. (ghc-paths): Likewise. (ghc-profunctors): Likewise. (ghc-tf-random): Likewise. (ghc-vector): Likewise.
2023-02-26build: haskell-build-system: Remove unused linker flags.Lars-Dominik Braun
They were inserted as-is, without expandind variables into binaries. * guix/build/haskell-build-system.scm (configure): Remove --ghc-option.
2023-02-26build: haskell-build-system: Process all transitive dependencies.Lars-Dominik Braun
A bug caused install-transitive-deps to stop looping if a dependency file already existed in the target directory. For Haskell packages with multiple libraries (like attoparsec) this resulted in missing dependencies and error messages like this: The following packages are broken because other packages they depend on are missing. These broken packages must be rebuilt before they can be used. installed package attoparsec-0.14.4 is broken due to missing package scientific-0.3.7.0-9XG3zUjXOw970JFcruv0cZ See <https://issues.guix.gnu.org/54729#11>. * guix/build/haskell-build-system.scm (register): Unconditionally loop over all tails.
2023-02-26build: haskell-build-system: Support multiple libraries.Philip Munksgaard
Fixes <https://bugs.gnu.org/53655>. The patch handles correctly the multiple registration of some package using their own internal sub-libraries. It allows to call 'install-transitive-deps' multiple times and deals with packages requiring a multiple registration. * guix/build/haskell-build-system.scm (register)[install-transitive-deps]: Guard also the destination direction. [install-config-file]: New procedure. Co-Authored-by: zimoun <zimon.toutoune@gmail.com>. Signed-off-by: Lars-Dominik Braun <lars@6xq.net>
2023-02-26build: haskell-build-system: Remove trailing #t.zimoun
* guix/build/haskell-build-system.scm (configure, install, setup-compiler, make-ghc-package-database, install-transitive-deps, check, haddock, patch-cabal-file, generate-setuphs): Delete trailing #t. Signed-off-by: Lars-Dominik Braun <lars@6xq.net>
2021-10-08build-system/haskell: Explain failure.Lars-Dominik Braun
Provide human-readable failure message and explain how to fix it. * guix/build/haskell-build-system.scm (register): Raise error if source file does not exist.
2021-10-08build-system/haskell: Accept line breaks in config files.Lars-Dominik Braun
Long id’s will break to the next line. * guix/build/haskell-build-system.scm (grep): Remove. (register): Modify regular expression to account for newlines between key and value, fail if package id is empty.
2021-10-08build-system/haskell: Do not rely on compiler name.Lars-Dominik Braun
We’ve been relying on the compiler name matching its package subdir. Since we effectively only support GHC we can hard-code this and avoid issues with “ghc-next”. * guix/build/haskell-build-system.scm (make-ghc-package-database): Use GHC_PACKAGE_PATH. (register): Hard-code ghc prefix.
2021-10-08guix: haskell-build-system: Always pass -package-db option.John Kehayias
* guix/build/haskell-build-system.scm (run-setuphs): Pass -package-db option. Signed-off-by: Ricardo Wurmus <rekado@elephly.net>
2020-08-13build-system/haskell: Do not pass "--bindir" during configure.Ricardo Wurmus
The "--bindir" option is not as useful as it seems as the configured location is embedded in the outputs. Instead of using "--bindir" it seems better to build a statically linked binary and move the binary to its own output to avoid references between the "out" and "bin" outputs. * guix/build/haskell-build-system.scm (configure): Do not pass "--bindir".
2020-08-13build-system/haskell: Add 'extra-directories' keyword.Timothy Sample
See <https://bugs.gnu.org/39309>. * guix/build-system/haskell.scm (lower): Include the transitive propagated inputs of 'extra-directories' inputs. (haskell-build): Add the 'extra-directories' keyword and pass it through to the builder. * guix/build/haskell-build-system.scm (configure): Use it to select which inputs get passed via 'extra-include-dirs' and 'extra-lib-dirs' to Cabal. * gnu/packages/haskell-xyz.scm (ghc-alsa-core, ghc-hmatrix, ghc-hmatrix-gsl, ghc-hslua, ghc-iwlib, ghc-libyaml, ghc-ncurses, ghc-openglraw, ghc-x11, ghc-x11-xft, ghc-zlib): Set 'extra-directories'. * gnu/packages/haskell-crypto.scm (ghc-digest, ghc-hsopenssl): Likewise.
2020-08-12haskell-build-system: register: Remove references to the doc output.Ricardo Wurmus
* guix/build/haskell-build-system.scm (register): Strip references to the doc output from the generated package config files; move the haddock files from the "doc" output to the "lib" output.
2020-08-12haskell-build-system: register: Respect lib output.Ricardo Wurmus
* guix/build/haskell-build-system.scm (register): Use lib output if it exists.
2020-08-12build-system/haskell: Add default output "static".Ricardo Wurmus
* guix/build-system/haskell.scm (lower): Add OUTPUTS keyword and add the "static" output in the common case. (haskell-build): Set the default value for the OUTPUTS keyword to include the "static" output. * guix/build/haskell-build-system.scm (install): Move static libraries to the "static" output if it exists.
2020-08-12build-system/haskell: Configure to link with shared libraries.Ricardo Wurmus
* guix/build/haskell-build-system.scm (configure): Add configure flags to build shared libraries by default, to generate position independent code, and to set the RUNPATH.
2020-08-12build-system/haskell: Refactor configure step.Ricardo Wurmus
* guix/build/haskell-build-system.scm (configure): Replace append with quasiquotes and splicing.
2020-08-12build-system/haskell: Support parallel builds.Ricardo Wurmus
* guix/build-system/haskell.scm (haskell-build): Add keyword PARALLEL-BUILD? and pass it on to the builder. * guix/build/haskell-build-system.scm (build): Accept keyword PARALLEL-BUILD? and pass the number of parallel jobs to GHC.
2019-06-13build-system/haskell: Generate Setup.hs if needed.Robert Vollmert
The default Setup.hs is boilerplate that is frequently left out of source packages. Several packages already add a phase to generate it, so moving this phase to the build system is just factoring out an existing pattern. See <https://github.com/phadej/time-compat/issues/4>. * guix/build/haskell-build-system.scm (generate-setuphs): New procedure. (%standard-phases): Add it after 'unpack'. * gnu/packages/haskell.scm (ghc-foundation, ghc-inline-c, ghc-inline-c-cpp, ghc-rio): Remove 'arguments'. Signed-off-by: Timothy Sample <samplet@ngyro.com>
2019-06-13build-system/haskell: Fix Haddock phase docstring.Robert Vollmert
* guix/build/haskell-build-system.scm (haddock): Fix docstring. Signed-off-by: Timothy Sample <samplet@ngyro.com>
2018-11-12build-system/haskell: Fix register phase.Ricardo Wurmus
This is a follow-up to commit a7e231a2a3edbd6a70949432c1ff434d87f625ff. Reported by Marius Bakke <mbakke@fastmail.com>. * guix/build/haskell-build-system.scm (register): Use "when" instead of "unless".
2018-10-19build-system/haskell: Use 'strip-store-file-name'.Alex Vong
See the discussion at <https://lists.gnu.org/archive/html/guix-devel/2018-10/msg00250.html>. * guix/build/haskell-build-system.scm (package-name-version): Remove it. (configure): Use 'strip-store-file-name' instead of 'package-name-version'. (setup-compiler): Likewise. (make-ghc-package-database): Likewise. (register): Likewise. * gnu/packages/haskell.scm (ghc-cairo)[arguments]: Likewise. * gnu/packages/agda.scm (agda)[arguments]: Likewise. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-10-05Merge branch 'master' into core-updatesMarius Bakke
2018-10-01build-system: haskell: Add #:cabal-revision argument.Timothy Sample
Add a #:cabal-revision argument for specifying which Cabal file revision from Hackage should be used. * guix/build-system/haskell.scm (source-url->revision-url): New function. (lower): Accept a cabal-revision keyword argument, convert it to an origin record, and add it to the resulting bag's host-inputs. (haskell-build): Pass the cabal-revision input to the builder as an argument. * guix/build/haskell-build-system.scm (patch-cabal-file): New phase. (%standard-phases): Add it.
2018-08-09build-system/haskell: Let all phases return #T unconditionally.Ricardo Wurmus
* guix/build/haskell-build-system.scm (make-ghc-package-database, register, check, haddock): Return #T unconditionally; use INVOKE.
2018-07-11build-system/haskell: Make phases fail on error.Danny Milosavljevic
* guix/build/haskell-build-system.scm (configure): Make it fail on error. (run-setuphs): Make it fail on error.
2018-03-11build-system/gnu: Add 'bootstrap' phase.Ludovic Courtès
This factorizes what has become a widespread idiom. * guix/build/gnu-build-system.scm (%bootstrap-scripts): New variable. (bootstrap): New procedure. (%standard-phases): Add it after 'unpack'. * guix/build/ant-build-system.scm (%standard-phases): Delete 'bootstrap. * guix/build/asdf-build-system.scm (%standard-phases/source) (%standard-phases): Likewise. * guix/build/cargo-build-system.scm (%standard-phases): Likewise. * guix/build/cmake-build-system.scm (%standard-phases): Likewise. * guix/build/dub-build-system.scm (%standard-phases): Likewise. * guix/build/emacs-build-system.scm (%standard-phases): Likewise. * guix/build/font-build-system.scm (%standard-phases): Likewise. * guix/build/go-build-system.scm (%standard-phases): Likewise. * guix/build/haskell-build-system.scm (%standard-phases): Likewise. * guix/build/minify-build-system.scm (%standard-phases): Likewise. * guix/build/ocaml-build-system.scm (%standard-phases): Likewise. * guix/build/perl-build-system.scm (%standard-phases): Likewise. * guix/build/python-build-system.scm (%standard-phases): Likewise. * guix/build/r-build-system.scm (%standard-phases): Likewise. * guix/build/ruby-build-system.scm (%standard-phases): Likewise. * guix/build/scons-build-system.scm (%standard-phases): Likewise. * guix/build/texlive-build-system.scm (%standard-phases): Likewise. * guix/build/waf-build-system.scm (%standard-phases): Likewise. * gnu/packages/audio.scm (faad2)[arguments]: Replace 'bootstrap. (soundtouch, cuetools, bluez-alsa): Remove 'arguments'. (cava)[arguments]: Replace 'bootstrap. * gnu/packages/backup.scm (rdup): Remove 'bootstrap. * gnu/packages/bioinformatics.scm (seek)[arguments]: Replace 'bootstrap. * gnu/packages/bioinformatics.scm (htslib-for-sambamba): Remove 'arguments'. * gnu/packages/ci.scm (hydra, cuirass): Remove 'bootstrap'. * gnu/packages/crypto.scm (libb2): Remove #:phases. * gnu/packages/databases.scm (guile-wiredtiger): Likewise. * gnu/packages/debug.scm (stress-make): Remove 'bootstrap'. * gnu/packages/documentation.scm (asciidoc): Likewise. * gnu/packages/fontutils.scm (libuninameslist): Remove 'arguments'. * gnu/packages/ftp.scm (weex): Remove 'arguments'. * gnu/packages/game-development.scm (ois): Remove 'arguments'. * gnu/packages/games.scm (pioneer): Remove 'bootstrap. * gnu/packages/gnome.scm (vte-ng, byzanz): Replace 'bootstrap. (arc-theme): Remove 'arguments'. (faba-icon-theme): Remove 'bootstrap. (arc-icon-theme): Remove 'arguments'. * gnu/packages/gnunet.scm (guile-gnunet): Likewise. * gnu/packages/gtk.scm (guile-rsvg): Likewise. * gnu/packages/guile.scm (mcron2): Remove 'bootstrap. (guile-bash): Remove #:phases. (guile-git): Remove 'bootstrap. (guile-syntax-highlight): Remove 'arguments'. (guile-sjson): Likewise. * gnu/packages/java.scm (classpath-devel): Remove 'bootstrap. * gnu/packages/kodi.scm (libdvdnav/kodi) (libdvdread/kodi, libdvdcss/kodi): Likewise. * gnu/packages/libreoffice.scm (hunspell): Remove 'arguments'. * gnu/packages/libusb.scm (hidapi): Likewise. * gnu/packages/linux.scm (bridge-utils): Rename 'bootstrap' to 'patch-stuff'; move it before 'bootstrap', without autoreconf invocation. (eudev): Rename 'bootstrap' to 'patch-file-names', without 'autogen.sh' invocation; move it before 'bootstrap. (gpm): Replace 'bootstrap'. (f2fs-tools): Remove 'arguments'. (rng-tools): Remove #:phases. * gnu/packages/messaging.scm (hexchat): Rename 'bootstrap' to 'copy-intltool-makefile'; remove "autoreconf" invocation and move before 'bootstrap'. (libmesode): Remove 'arguments'. (libstrophe): Likewise. * gnu/packages/microcom.scm (microcom): Likewise. * gnu/packages/networking.scm (libnet): Remove 'bootstrap. * gnu/packages/onc-rpc.scm (libnsl): Remove 'arguments'. * gnu/packages/package-management.scm (guix): Replace 'bootstrap. * gnu/packages/sawfish.scm (librep): Remove 'arguments'. * gnu/packages/version-control.scm (findnewest): Likewise. * gnu/packages/video.scm (liba52, handbrake, motion): Replace 'bootstrap. * gnu/packages/web.scm (fcgiwrap): Remove #:phases. (tidy): Replace 'bootstrap. (gumbo-parser): Remove #:phases. * gnu/packages/wget.scm (wget2): Replace 'bootstrap. * gnu/packages/wm.scm (i3lock-color): Remove #:phases. * gnu/packages/xdisorg.scm (xclip): Likewise. * gnu/packages/xml.scm (libxls): Replace 'bootstrap'. * gnu/packages/xorg.scm (xf86-video-freedreno) (xf86-video-intel): Remove #:phases. * gnu/packages/zile.scm (zile-on-guile): Replace 'bootstrap.
2016-01-19build-system/haskell: Fix package.conf parsing.Eric Bavier
* guix/build/haskell-build-system.scm (register)[conf-depends]: Properly react to EOF while reading GHC package conf files.
2015-12-12Merge branch 'master' into core-updatesLudovic Courtès
2015-10-29gnu: ghc: Add GHC_PACKAGE_PATH native search path.Eric Bavier
Benefits include: 'guix environment' more useful for ghc libraries, more useful 'guix package --search-paths' for installed ghc libraries, cleaner package recipes: no longer need to propagate runtime package dependencies. * guix/build/haskell-build-system.scm (configure): Unset GHC_PACKAGE_PATH around cabal configure. (make-ghc-package-database): Use pattern directory search. (register): Install complete package database for the current package. * gnu/packages/haskell.scm (ghc): Add native-search-paths field.
2015-10-26build-system/haskell: CONFIG_SHELL env variable.Paul van der Walt
For Cabal packages with "build-type: Configure", a configure shell script is run to set up build parameters. These scripts need the CONFIG_SHELL environment variable to be set to function properly. * guix/build/haskell-build-system.scm (configure): Set CONFIG_SHELL if necessary.
2015-06-11build-system/haskell: install config for any package that creates it.Eric Bavier
A Cabal package is allowed to declare an "empty" library, in an otherwise executable-only package, for the purpose of allowing Cabal to use it as a dependency for other packages. See e.g. hspec-discover. * guix/build/haskell-build-system.scm (register): Unconditionally call setup script with "register", and install any config file generated.
2015-04-16build-system/haskell: Adjust to new 'modify-phases' syntax.Ludovic Courtès
* guix/build/haskell-build-system.scm (%standard-phases): Add missing quotes, as needed since commit f8503e2.
2015-04-08build-system/haskell: Update configure flags, 'haddock' and %standard-phases.Federico Beffa
* guix/build/haskell-build-system.scm (%standard-phases): move 'haddock phase before 'install phase. * guix/build/haskell-build-system.scm (haddock): Simplify it as the 'install phase takes care of copying files. * guix/build/haskell-build-system.scm (configure): Add '--libsubdir' flag. Fix use of '--extra-include-dirs' and '--extra-lib-dirs' flags. Use 'doc', 'bin' and 'lib' outputs if they are defined. * guix/build/haskell-build-system.scm (make-ghc-package-database, register): Aligh location of 'package.conf.d' directory with '--libsubdir' flag.
2015-04-04build-system: Add haskell-build-system.Federico Beffa
* guix/build-system/haskell.scm: New file. * guix/build/haskell-build-system.scm: New file. * doc/guix.texi: Add section on 'haskell-build-system'.