mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-17 07:13:23 +01:00
Merge pull request #113263 from lopsided98/samba-cross
samba: fix cross-compilation
This commit is contained in:
commit
fe273ea648
6 changed files with 134 additions and 19 deletions
|
@ -81,6 +81,9 @@ stdenv.mkDerivation rec {
|
||||||
# asn1 compilers, move them to $dev
|
# asn1 compilers, move them to $dev
|
||||||
mv $out/libexec/heimdal/heimdal/* $dev/bin
|
mv $out/libexec/heimdal/heimdal/* $dev/bin
|
||||||
rmdir $out/libexec/heimdal/heimdal
|
rmdir $out/libexec/heimdal/heimdal
|
||||||
|
|
||||||
|
# compile_et is needed for cross-compiling this package and samba
|
||||||
|
mv lib/com_err/.libs/compile_et $dev/bin
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Issues with hydra
|
# Issues with hydra
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
, wafHook
|
, wafHook
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation (rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "talloc";
|
pname = "talloc";
|
||||||
version = "2.3.2";
|
version = "2.3.2";
|
||||||
|
|
||||||
|
@ -42,6 +42,11 @@ stdenv.mkDerivation (rec {
|
||||||
"--builtin-libraries=replace"
|
"--builtin-libraries=replace"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# 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
|
# this must not be exported before the ConfigurePhase otherwise waf whines
|
||||||
preBuild = lib.optionalString stdenv.hostPlatform.isMusl ''
|
preBuild = lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||||
export NIX_CFLAGS_LINK="-no-pie -shared";
|
export NIX_CFLAGS_LINK="-no-pie -shared";
|
||||||
|
@ -57,9 +62,4 @@ stdenv.mkDerivation (rec {
|
||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
platforms = platforms.all;
|
platforms = platforms.all;
|
||||||
};
|
};
|
||||||
} // lib.optionalAttrs (stdenv.hostPlatform != stdenv.buildPlatform) {
|
}
|
||||||
# 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 when cross-compiling.
|
|
||||||
PYTHON_CONFIG = "/invalid";
|
|
||||||
})
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
python3
|
||||||
pkg-config
|
pkg-config
|
||||||
wafHook
|
wafHook
|
||||||
libxslt
|
libxslt
|
||||||
|
@ -38,6 +39,11 @@ stdenv.mkDerivation rec {
|
||||||
"--builtin-libraries=replace"
|
"--builtin-libraries=replace"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# 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";
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "The trivial database";
|
description = "The trivial database";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
{ lib, stdenv
|
{ lib, stdenv
|
||||||
|
, buildPackages
|
||||||
, fetchurl
|
, fetchurl
|
||||||
, python
|
, python3
|
||||||
|
, wafHook
|
||||||
, pkg-config
|
, pkg-config
|
||||||
, bison
|
, bison
|
||||||
, flex
|
, flex
|
||||||
, perl
|
, perl
|
||||||
, libxslt
|
, libxslt
|
||||||
|
, heimdal
|
||||||
, docbook_xsl
|
, docbook_xsl
|
||||||
, rpcgen
|
|
||||||
, fixDarwinDylibNames
|
, fixDarwinDylibNames
|
||||||
, docbook_xml_dtd_45
|
, docbook_xml_dtd_45
|
||||||
, readline
|
, readline
|
||||||
|
@ -17,7 +19,6 @@
|
||||||
, libarchive
|
, libarchive
|
||||||
, zlib
|
, zlib
|
||||||
, liburing
|
, liburing
|
||||||
, fam
|
|
||||||
, gnutls
|
, gnutls
|
||||||
, libunwind
|
, libunwind
|
||||||
, systemd
|
, systemd
|
||||||
|
@ -59,26 +60,30 @@ stdenv.mkDerivation rec {
|
||||||
./patch-source3__libads__kerberos_keytab.c.patch
|
./patch-source3__libads__kerberos_keytab.c.patch
|
||||||
./4.x-no-persistent-install-dynconfig.patch
|
./4.x-no-persistent-install-dynconfig.patch
|
||||||
./4.x-fix-makeflags-parsing.patch
|
./4.x-fix-makeflags-parsing.patch
|
||||||
|
./build-find-pre-built-heimdal-build-tools-in-case-of-.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
python3
|
||||||
|
wafHook
|
||||||
pkg-config
|
pkg-config
|
||||||
bison
|
bison
|
||||||
flex
|
flex
|
||||||
perl
|
perl
|
||||||
perl.pkgs.ParseYapp
|
perl.pkgs.ParseYapp
|
||||||
libxslt
|
libxslt
|
||||||
|
buildPackages.stdenv.cc
|
||||||
|
heimdal
|
||||||
docbook_xsl
|
docbook_xsl
|
||||||
docbook_xml_dtd_45
|
docbook_xml_dtd_45
|
||||||
cmocka
|
cmocka
|
||||||
rpcsvc-proto
|
rpcsvc-proto
|
||||||
] ++ optionals stdenv.isDarwin [
|
] ++ optionals stdenv.isDarwin [
|
||||||
rpcgen
|
|
||||||
fixDarwinDylibNames
|
fixDarwinDylibNames
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
python
|
python3
|
||||||
readline
|
readline
|
||||||
popt
|
popt
|
||||||
dbus
|
dbus
|
||||||
|
@ -86,7 +91,6 @@ stdenv.mkDerivation rec {
|
||||||
libbsd
|
libbsd
|
||||||
libarchive
|
libarchive
|
||||||
zlib
|
zlib
|
||||||
fam
|
|
||||||
libunwind
|
libunwind
|
||||||
gnutls
|
gnutls
|
||||||
libtasn1
|
libtasn1
|
||||||
|
@ -102,6 +106,8 @@ stdenv.mkDerivation rec {
|
||||||
++ optional enableAcl acl
|
++ optional enableAcl acl
|
||||||
++ optional enablePam pam;
|
++ optional enablePam pam;
|
||||||
|
|
||||||
|
wafPath = "buildtools/bin/waf";
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
# Removes absolute paths in scripts
|
# Removes absolute paths in scripts
|
||||||
sed -i 's,/sbin/,,g' ctdb/config/functions
|
sed -i 's,/sbin/,,g' ctdb/config/functions
|
||||||
|
@ -112,7 +118,11 @@ stdenv.mkDerivation rec {
|
||||||
patchShebangs ./buildtools/bin
|
patchShebangs ./buildtools/bin
|
||||||
'';
|
'';
|
||||||
|
|
||||||
configureFlags = [
|
preConfigure = ''
|
||||||
|
export PKGCONFIG="$PKG_CONFIG"
|
||||||
|
'';
|
||||||
|
|
||||||
|
wafConfigureFlags = [
|
||||||
"--with-static-modules=NONE"
|
"--with-static-modules=NONE"
|
||||||
"--with-shared-modules=ALL"
|
"--with-shared-modules=ALL"
|
||||||
"--enable-fhs"
|
"--enable-fhs"
|
||||||
|
@ -126,7 +136,15 @@ stdenv.mkDerivation rec {
|
||||||
"--without-ads"
|
"--without-ads"
|
||||||
] ++ optional enableProfiling "--with-profiling-data"
|
] ++ optional enableProfiling "--with-profiling-data"
|
||||||
++ optional (!enableAcl) "--without-acl-support"
|
++ optional (!enableAcl) "--without-acl-support"
|
||||||
++ optional (!enablePam) "--without-pam";
|
++ optional (!enablePam) "--without-pam"
|
||||||
|
++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||||
|
"--bundled-libraries=!asn1_compile,!compile_et"
|
||||||
|
];
|
||||||
|
|
||||||
|
# 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";
|
||||||
|
|
||||||
preBuild = ''
|
preBuild = ''
|
||||||
export MAKEFLAGS="-j $NIX_BUILD_CORES"
|
export MAKEFLAGS="-j $NIX_BUILD_CORES"
|
||||||
|
@ -146,6 +164,10 @@ stdenv.mkDerivation rec {
|
||||||
patchelf --shrink-rpath "\$BIN";
|
patchelf --shrink-rpath "\$BIN";
|
||||||
EOF
|
EOF
|
||||||
find $out -type f -name \*.so -exec $SHELL -c "$SCRIPT" \;
|
find $out -type f -name \*.so -exec $SHELL -c "$SCRIPT" \;
|
||||||
|
|
||||||
|
# Samba does its own shebang patching, but uses build Python
|
||||||
|
find "$out/bin" -type f -executable -exec \
|
||||||
|
sed -i '1 s^#!${python3.pythonForBuild}/bin/python.*^#!${python3.interpreter}^' {} \;
|
||||||
'';
|
'';
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
From e002d2ef2688d5433d2bd03aa4d77a0ec5ac4e63 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Uri Simchoni <uri@samba.org>
|
||||||
|
Date: Sun, 20 Oct 2019 00:03:14 +0300
|
||||||
|
Subject: [PATCH] build: find pre-built heimdal build tools in case of embedded
|
||||||
|
heimdal
|
||||||
|
|
||||||
|
This patch fixes the case of finding asn1_compile and compile_et for
|
||||||
|
building embedded heimdal, by setting
|
||||||
|
--bundled-libraries='!asn1_compile,!compile_et' as configure flags.
|
||||||
|
|
||||||
|
The Heimdal build tools compile_et and asn1_compile are needed *only*
|
||||||
|
if we use the embedded heimdal (otherwise we don't build heimdal and
|
||||||
|
use headers that have been generated by those tools elsewhere).
|
||||||
|
|
||||||
|
For cross-compilation with embedded heimdal, it is vital to use host build
|
||||||
|
tools, and so asn1_compile and compile_et must be supplied and not
|
||||||
|
built. One way of doing this would be to set the COMPILE_ET and
|
||||||
|
ASN1_COMPILE env vars to the location of supplied binaries. Another way,
|
||||||
|
which is more commonly used, is to exclude asn1_compile and compile_et
|
||||||
|
from bundled packages via the switch
|
||||||
|
-bundled-libraries='!asn1_compile,!compile_et'. When this is done,
|
||||||
|
the build script searches the path for those tools and sets the
|
||||||
|
ASN1_COMPILE and COMPILE_ET vars accordingly. (this is admittedly
|
||||||
|
kind of a round-about way of doing things but this has become the
|
||||||
|
de-facto standard amongst embedded distro builders).
|
||||||
|
|
||||||
|
In commit 8061983d4882f3ba3f12da71443b035d7b672eec, this process of
|
||||||
|
finding the binaris has been moved to be carried out only in the
|
||||||
|
system heimdal case. As explained above, we only need these tools,
|
||||||
|
and hence the check, in bundled mode.
|
||||||
|
|
||||||
|
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14164
|
||||||
|
|
||||||
|
Signed-off-by: Uri Simchoni <uri@samba.org>
|
||||||
|
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
||||||
|
[Bernd: rebased for version 4.11.13]
|
||||||
|
---
|
||||||
|
wscript_configure_embedded_heimdal | 11 +++++++++++
|
||||||
|
wscript_configure_system_heimdal | 11 -----------
|
||||||
|
2 files changed, 11 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/wscript_configure_embedded_heimdal b/wscript_configure_embedded_heimdal
|
||||||
|
index 8c55ae2a938..4fdae8062c5 100644
|
||||||
|
--- a/wscript_configure_embedded_heimdal
|
||||||
|
+++ b/wscript_configure_embedded_heimdal
|
||||||
|
@@ -1 +1,12 @@
|
||||||
|
conf.RECURSE('source4/heimdal_build')
|
||||||
|
+
|
||||||
|
+def check_system_heimdal_binary(name):
|
||||||
|
+ if conf.LIB_MAY_BE_BUNDLED(name):
|
||||||
|
+ return False
|
||||||
|
+ if not conf.find_program(name, var=name.upper()):
|
||||||
|
+ return False
|
||||||
|
+ conf.define('USING_SYSTEM_%s' % name.upper(), 1)
|
||||||
|
+ return True
|
||||||
|
+
|
||||||
|
+check_system_heimdal_binary("compile_et")
|
||||||
|
+check_system_heimdal_binary("asn1_compile")
|
||||||
|
diff --git a/wscript_configure_system_heimdal b/wscript_configure_system_heimdal
|
||||||
|
index 0ff6dad2f55..f77c177442f 100644
|
||||||
|
--- a/wscript_configure_system_heimdal
|
||||||
|
+++ b/wscript_configure_system_heimdal
|
||||||
|
@@ -37,14 +37,6 @@ def check_system_heimdal_lib(name, functions='', headers='', onlyif=None):
|
||||||
|
conf.define('USING_SYSTEM_%s' % name.upper(), 1)
|
||||||
|
return True
|
||||||
|
|
||||||
|
-def check_system_heimdal_binary(name):
|
||||||
|
- if conf.LIB_MAY_BE_BUNDLED(name):
|
||||||
|
- return False
|
||||||
|
- if not conf.find_program(name, var=name.upper()):
|
||||||
|
- return False
|
||||||
|
- conf.define('USING_SYSTEM_%s' % name.upper(), 1)
|
||||||
|
- return True
|
||||||
|
-
|
||||||
|
check_system_heimdal_lib("com_err", "com_right_r com_err", "com_err.h")
|
||||||
|
|
||||||
|
if check_system_heimdal_lib("roken", "rk_socket_set_reuseaddr", "roken.h"):
|
||||||
|
@@ -96,7 +96,4 @@
|
||||||
|
#if conf.CHECK_BUNDLED_SYSTEM('tommath', checkfunctions='mp_init', headers='tommath.h'):
|
||||||
|
# conf.define('USING_SYSTEM_TOMMATH', 1)
|
||||||
|
|
||||||
|
-check_system_heimdal_binary("compile_et")
|
||||||
|
-check_system_heimdal_binary("asn1_compile")
|
||||||
|
-
|
||||||
|
conf.define('USING_SYSTEM_KRB5', 1)
|
||||||
|
--
|
||||||
|
2.20.1
|
|
@ -20293,10 +20293,7 @@ in
|
||||||
|
|
||||||
deadpixi-sam-unstable = callPackage ../applications/editors/deadpixi-sam { };
|
deadpixi-sam-unstable = callPackage ../applications/editors/deadpixi-sam { };
|
||||||
|
|
||||||
samba4 = callPackage ../servers/samba/4.x.nix {
|
samba4 = callPackage ../servers/samba/4.x.nix { };
|
||||||
rpcgen = netbsd.rpcgen;
|
|
||||||
python = python3;
|
|
||||||
};
|
|
||||||
|
|
||||||
samba = samba4;
|
samba = samba4;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue