Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

treewide: Remove uses of crossConfig and add strictDeps #40539

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions pkgs/build-support/bintools-wrapper/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ stdenv.mkDerivation {
else throw "unknown emulation for platform: " + targetPlatform.config;
in targetPlatform.platform.bfdEmulation or (fmt + sep + arch);

strictDeps = true;
depsTargetTargetPropagated = extraPackages;

setupHook = ./setup-hook.sh;
Expand Down
2 changes: 1 addition & 1 deletion pkgs/build-support/bintools-wrapper/setup-hook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ set -u
# native compile.
#
# TODO(@Ericson2314): No native exception
[[ -z ${crossConfig-} ]] || (( "$hostOffset" < 0 )) || return 0
[[ -z ${strictDeps-} ]] || (( "$hostOffset" < 0 )) || return 0

bintoolsWrapper_addLDVars () {
case $depHostOffset in
Expand Down
1 change: 1 addition & 0 deletions pkgs/build-support/cc-wrapper/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ stdenv.mkDerivation {
ln -s $ccPath/${targetPrefix}ghdl $out/bin/${targetPrefix}ghdl
'';

strictDeps = true;
propagatedBuildInputs = [ bintools ];
depsTargetTargetPropagated = extraPackages;

Expand Down
2 changes: 1 addition & 1 deletion pkgs/build-support/cc-wrapper/setup-hook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ set -u
# native compile.
#
# TODO(@Ericson2314): No native exception
[[ -z ${crossConfig-} ]] || (( "$hostOffset" < 0 )) || return 0
[[ -z ${strictDeps-} ]] || (( "$hostOffset" < 0 )) || return 0

# It's fine that any other cc-wrapper will redefine this. Bash functions close
# over no state, and there's no @-substitutions within, so any redefined
Expand Down
6 changes: 2 additions & 4 deletions pkgs/development/compilers/ghc/7.10.3.nix
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,8 @@ stdenv.mkDerivation rec {
"--disable-large-address-space"
];

# Hack to make sure we never to the relaxation `$PATH` and hooks support for
# compatability. This will be replaced with something clearer in a future
# masss-rebuild.
crossConfig = true;
# Make sure we never relax`$PATH` and hooks support for compatability.
strictDeps = true;

nativeBuildInputs = [
ghc perl libxml2 libxslt docbook_xsl docbook_xml_dtd_45 docbook_xml_dtd_42 hscolour
Expand Down
6 changes: 2 additions & 4 deletions pkgs/development/compilers/ghc/8.0.2.nix
Original file line number Diff line number Diff line change
Expand Up @@ -128,10 +128,8 @@ stdenv.mkDerivation rec {
"--disable-large-address-space"
];

# Hack to make sure we never to the relaxation `$PATH` and hooks support for
# compatability. This will be replaced with something clearer in a future
# masss-rebuild.
crossConfig = true;
# Make sure we never relax`$PATH` and hooks support for compatability.
strictDeps = true;

nativeBuildInputs = [ ghc perl hscolour sphinx ];

Expand Down
6 changes: 2 additions & 4 deletions pkgs/development/compilers/ghc/8.2.2.nix
Original file line number Diff line number Diff line change
Expand Up @@ -145,10 +145,8 @@ stdenv.mkDerivation rec {
"--disable-large-address-space"
];

# Hack to make sure we never to the relaxation `$PATH` and hooks support for
# compatability. This will be replaced with something clearer in a future
# masss-rebuild.
crossConfig = true;
# Make sure we never relax`$PATH` and hooks support for compatability.
strictDeps = true;

nativeBuildInputs = [ alex autoconf autoreconfHook automake ghc happy hscolour perl python3 sphinx ];

Expand Down
6 changes: 2 additions & 4 deletions pkgs/development/compilers/ghc/8.4.1.nix
Original file line number Diff line number Diff line change
Expand Up @@ -144,10 +144,8 @@ stdenv.mkDerivation rec {
"--disable-large-address-space"
];

# Hack to make sure we never to the relaxation `$PATH` and hooks support for
# compatability. This will be replaced with something clearer in a future
# masss-rebuild.
crossConfig = true;
# Make sure we never relax`$PATH` and hooks support for compatability.
strictDeps = true;

nativeBuildInputs = [ ghc perl autoconf automake happy alex python3 ];

Expand Down
6 changes: 2 additions & 4 deletions pkgs/development/compilers/ghc/head.nix
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,8 @@ stdenv.mkDerivation rec {
"--disable-large-address-space"
];

# Hack to make sure we never to the relaxation `$PATH` and hooks support for
# compatability. This will be replaced with something clearer in a future
# masss-rebuild.
crossConfig = true;
# Make sure we never relax`$PATH` and hooks support for compatability.
strictDeps = true;

nativeBuildInputs = [ ghc perl autoconf automake happy alex python3 ];

Expand Down
15 changes: 5 additions & 10 deletions pkgs/development/interpreters/guile/1.8.nix
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@ stdenv.mkDerivation rec {
setOutputFlags = false; # $dev gets into the library otherwise

# GCC 4.6 raises a number of set-but-unused warnings.
configureFlags = [ "--disable-error-on-warning" ];
configureFlags = [ "--disable-error-on-warning" ]
# Guile needs patching to preset results for the configure tests about
# pthreads, which work only in native builds.
++ stdenv.lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
"--with-threads=no";

depsBuildBuild = [ buildPackages.stdenv.cc ]
++ stdenv.lib.optional (hostPlatform != buildPlatform)
Expand All @@ -34,17 +38,8 @@ stdenv.mkDerivation rec {
libtool
];


patches = [ ./cpp-4.5.patch ];

# Guile needs patching to preset results for the configure tests
# about pthreads, which work only in native builds.
preConfigure = ''
if test -n "$crossConfig"; then
configureFlags="--with-threads=no $configureFlags"
fi
'';

preBuild = ''
sed -e '/lt_dlinit/a lt_dladdsearchdir("'$out/lib'");' -i libguile/dynl.c
'';
Expand Down
13 changes: 2 additions & 11 deletions pkgs/development/libraries/fontconfig/2.10.nix
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,10 @@ stdenv.mkDerivation rec {
"--with-cache-dir=/var/cache/fontconfig"
"--disable-docs"
"--with-default-fonts="
] ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"--with-arch=${hostPlatform.parsed.cpu.name}"
];

# We should find a better way to access the arch reliably.
crossArch = if stdenv.hostPlatform != stdenv.buildPlatform
then hostPlatform.parsed.cpu.name
else null;

preConfigure = ''
if test -n "$crossConfig"; then
configureFlags="$configureFlags --with-arch=$crossArch";
fi
'';

enableParallelBuilding = true;

doCheck = true;
Expand Down
13 changes: 2 additions & 11 deletions pkgs/development/libraries/fontconfig/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -53,19 +53,10 @@ stdenv.mkDerivation rec {
"--disable-docs"
# just <1MB; this is what you get when loading config fails for some reason
"--with-default-fonts=${dejavu_fonts.minimal}"
] ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"--with-arch=${hostPlatform.parsed.cpu.name}"
];

# We should find a better way to access the arch reliably.
crossArch = if stdenv.hostPlatform != stdenv.buildPlatform
then hostPlatform.parsed.cpu.name
else null;

preConfigure = ''
if test -n "$crossConfig"; then
configureFlags="$configureFlags --with-arch=$crossArch";
fi
'';

enableParallelBuilding = true;

doCheck = true;
Expand Down
28 changes: 12 additions & 16 deletions pkgs/development/libraries/gettext/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,19 @@ stdenv.mkDerivation rec {

LDFLAGS = if stdenv.isSunOS then "-lm -lmd -lmp -luutil -lnvpair -lnsl -lidmap -lavl -lsec" else "";

configureFlags = [ "--disable-csharp" "--with-xz" ]
configureFlags = [
"--disable-csharp" "--with-xz"
# avoid retaining reference to CF during stdenv bootstrap
++ lib.optionals stdenv.isDarwin [
"gt_cv_func_CFPreferencesCopyAppValue=no"
"gt_cv_func_CFLocaleCopyCurrent=no"
];
] ++ lib.optionals stdenv.isDarwin [
"gt_cv_func_CFPreferencesCopyAppValue=no"
"gt_cv_func_CFLocaleCopyCurrent=no"
] ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
# On cross building, gettext supposes that the wchar.h from libc
# does not fulfill gettext needs, so it tries to work with its
# own wchar.h file, which does not cope well with the system's
# wchar.h and stddef.h (gcc-4.3 - glibc-2.9)
"gl_cv_func_wcwidth_works=yes"
];

postPatch = ''
substituteAllInPlace gettext-runtime/src/gettext.sh.in
Expand All @@ -33,17 +40,6 @@ stdenv.mkDerivation rec {
sed -i -e "s/\(libgettextsrc_la_LDFLAGS = \)/\\1..\/gnulib-lib\/libxml_rpl.la /" gettext-tools/src/Makefile.in
'';

# On cross building, gettext supposes that the wchar.h from libc
# does not fulfill gettext needs, so it tries to work with its
# own wchar.h file, which does not cope well with the system's
# wchar.h and stddef.h (gcc-4.3 - glibc-2.9)
preConfigure = ''
if test -n "$crossConfig"; then
echo gl_cv_func_wcwidth_works=yes > cachefile
configureFlags="$configureFlags --cache-file=`pwd`/cachefile"
fi
'';

nativeBuildInputs = [ xz xz.bin ];
# HACK, see #10874 (and 14664)
buildInputs = stdenv.lib.optional (!stdenv.isLinux && !hostPlatform.isCygwin) libiconv;
Expand Down
13 changes: 7 additions & 6 deletions pkgs/development/libraries/glibc/2.27.nix
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,15 @@ callPackage ./common-2.27.nix { inherit stdenv; } {

# Get rid of more unnecessary stuff.
rm -rf $out/var $bin/bin/sln

''
# For some reason these aren't stripped otherwise and retain reference
# to bootstrap-tools; on cross-arm this stripping would break objects.
if [ -z "$crossConfig" ]; then
for i in "$out"/lib/*.a; do
[ "$i" = "$out/lib/libm.a" ] || strip -S "$i"
done
fi
+ stdenv.lib.optionalString (stdenv.hostPlatform == stdenv.buildPlatform) ''

for i in "$out"/lib/*.a; do
[ "$i" = "$out/lib/libm.a" ] || $STRIP -S "$i"
done
'' + ''

# Put libraries for static linking in a separate output. Note
# that libc_nonshared.a and libpthread_nonshared.a are required
Expand Down
13 changes: 7 additions & 6 deletions pkgs/development/libraries/glibc/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,15 @@ callPackage ./common.nix { inherit stdenv; } {

# Get rid of more unnecessary stuff.
rm -rf $out/var $bin/bin/sln

''
# For some reason these aren't stripped otherwise and retain reference
# to bootstrap-tools; on cross-arm this stripping would break objects.
if [ -z "$crossConfig" ]; then
for i in "$out"/lib/*.a; do
[ "$i" = "$out/lib/libm.a" ] || strip -S "$i"
done
fi
+ stdenv.lib.optionalString (stdenv.hostPlatform == stdenv.buildPlatform) ''

for i in "$out"/lib/*.a; do
[ "$i" = "$out/lib/libm.a" ] || $STRIP -S "$i"
done
'' + ''

# Put libraries for static linking in a separate output. Note
# that libc_nonshared.a and libpthread_nonshared.a are required
Expand Down
30 changes: 17 additions & 13 deletions pkgs/development/tools/build-managers/cmake/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -80,19 +80,23 @@ stdenv.mkDerivation rec {
configureFlags="--parallel=''${NIX_BUILD_CORES:-1} $configureFlags"
'';

configureFlags = [ "--docdir=share/doc/${name}" ]
++ (if useSharedLibraries then [ "--no-system-jsoncpp" "--system-libs" ] else [ "--no-system-libs" ]) # FIXME: cleanup
++ optional (useQt4 || withQt5) "--qt-gui"
++ ["--"]
++ optionals (!useNcurses) [ "-DBUILD_CursesDialog=OFF" ]
++ optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
"-DCMAKE_CXX_COMPILER=${stdenv.cc.targetPrefix}c++"
"-DCMAKE_C_COMPILER=${stdenv.cc.targetPrefix}cc"
"-DCMAKE_AR=${getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ar"
"-DCMAKE_RANLIB=${getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ranlib"
"-DCMAKE_STRIP=${getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}strip"
# TODO: Why are ar and friends not provided by the bintools wrapper?
];
configureFlags = [
"--docdir=share/doc/${name}"
# We should set the proper `CMAKE_SYSTEM_NAME`.
# http://www.cmake.org/Wiki/CMake_Cross_Compiling
#
# Unfortunately cmake seems to expect absolute paths for ar, ranlib, and
# strip. Otherwise they are taken to be relative to the source root of the
# package being built.
"-DCMAKE_CXX_COMPILER=${stdenv.cc.targetPrefix}c++"
"-DCMAKE_C_COMPILER=${stdenv.cc.targetPrefix}cc"
"-DCMAKE_AR=${getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ar"
"-DCMAKE_RANLIB=${getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ranlib"
"-DCMAKE_STRIP=${getBin stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}strip"
] ++ (if useSharedLibraries then [ "--no-system-jsoncpp" "--system-libs" ] else [ "--no-system-libs" ]) # FIXME: cleanup
++ optional (useQt4 || withQt5) "--qt-gui"
++ ["--"]
++ optionals (!useNcurses) [ "-DBUILD_CursesDialog=OFF" ];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to break native building of cmake: https://hydra.nixos.org/build/74265837/nixlog/1 .

Can someone take a look at this? Lots of things dep on cmake! :)


dontUseCmakeConfigure = true;
enableParallelBuilding = true;
Expand Down
25 changes: 11 additions & 14 deletions pkgs/development/tools/build-managers/cmake/setup-hook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,17 @@ cmakeConfigurePhase() {
cmakeFlags="-DCMAKE_INSTALL_PREFIX=$prefix $cmakeFlags"
fi

if [ -n "$crossConfig" ]; then
# By now it supports linux builds only. We should set the proper
# CMAKE_SYSTEM_NAME otherwise.
# http://www.cmake.org/Wiki/CMake_Cross_Compiling
#
# Unfortunately cmake seems to expect absolute paths for ar, ranlib, and
# strip. Otherwise they are taken to be relative to the source root of
# the package being built.
cmakeFlags="-DCMAKE_CXX_COMPILER=$crossConfig-c++ $cmakeFlags"
cmakeFlags="-DCMAKE_C_COMPILER=$crossConfig-cc $cmakeFlags"
cmakeFlags="-DCMAKE_AR=$(command -v $crossConfig-ar) $cmakeFlags"
cmakeFlags="-DCMAKE_RANLIB=$(command -v $crossConfig-ranlib) $cmakeFlags"
cmakeFlags="-DCMAKE_STRIP=$(command -v $crossConfig-strip) $cmakeFlags"
fi
# We should set the proper `CMAKE_SYSTEM_NAME`.
# http://www.cmake.org/Wiki/CMake_Cross_Compiling
#
# Unfortunately cmake seems to expect absolute paths for ar, ranlib, and
# strip. Otherwise they are taken to be relative to the source root of the
# package being built.
cmakeFlags="-DCMAKE_CXX_COMPILER=$CXX $cmakeFlags"
cmakeFlags="-DCMAKE_C_COMPILER=$CC $cmakeFlags"
cmakeFlags="-DCMAKE_AR=$(command -v $AR) $cmakeFlags"
cmakeFlags="-DCMAKE_RANLIB=$(command -v $RANLAB) $cmakeFlags"
cmakeFlags="-DCMAKE_STRIP=$(command -v $STRIP) $cmakeFlags"

# This installs shared libraries with a fully-specified install
# name. By default, cmake installs shared libraries with just the
Expand Down
21 changes: 8 additions & 13 deletions pkgs/misc/uboot/nanonote.nix
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
{stdenv, fetchurl, fetchgit}:

# We should enable this check once we have the cross target system information
# assert stdenv.system == "armv5tel-linux" || crossConfig == "armv5tel-linux";

# All this file is made for the Marvell Sheevaplug

stdenv.mkDerivation {
Expand Down Expand Up @@ -30,21 +27,19 @@ stdenv.mkDerivation {
sed -i -e 's/0x200000;bootm/0x400000;bootm/' include/configs/qi_lb60.h
'';

# Remove the cross compiler prefix, and add reiserfs support
makeFlags = [
"CROSS_COMPILE=${stdenv.cc.targetPrefix}"
];

# Add reiserfs support
configurePhase = ''
make mrproper
make qi_lb60_config
sed -i /CROSS_COMPILE/d include/config.mk
'';

buildPhase = ''
preBuild= ''
# A variable named 'src' used to affect the build in some uboot...
unset src
if test -z "$crossConfig"; then
make clean all
else
make clean all ARCH=mips CROSS_COMPILE=$crossConfig-
fi
unset -v src
'';

dontStrip = true;
Expand All @@ -59,6 +54,6 @@ stdenv.mkDerivation {
'';

meta = {
platforms = [ "mipsel-linux" ];
platforms = stdenv.lib.platforms.mips;
};
}