Merge pull request #166548 from sternenseemann/fix-ghclibdir-computation
[haskell-updates] ghcWithPackages: fix ghclibdir computation with variantSuffix
This commit is contained in:
commit
103d171526
4 changed files with 15 additions and 13 deletions
|
@ -10,7 +10,7 @@ let
|
||||||
|
|
||||||
toYesNo = b: if b then "yes" else "no";
|
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));
|
gititWithPkgs = hsPkgs: extras: hsPkgs.ghcWithPackages (self: with self; [ gitit ] ++ (extras self));
|
||||||
|
|
||||||
|
|
|
@ -619,7 +619,7 @@ self: super: {
|
||||||
doCheck = false; # https://github.com/kazu-yamamoto/ghc-mod/issues/335
|
doCheck = false; # https://github.com/kazu-yamamoto/ghc-mod/issues/335
|
||||||
executableToolDepends = drv.executableToolDepends or [] ++ [pkgs.buildPackages.emacs];
|
executableToolDepends = drv.executableToolDepends or [] ++ [pkgs.buildPackages.emacs];
|
||||||
postInstall = ''
|
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
|
make -C $lispdir
|
||||||
mkdir -p $data/share/emacs/site-lisp
|
mkdir -p $data/share/emacs/site-lisp
|
||||||
ln -s "$lispdir/"*.el{,c} $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
|
# cannot easily byte-compile these files, unfortunately, because they
|
||||||
# depend on a new version of haskell-mode that we don't have yet.
|
# depend on a new version of haskell-mode that we don't have yet.
|
||||||
postInstall = ''
|
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
|
mkdir -p $data/share/emacs
|
||||||
ln -s $lispdir $data/share/emacs/site-lisp
|
ln -s $lispdir $data/share/emacs/site-lisp
|
||||||
'';
|
'';
|
||||||
|
@ -665,7 +665,7 @@ self: super: {
|
||||||
# We cannot easily byte-compile these files, unfortunately, because they
|
# We cannot easily byte-compile these files, unfortunately, because they
|
||||||
# depend on a new version of haskell-mode that we don't have yet.
|
# depend on a new version of haskell-mode that we don't have yet.
|
||||||
postInstall = ''
|
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
|
mkdir -p $data/share/emacs
|
||||||
ln -s $lispdir $data/share/emacs/site-lisp
|
ln -s $lispdir $data/share/emacs/site-lisp
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -196,13 +196,13 @@ let
|
||||||
"--prefix=$out"
|
"--prefix=$out"
|
||||||
"--libdir=\\$prefix/lib/\\$compiler"
|
"--libdir=\\$prefix/lib/\\$compiler"
|
||||||
"--libsubdir=\\$abi/\\$libname"
|
"--libsubdir=\\$abi/\\$libname"
|
||||||
(optionalString enableSeparateDataOutput "--datadir=$data/share/${ghc.name}")
|
(optionalString enableSeparateDataOutput "--datadir=$data/share/${ghcNameWithPrefix}")
|
||||||
(optionalString enableSeparateDocOutput "--docdir=${docdir "$doc"}")
|
(optionalString enableSeparateDocOutput "--docdir=${docdir "$doc"}")
|
||||||
] ++ optionals stdenv.hasCC [
|
] ++ optionals stdenv.hasCC [
|
||||||
"--with-gcc=$CC" # Clang won't work without that extra information.
|
"--with-gcc=$CC" # Clang won't work without that extra information.
|
||||||
] ++ [
|
] ++ [
|
||||||
"--package-db=$packageConfDir"
|
"--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 (enableSharedExecutables && stdenv.isDarwin) "--ghc-option=-optl=-Wl,-headerpad_max_install_names")
|
||||||
(optionalString enableParallelBuilding "--ghc-options=${parallelBuildingFlags}")
|
(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")
|
(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' = if isGhcjs then "ghcjs" else "ghc";
|
||||||
ghcCommand = "${ghc.targetPrefix}${ghcCommand'}";
|
ghcCommand = "${ghc.targetPrefix}${ghcCommand'}";
|
||||||
|
|
||||||
|
ghcNameWithPrefix = "${ghc.targetPrefix}${ghc.haskellCompilerName}";
|
||||||
|
|
||||||
nativeGhcCommand = "${nativeGhc.targetPrefix}ghc";
|
nativeGhcCommand = "${nativeGhc.targetPrefix}ghc";
|
||||||
|
|
||||||
buildPkgDb = ghcName: packageConfDir: ''
|
buildPkgDb = ghcName: packageConfDir: ''
|
||||||
|
@ -350,14 +352,14 @@ stdenv.mkDerivation ({
|
||||||
# pkgs* arrays defined in stdenv/setup.hs
|
# pkgs* arrays defined in stdenv/setup.hs
|
||||||
+ ''
|
+ ''
|
||||||
for p in "''${pkgsBuildBuild[@]}" "''${pkgsBuildHost[@]}" "''${pkgsBuildTarget[@]}"; do
|
for p in "''${pkgsBuildBuild[@]}" "''${pkgsBuildHost[@]}" "''${pkgsBuildTarget[@]}"; do
|
||||||
${buildPkgDb nativeGhc.name "$setupPackageConfDir"}
|
${buildPkgDb "${nativeGhcCommand}-${nativeGhc.version}" "$setupPackageConfDir"}
|
||||||
done
|
done
|
||||||
${nativeGhcCommand}-pkg --${nativePackageDbFlag}="$setupPackageConfDir" recache
|
${nativeGhcCommand}-pkg --${nativePackageDbFlag}="$setupPackageConfDir" recache
|
||||||
''
|
''
|
||||||
# For normal components
|
# For normal components
|
||||||
+ ''
|
+ ''
|
||||||
for p in "''${pkgsHostHost[@]}" "''${pkgsHostTarget[@]}"; do
|
for p in "''${pkgsHostHost[@]}" "''${pkgsHostTarget[@]}"; do
|
||||||
${buildPkgDb ghc.name "$packageConfDir"}
|
${buildPkgDb ghcNameWithPrefix "$packageConfDir"}
|
||||||
if [ -d "$p/include" ]; then
|
if [ -d "$p/include" ]; then
|
||||||
configureFlags+=" --extra-include-dirs=$p/include"
|
configureFlags+=" --extra-include-dirs=$p/include"
|
||||||
fi
|
fi
|
||||||
|
@ -494,7 +496,7 @@ stdenv.mkDerivation ({
|
||||||
# just the target specified; "install" will error here, since not all targets have been built.
|
# just the target specified; "install" will error here, since not all targets have been built.
|
||||||
else ''
|
else ''
|
||||||
${setupCommand} copy ${buildTarget}
|
${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"
|
local packageConfFile="$packageConfDir/${pname}-${version}.conf"
|
||||||
mkdir -p "$packageConfDir"
|
mkdir -p "$packageConfDir"
|
||||||
${setupCommand} register --gen-pkg-config=$packageConfFile
|
${setupCommand} register --gen-pkg-config=$packageConfFile
|
||||||
|
|
|
@ -51,7 +51,7 @@ let
|
||||||
ghcCommand = "${ghc.targetPrefix}${ghcCommand'}";
|
ghcCommand = "${ghc.targetPrefix}${ghcCommand'}";
|
||||||
ghcCommandCaps= lib.toUpper ghcCommand';
|
ghcCommandCaps= lib.toUpper ghcCommand';
|
||||||
libDir = if isHaLVM then "$out/lib/HaLVM-${ghc.version}"
|
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";
|
docDir = "$out/share/doc/ghc/html";
|
||||||
packageCfgDir = "${libDir}/package.conf.d";
|
packageCfgDir = "${libDir}/package.conf.d";
|
||||||
paths = lib.filter (x: x ? isHaskellLibrary) (lib.closePropagation packages);
|
paths = lib.filter (x: x ? isHaskellLibrary) (lib.closePropagation packages);
|
||||||
|
@ -121,7 +121,7 @@ symlinkJoin {
|
||||||
|
|
||||||
'' + (lib.optionalString (stdenv.targetPlatform.isDarwin && !isGhcjs && !stdenv.targetPlatform.isiOS) ''
|
'' + (lib.optionalString (stdenv.targetPlatform.isDarwin && !isGhcjs && !stdenv.targetPlatform.isiOS) ''
|
||||||
# Work around a linker limit in macOS Sierra (see generic-builder.nix):
|
# 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"
|
local dynamicLinksDir="$out/lib/links"
|
||||||
mkdir -p $dynamicLinksDir
|
mkdir -p $dynamicLinksDir
|
||||||
# Clean up the old links that may have been (transitively) included by
|
# 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
|
# to another nix derivation, so they are not writable. Removing
|
||||||
# them allow the correct behavior of ghc-pkg recache
|
# them allow the correct behavior of ghc-pkg recache
|
||||||
# See: https://github.com/NixOS/nixpkgs/issues/79441
|
# See: https://github.com/NixOS/nixpkgs/issues/79441
|
||||||
rm $out/lib/${ghc.name}/package.conf.d/package.cache.lock
|
rm ${packageCfgDir}/package.cache.lock
|
||||||
rm $out/lib/${ghc.name}/package.conf.d/package.cache
|
rm ${packageCfgDir}/package.cache
|
||||||
|
|
||||||
$out/bin/${ghcCommand}-pkg recache
|
$out/bin/${ghcCommand}-pkg recache
|
||||||
''}
|
''}
|
||||||
|
|
Loading…
Reference in a new issue