Skip to main content

3 posts tagged with "nix"

View All Tags

· 2 min read

Changes

  • To cross compile Haskell code for windows a wine process must be used to evaluate Template Haskell code at compile time. Some times this code needs DLLs to be present for the Template Haskell code to run. We had been maintaining a list of DLLs manually (#1400 for instance added secp256k1). A more general solution (#1405) was found that uses the pkgsHostTarget environment variable to obtain a list of all the packages dependencies. Then the DLLs from the are made available to the wine process running the Template Haskell code. This should make more libraries build correctly while reducing unnecessary dependencies.
  • The way Haskell.nix cleans source trees has changed with #1403, #1409 and #1418. When using Nix >=2.4 source in the store is now filtered in the same way it is locally. This has a couple of key advantages:
    • It makes it less likely that results on CI systems (where the source is likely to be in the store) will differ from results for local builds (where the source is in a cloned git repository).
    • Potential for reducing load on CI. Although more work may be needed, this kind of filtering combined with the experimental content addressing features of Nix reduce the required rebuilds.
  • In the past rather cryptic error messages were given when an attempt was made to use an old version of GHC on a platform Haskell.nix did not support it. In some cases Haskell.nix would even attempt to build GHC and only fail after some time. Better error messages are now given right away when an attempt is made to use a GHC version that is not supported for a particular platform #1411

Version Updates

  • GHC 9.2.2 was added #1394

Bug fixes

  • gitMinimal replaces git to reduce the dependency tree of cabalProject functions #1387
  • Less used of allowSubstitutes=false #1389
  • Fixed aarch64-linux builds by using correct boot compiler #1390
  • icu-i18n package mapping added to make text-icu build #1395
  • Fixes needed for newer nixpkgs versions
    • Use list for configureFlags #1396
    • The spdx json file is in a .json output #1397
    • gdk_pixbuf is now gdk-pixbuf #1398
  • Replaced deprecated NixOS binary cache settings in docs #1410
  • Enable static build of secp256k1 on musl #1413

Finally, we’d like to thank all the awesome contributors, who make haskell.nix a thriving open source project! ❤️

· 2 min read

Documentation

Changes

  • Support for external Hackage repositories was improved by #1370. We can now use an extra package repository just by adding a repository block to the cabal.project file. This makes it easy to make use of an extra hackage databases such as hackage.head and hackage-overlay-ghcjs. A sha256 for the repository it can be added as a comment in the repository block or by including it in the sha256map argument.

Version Updates

  • nix-tools was updated to use the Cabal 3.6.2 and hnix 0.16 nix-tools#113
  • Nixpkgs pins were bumped #1371
  • Update booting on aarch64 linux to ghc 8.8.4 1325 and 1374

Bug fixes

  • Allow linking pcre statically with musl #1363
  • Add gpiod to system nixpkgs map #1359
  • Add poppler-cpp to png-config Nixpkgs map #1373
  • Use the same logic that cabal-install uses for determining the path of a packages .tar.gz in a repository nix-tools#114
  • Fix libnuma dependency in rts.conf 1342
  • Fix when "materialized" dir is deep #1376
  • Prefer local building for git-ls-files #1378 and #1381
  • Fix stack cache generator sha256 is a string not a lambda #1383
  • Only pass --index-state to cabal when asked #1384
  • Pass enableDWARF to makeConfigFiles to fix -g3 support in nix-shell #1385

Finally, we’d like to thank all the awesome contributors, who make haskell.nix a thriving open source project! ❤️

· 2 min read

January 2022

This month we merged some very significant improvements to the support for compiling for Android and iOS based AArch64 devices.  When the build system is also AArch64 template haskell can often be run locally.  This will make targeting mobile devices from AArch64 builders much easier.

A long running branch containing bug fixes for cross compilation to JavaScript with GHCJS was merged.  One nice feature included is better support for adding bindings to C code compiled with emscripten.  In some cases it can be as easy as adding a single JavaScript file to the package with wrappers for the C functions.

Changes

  • Much improved AArch64 support including Template Haskell (#1316)
  • Improved GHCJS and support for calling C code compiled with emscripten (#1311)
  • The environment variables LANG and LOCALE_ARCHIVE are no longer set in shells allowing the users prefered settings to persist (#1341).
  • source-repo-override argument added for cabal projects to allow the location of source-repository-package packages to be replaced (#1354)

Version Updates

  • GHC 9.0.2 was added to the available GHC versions (#1338)
  • The nixpkgs pins for 21.05, 21.11 and unstable were all updated (#1334).
  • Remaining uses of cabal 3.4 were updated to 3.6.2 (#1328)

Bug fixes

  • Dwarf build of ghc 9.2.1 now skipped on hydra to work around 4GB hydra limit (#1333)
  • Removed use of propagatedBuildInputs in ghc derivation (#1318).
  • Caching of the check-hydra CI script was fixed (#1340)