mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-09 05:33:25 +00:00
![Alyssa Ross](/assets/img/avatar_default.png)
These flags are not part of waf, they're custom flags that are not widely implemented. More packages are broken because of these flags being added than actually recognise them. Of the packages in Nixpkgs that directly depend on wafHook that we can attempt to cross compile (i.e. all their dependencies cross compile), 5 already successfully cross compile and recognise these flags, 2 already successfully cross compile because they have been opted out of these flags, 3 don't cross compile successfully for reasons unrelated to these flags, and for the remaining 7, the only thing stopping them cross compiling successfully is that they are being passed these flags that they don't recognise. All of the five successfully cross-compiling packages that do recognise these flags are samba projects: ldb, talloc, tdb, tevent, and samba4. So this isn't a general waf convention, just a samba one. It therefore doesn't make sense to set these flags by default. They should just be included in the expressions for each samba project, like all the other quirks common to samba build systems. This change fixes cross compilation of the following packages: blockhash ganv ndn-cxx mda_lv2 pflask raul saldl
81 lines
1.9 KiB
Nix
81 lines
1.9 KiB
Nix
{ lib, stdenv
|
|
, fetchurl
|
|
, python3
|
|
, pkg-config
|
|
, readline
|
|
, libxslt
|
|
, libxcrypt
|
|
, docbook-xsl-nons
|
|
, docbook_xml_dtd_42
|
|
, fixDarwinDylibNames
|
|
, wafHook
|
|
, buildPackages
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "talloc";
|
|
version = "2.4.2";
|
|
|
|
src = fetchurl {
|
|
url = "mirror://samba/talloc/${pname}-${version}.tar.gz";
|
|
sha256 = "sha256-hez55GXiD5j5lQpS6aQR4UMgvFVfolfYdpe356mx2KY=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
pkg-config
|
|
python3
|
|
wafHook
|
|
docbook-xsl-nons
|
|
docbook_xml_dtd_42
|
|
] ++ lib.optionals stdenv.isDarwin [
|
|
fixDarwinDylibNames
|
|
];
|
|
|
|
buildInputs = [
|
|
python3
|
|
readline
|
|
libxslt
|
|
libxcrypt
|
|
];
|
|
|
|
# otherwise the configure script fails with
|
|
# PYTHONHASHSEED=1 missing! Don't use waf directly, use ./configure and make!
|
|
preConfigure = ''
|
|
export PKGCONFIG="$PKG_CONFIG"
|
|
export PYTHONHASHSEED=1
|
|
'';
|
|
|
|
wafPath = "buildtools/bin/waf";
|
|
|
|
wafConfigureFlags = [
|
|
"--enable-talloc-compat1"
|
|
"--bundled-libraries=NONE"
|
|
"--builtin-libraries=replace"
|
|
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
|
"--cross-compile"
|
|
"--cross-execute=${stdenv.hostPlatform.emulator buildPackages}"
|
|
];
|
|
|
|
# python-config from build Python gives incorrect values when cross-compiling.
|
|
# If python-config is not found, the build falls back to using the sysconfig
|
|
# module, which works correctly in all cases.
|
|
PYTHON_CONFIG = "/invalid";
|
|
|
|
# this must not be exported before the ConfigurePhase otherwise waf whines
|
|
preBuild = lib.optionalString stdenv.hostPlatform.isMusl ''
|
|
export NIX_CFLAGS_LINK="-no-pie -shared";
|
|
'';
|
|
|
|
postInstall = ''
|
|
${stdenv.cc.targetPrefix}ar q $out/lib/libtalloc.a bin/default/talloc.c.[0-9]*.o
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "Hierarchical pool based memory allocator with destructors";
|
|
homepage = "https://tdb.samba.org/";
|
|
license = licenses.gpl3;
|
|
platforms = platforms.all;
|
|
maintainers = [ maintainers.matthiasbeyer ];
|
|
};
|
|
}
|