nixpkgs/pkgs/servers/openafs/1.8/default.nix
Alyssa Ross 12d2821bf5
treewide: remove -ldl linker flags
With all libcs I'm aware of, libdl is now either empty (Glibc, musl,
uclibc, illumos), a symlink to libc or equivalent (Apple), or does not
exist (FreeBSD, NetBSD).  So explicitly linking libdl now does nothing
for the former platforms, and breaks the build for the latter
platforms.

With this patch I've removed -ldl from all overridden linker flags for
all free packages in Nixpkgs.  Everything still seems to build.
2023-01-23 15:34:53 +00:00

133 lines
3.4 KiB
Nix

{ lib
, stdenv
, buildPackages
, fetchurl
, which
, autoconf
, automake
, flex
, bison
, glibc
, perl
, libkrb5
, libxslt
, docbook_xsl
, file
, docbook_xml_dtd_43
, libtool_2
, withDevdoc ? false
, doxygen
, dblatex # Extra developer documentation
, withNcurses ? false
, ncurses # Extra ncurses utilities. Needed for debugging and monitoring.
, withTsm ? false
, tsm-client # Tivoli Storage Manager Backup Client from IBM
}:
with (import ./srcs.nix { inherit fetchurl; });
let
inherit (lib) optional optionalString optionals;
in
stdenv.mkDerivation {
pname = "openafs";
inherit version srcs;
depsBuildBuild = [ buildPackages.stdenv.cc ];
nativeBuildInputs = [
autoconf
automake
flex
libxslt
libtool_2
perl
which
bison
] ++ optionals withDevdoc [ doxygen dblatex ];
buildInputs = [ libkrb5 ] ++ optional withNcurses ncurses;
patches = [ ./bosserver.patch ./cross-build.patch ]
++ optional withTsm ./tsmbac.patch;
outputs = [ "out" "dev" "man" "doc" ] ++ optional withDevdoc "devdoc";
enableParallelBuilding = false;
setOutputFlags = false;
# Makefiles don't include install targets for all new shared libs, yet.
dontDisableStatic = true;
preConfigure = ''
patchShebangs .
for i in `grep -l -R '/usr/\(include\|src\)' .`; do
echo "Patch /usr/include and /usr/src in $i"
substituteInPlace $i \
--replace "/usr/include" "${glibc.dev}/include" \
--replace "/usr/src" "$TMP"
done
for i in ./doc/xml/{AdminGuide,QuickStartUnix,UserGuide}/*.xml; do
substituteInPlace "''${i}" --replace "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" \
"${docbook_xml_dtd_43}/xml/dtd/docbook/docbookx.dtd"
done
./regen.sh
configureFlagsArray=(
"--with-gssapi"
"--sysconfdir=/etc"
"--localstatedir=/var"
"--disable-kernel-module"
"--disable-fuse-client"
"--with-docbook-stylesheets=${docbook_xsl}/share/xml/docbook-xsl"
${optionalString withTsm "--enable-tivoli-tsm"}
${optionalString (!withNcurses) "--disable-gtx"}
"--disable-linux-d_splice-alias-extra-iput"
)
'' + optionalString withTsm ''
export XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I${tsm-client}/lib64/sample -DXBSA_TSMLIB=\\\"${tsm-client}/lib64/libApiTSM64.so\\\""
'';
buildFlags = [ "all_nolibafs" ];
postBuild = ''
for d in doc/xml/{AdminGuide,QuickStartUnix,UserGuide}; do
make -C "''${d}" index.html
done
'' + optionalString withDevdoc ''
make dox
'';
postInstall = ''
mkdir -p $doc/share/doc/openafs/{AdminGuide,QuickStartUnix,UserGuide}
cp -r doc/txt README LICENSE $doc/share/doc/openafs
for d in AdminGuide QuickStartUnix UserGuide ; do
cp "doc/xml/''${d}"/*.html "$doc/share/doc/openafs/''${d}"
done
rm -r $out/lib/openafs
'' + optionalString withDevdoc ''
mkdir -p $devdoc/share/devhelp/openafs/doxygen
cp -r doc/{pdf,protocol} $devdoc/share/devhelp/openafs
cp -r doc/doxygen/output/html $devdoc/share/devhelp/openafs/doxygen
'';
# Avoid references to $TMPDIR by removing it and let patchelf cleanup the
# binaries.
preFixup = ''
rm -rf "$(pwd)" && mkdir "$(pwd)"
'';
meta = with lib; {
outputsToInstall = [ "out" "doc" "man" ];
description = "Open AFS client";
homepage = "https://www.openafs.org";
license = licenses.ipl10;
platforms = platforms.linux;
maintainers = [ maintainers.maggesi maintainers.spacefrogg ];
};
}