diff --git a/nixos/modules/services/misc/gitit.nix b/nixos/modules/services/misc/gitit.nix index ceb186c0f049..87dd97166b8e 100644 --- a/nixos/modules/services/misc/gitit.nix +++ b/nixos/modules/services/misc/gitit.nix @@ -10,7 +10,7 @@ let toYesNo = b: if b then "yes" else "no"; - gititShared = with cfg.haskellPackages; gitit + "/share/" + pkgs.stdenv.hostPlatform.system + "-" + ghc.name + "/" + gitit.pname + "-" + gitit.version; + gititShared = with cfg.haskellPackages; gitit + "/share/" + ghc.targetPrefix + ghc.haskellCompilerName + "/" + gitit.pname + "-" + gitit.version; gititWithPkgs = hsPkgs: extras: hsPkgs.ghcWithPackages (self: with self; [ gitit ] ++ (extras self)); diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix index 0302ca2e54ce..54366201b1dd 100644 --- a/pkgs/development/haskell-modules/configuration-common.nix +++ b/pkgs/development/haskell-modules/configuration-common.nix @@ -619,7 +619,7 @@ self: super: { doCheck = false; # https://github.com/kazu-yamamoto/ghc-mod/issues/335 executableToolDepends = drv.executableToolDepends or [] ++ [pkgs.buildPackages.emacs]; postInstall = '' - local lispdir=( "$data/share/${self.ghc.name}/*/${drv.pname}-${drv.version}/elisp" ) + local lispdir=( "$data/share/${self.ghc.targetPrefix}${self.ghc.haskellCompilerName}/*/${drv.pname}-${drv.version}/elisp" ) make -C $lispdir mkdir -p $data/share/emacs/site-lisp ln -s "$lispdir/"*.el{,c} $data/share/emacs/site-lisp/ @@ -654,7 +654,7 @@ self: super: { # cannot easily byte-compile these files, unfortunately, because they # depend on a new version of haskell-mode that we don't have yet. postInstall = '' - local lispdir=( "$data/share/${self.ghc.name}/"*"/${drv.pname}-"*"/elisp" ) + local lispdir=( "$data/share/${self.ghc.targetPrefix}${self.ghc.haskellCompilerName}/"*"/${drv.pname}-"*"/elisp" ) mkdir -p $data/share/emacs ln -s $lispdir $data/share/emacs/site-lisp ''; @@ -665,7 +665,7 @@ self: super: { # We cannot easily byte-compile these files, unfortunately, because they # depend on a new version of haskell-mode that we don't have yet. postInstall = '' - local lispdir=( "$data/share/${self.ghc.name}/"*"/${drv.pname}-"*"/elisp" ) + local lispdir=( "$data/share/${self.ghc.targetPrefix}${self.ghc.haskellCompilerName}/"*"/${drv.pname}-"*"/elisp" ) mkdir -p $data/share/emacs ln -s $lispdir $data/share/emacs/site-lisp ''; diff --git a/pkgs/development/haskell-modules/generic-builder.nix b/pkgs/development/haskell-modules/generic-builder.nix index a9692b5a0f01..bc43c39676c8 100644 --- a/pkgs/development/haskell-modules/generic-builder.nix +++ b/pkgs/development/haskell-modules/generic-builder.nix @@ -196,13 +196,13 @@ let "--prefix=$out" "--libdir=\\$prefix/lib/\\$compiler" "--libsubdir=\\$abi/\\$libname" - (optionalString enableSeparateDataOutput "--datadir=$data/share/${ghc.name}") + (optionalString enableSeparateDataOutput "--datadir=$data/share/${ghcNameWithPrefix}") (optionalString enableSeparateDocOutput "--docdir=${docdir "$doc"}") ] ++ optionals stdenv.hasCC [ "--with-gcc=$CC" # Clang won't work without that extra information. ] ++ [ "--package-db=$packageConfDir" - (optionalString (enableSharedExecutables && stdenv.isLinux) "--ghc-option=-optl=-Wl,-rpath=$out/lib/${ghc.name}/${pname}-${version}") + (optionalString (enableSharedExecutables && stdenv.isLinux) "--ghc-option=-optl=-Wl,-rpath=$out/lib/${ghcNameWithPrefix}/${pname}-${version}") (optionalString (enableSharedExecutables && stdenv.isDarwin) "--ghc-option=-optl=-Wl,-headerpad_max_install_names") (optionalString enableParallelBuilding "--ghc-options=${parallelBuildingFlags}") (optionalString useCpphs "--with-cpphs=${cpphs}/bin/cpphs --ghc-options=-cpp --ghc-options=-pgmP${cpphs}/bin/cpphs --ghc-options=-optP--cpp") @@ -275,6 +275,8 @@ let ghcCommand' = if isGhcjs then "ghcjs" else "ghc"; ghcCommand = "${ghc.targetPrefix}${ghcCommand'}"; + ghcNameWithPrefix = "${ghc.targetPrefix}${ghc.haskellCompilerName}"; + nativeGhcCommand = "${nativeGhc.targetPrefix}ghc"; buildPkgDb = ghcName: packageConfDir: '' @@ -350,14 +352,14 @@ stdenv.mkDerivation ({ # pkgs* arrays defined in stdenv/setup.hs + '' for p in "''${pkgsBuildBuild[@]}" "''${pkgsBuildHost[@]}" "''${pkgsBuildTarget[@]}"; do - ${buildPkgDb nativeGhc.name "$setupPackageConfDir"} + ${buildPkgDb "${nativeGhcCommand}-${nativeGhc.version}" "$setupPackageConfDir"} done ${nativeGhcCommand}-pkg --${nativePackageDbFlag}="$setupPackageConfDir" recache '' # For normal components + '' for p in "''${pkgsHostHost[@]}" "''${pkgsHostTarget[@]}"; do - ${buildPkgDb ghc.name "$packageConfDir"} + ${buildPkgDb ghcNameWithPrefix "$packageConfDir"} if [ -d "$p/include" ]; then configureFlags+=" --extra-include-dirs=$p/include" fi @@ -494,7 +496,7 @@ stdenv.mkDerivation ({ # just the target specified; "install" will error here, since not all targets have been built. else '' ${setupCommand} copy ${buildTarget} - local packageConfDir="$out/lib/${ghc.name}/package.conf.d" + local packageConfDir="$out/lib/${ghcNameWithPrefix}/package.conf.d" local packageConfFile="$packageConfDir/${pname}-${version}.conf" mkdir -p "$packageConfDir" ${setupCommand} register --gen-pkg-config=$packageConfFile diff --git a/pkgs/development/haskell-modules/with-packages-wrapper.nix b/pkgs/development/haskell-modules/with-packages-wrapper.nix index 7c7add61679d..c478c875540d 100644 --- a/pkgs/development/haskell-modules/with-packages-wrapper.nix +++ b/pkgs/development/haskell-modules/with-packages-wrapper.nix @@ -51,7 +51,7 @@ let ghcCommand = "${ghc.targetPrefix}${ghcCommand'}"; ghcCommandCaps= lib.toUpper ghcCommand'; libDir = if isHaLVM then "$out/lib/HaLVM-${ghc.version}" - else "$out/lib/${ghcCommand}-${ghc.version}"; + else "$out/lib/${ghc.targetPrefix}${ghc.haskellCompilerName}"; docDir = "$out/share/doc/ghc/html"; packageCfgDir = "${libDir}/package.conf.d"; paths = lib.filter (x: x ? isHaskellLibrary) (lib.closePropagation packages); @@ -121,7 +121,7 @@ symlinkJoin { '' + (lib.optionalString (stdenv.targetPlatform.isDarwin && !isGhcjs && !stdenv.targetPlatform.isiOS) '' # Work around a linker limit in macOS Sierra (see generic-builder.nix): - local packageConfDir="$out/lib/${ghc.name}/package.conf.d"; + local packageConfDir="${packageCfgDir}"; local dynamicLinksDir="$out/lib/links" mkdir -p $dynamicLinksDir # Clean up the old links that may have been (transitively) included by @@ -148,8 +148,8 @@ symlinkJoin { # to another nix derivation, so they are not writable. Removing # them allow the correct behavior of ghc-pkg recache # See: https://github.com/NixOS/nixpkgs/issues/79441 - rm $out/lib/${ghc.name}/package.conf.d/package.cache.lock - rm $out/lib/${ghc.name}/package.conf.d/package.cache + rm ${packageCfgDir}/package.cache.lock + rm ${packageCfgDir}/package.cache $out/bin/${ghcCommand}-pkg recache ''}