From 2cd468874fe512387820bd47d23fa6351d069da2 Mon Sep 17 00:00:00 2001 From: Tuomas Tynkkynen Date: Wed, 8 Feb 2017 20:35:06 +0200 Subject: [PATCH] Include config.h implicitly with '-include config.h' in CFLAGS Because config.h can #define things like _FILE_OFFSET_BITS=64 and not every compilation unit includes config.h, we currently compile half of Nix with _FILE_OFFSET_BITS=64 and other half with _FILE_OFFSET_BITS unset. This causes major havoc with the Settings class on e.g. 32-bit ARM, where different compilation units disagree with the struct layout. E.g.: diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc @@ -166,6 +166,8 @@ void Settings::update() _get(useSubstitutes, "build-use-substitutes"); + fprintf(stderr, "at Settings::update(): &useSubstitutes = %p\n", &nix::settings.useSubstitutes); _get(buildUsersGroup, "build-users-group"); diff --git a/src/libstore/remote-store.cc b/src/libstore/remote-store.cc +++ b/src/libstore/remote-store.cc @@ -138,6 +138,8 @@ void RemoteStore::initConnection(Connection & conn) void RemoteStore::setOptions(Connection & conn) { + fprintf(stderr, "at RemoteStore::setOptions(): &useSubstitutes = %p\n", &nix::settings.useSubstitutes); conn.to << wopSetOptions Gave me: at Settings::update(): &useSubstitutes = 0xb6e5c5cb at RemoteStore::setOptions(): &useSubstitutes = 0xb6e5c5c7 That was not a fun one to debug! --- Makefile | 2 +- src/libexpr/json-to-value.cc | 1 - src/libexpr/symbol-table.hh | 2 -- src/libexpr/value.hh | 1 - src/libmain/shared.cc | 2 -- src/libmain/stack.cc | 2 -- src/libstore/build.cc | 2 -- src/libstore/globals.cc | 2 -- src/libstore/local-store.cc | 1 - src/libstore/optimise-store.cc | 2 -- src/libstore/s3-binary-cache-store.cc | 2 -- src/libutil/archive.cc | 2 -- src/libutil/hash.cc | 2 -- src/libutil/types.hh | 1 - src/libutil/util.cc | 2 -- 15 files changed, 1 insertion(+), 25 deletions(-) diff --git a/Makefile b/Makefile index 62a4850d8..d26cf8d99 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,7 @@ makefiles = \ doc/manual/local.mk \ tests/local.mk -GLOBAL_CXXFLAGS += -std=c++14 -g -Wall +GLOBAL_CXXFLAGS += -std=c++14 -g -Wall -include config.h -include Makefile.config diff --git a/src/libexpr/json-to-value.cc b/src/libexpr/json-to-value.cc index f671802bc..c189cdef3 100644 --- a/src/libexpr/json-to-value.cc +++ b/src/libexpr/json-to-value.cc @@ -1,4 +1,3 @@ -#include "config.h" #include "json-to-value.hh" #include diff --git a/src/libexpr/symbol-table.hh b/src/libexpr/symbol-table.hh index 2fdf82021..c2ee49dd3 100644 --- a/src/libexpr/symbol-table.hh +++ b/src/libexpr/symbol-table.hh @@ -1,7 +1,5 @@ #pragma once -#include "config.h" - #include #include diff --git a/src/libexpr/value.hh b/src/libexpr/value.hh index 271e6a1b2..81f918d48 100644 --- a/src/libexpr/value.hh +++ b/src/libexpr/value.hh @@ -1,6 +1,5 @@ #pragma once -#include "config.h" #include "symbol-table.hh" #if HAVE_BOEHMGC diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc index 52cb23128..56aa3db00 100644 --- a/src/libmain/shared.cc +++ b/src/libmain/shared.cc @@ -1,5 +1,3 @@ -#include "config.h" - #include "common-args.hh" #include "globals.hh" #include "shared.hh" diff --git a/src/libmain/stack.cc b/src/libmain/stack.cc index abf59dc4b..57b6a197c 100644 --- a/src/libmain/stack.cc +++ b/src/libmain/stack.cc @@ -1,5 +1,3 @@ -#include "config.h" - #include "types.hh" #include diff --git a/src/libstore/build.cc b/src/libstore/build.cc index 5d6fff4e3..1aee150fd 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -1,5 +1,3 @@ -#include "config.h" - #include "references.hh" #include "pathlocks.hh" #include "globals.hh" diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc index 00b468892..90f83a5bb 100644 --- a/src/libstore/globals.cc +++ b/src/libstore/globals.cc @@ -1,5 +1,3 @@ -#include "config.h" - #include "globals.hh" #include "util.hh" #include "archive.hh" diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc index 612efde7b..4c161cfb3 100644 --- a/src/libstore/local-store.cc +++ b/src/libstore/local-store.cc @@ -1,4 +1,3 @@ -#include "config.h" #include "local-store.hh" #include "globals.hh" #include "archive.hh" diff --git a/src/libstore/optimise-store.cc b/src/libstore/optimise-store.cc index b71c7e905..cf234e35d 100644 --- a/src/libstore/optimise-store.cc +++ b/src/libstore/optimise-store.cc @@ -1,5 +1,3 @@ -#include "config.h" - #include "util.hh" #include "local-store.hh" #include "globals.hh" diff --git a/src/libstore/s3-binary-cache-store.cc b/src/libstore/s3-binary-cache-store.cc index ccb71f1ee..cc1b33104 100644 --- a/src/libstore/s3-binary-cache-store.cc +++ b/src/libstore/s3-binary-cache-store.cc @@ -1,5 +1,3 @@ -#include "config.h" - #if ENABLE_S3 #if __linux__ diff --git a/src/libutil/archive.cc b/src/libutil/archive.cc index fbba7f853..e0e6f5dfd 100644 --- a/src/libutil/archive.cc +++ b/src/libutil/archive.cc @@ -1,5 +1,3 @@ -#include "config.h" - #include #include #include diff --git a/src/libutil/hash.cc b/src/libutil/hash.cc index aa50fceb9..f447c80c5 100644 --- a/src/libutil/hash.cc +++ b/src/libutil/hash.cc @@ -1,5 +1,3 @@ -#include "config.h" - #include #include diff --git a/src/libutil/types.hh b/src/libutil/types.hh index b9a93d27d..97d79af9b 100644 --- a/src/libutil/types.hh +++ b/src/libutil/types.hh @@ -1,6 +1,5 @@ #pragma once -#include "config.h" #include "ref.hh" diff --git a/src/libutil/util.cc b/src/libutil/util.cc index 6c4c5c969..336599368 100644 --- a/src/libutil/util.cc +++ b/src/libutil/util.cc @@ -1,5 +1,3 @@ -#include "config.h" - #include "util.hh" #include "affinity.hh" #include "sync.hh"