mandoc: support cross as far as possible
mandoc can't be cross compiled easily since all configure checks rely on executing a binary built using $CC. We can however still do “native” cross compilation like pkgsStatic and pkgsLLVM. To facilitate this, the following changes are required: * Set the correct AR to use in configure.local * Inform users that cross compilation will fail via a throw if the build platform can't execute the host platform's binaries.
This commit is contained in:
parent
35e8d91d92
commit
a43f48b710
@ -1,6 +1,12 @@
|
|||||||
{ lib, stdenv, fetchurl, zlib, perl }:
|
{ lib, stdenv, fetchurl, zlib, perl }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
# check if we can execute binaries for the host platform on the build platform
|
||||||
|
# even though the platforms aren't the same. mandoc can't be cross compiled
|
||||||
|
# (easily) because of its configurePhase, but we want to allow “native” cross
|
||||||
|
# such as pkgsLLVM and pkgsStatic.
|
||||||
|
executableCross = stdenv.hostPlatform.isCompatible stdenv.buildPlatform;
|
||||||
|
|
||||||
# Name of an UTF-8 locale _always_ present at runtime, used for UTF-8 support
|
# Name of an UTF-8 locale _always_ present at runtime, used for UTF-8 support
|
||||||
# (locale set by the user may differ). This would usually be C.UTF-8, but
|
# (locale set by the user may differ). This would usually be C.UTF-8, but
|
||||||
# darwin has no such locale.
|
# darwin has no such locale.
|
||||||
@ -10,6 +16,9 @@ let
|
|||||||
else "C.UTF-8";
|
else "C.UTF-8";
|
||||||
in
|
in
|
||||||
|
|
||||||
|
assert executableCross ||
|
||||||
|
throw "mandoc relies on executing compiled programs in configurePhase, can't cross compile";
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "mandoc";
|
pname = "mandoc";
|
||||||
version = "1.14.6";
|
version = "1.14.6";
|
||||||
@ -27,6 +36,7 @@ stdenv.mkDerivation rec {
|
|||||||
PREFIX="$out"
|
PREFIX="$out"
|
||||||
LD_OHASH="-lutil"
|
LD_OHASH="-lutil"
|
||||||
CC=${stdenv.cc.targetPrefix}cc
|
CC=${stdenv.cc.targetPrefix}cc
|
||||||
|
AR=${stdenv.cc.bintools.targetPrefix}ar
|
||||||
# Bypass the locale(1)-based check for UTF-8 support since it causes trouble:
|
# Bypass the locale(1)-based check for UTF-8 support since it causes trouble:
|
||||||
# * We only have meaningful locale(1) implementations for glibc and macOS
|
# * We only have meaningful locale(1) implementations for glibc and macOS
|
||||||
# * NetBSD's locale(1) (used for macOS) depends on mandoc
|
# * NetBSD's locale(1) (used for macOS) depends on mandoc
|
||||||
@ -40,7 +50,7 @@ stdenv.mkDerivation rec {
|
|||||||
printf '%s' "$configureLocal" > configure.local
|
printf '%s' "$configureLocal" > configure.local
|
||||||
'';
|
'';
|
||||||
|
|
||||||
doCheck = stdenv.hostPlatform == stdenv.buildPlatform;
|
doCheck = executableCross;
|
||||||
checkTarget = "regress";
|
checkTarget = "regress";
|
||||||
checkInputs = [ perl ];
|
checkInputs = [ perl ];
|
||||||
preCheck = "patchShebangs --build regress/regress.pl";
|
preCheck = "patchShebangs --build regress/regress.pl";
|
||||||
|
Loading…
Reference in New Issue
Block a user