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!
42 lines
952 B
Makefile
42 lines
952 B
Makefile
makefiles = \
|
|
local.mk \
|
|
src/boost/format/local.mk \
|
|
src/libutil/local.mk \
|
|
src/libstore/local.mk \
|
|
src/libmain/local.mk \
|
|
src/libexpr/local.mk \
|
|
src/nix/local.mk \
|
|
src/nix-store/local.mk \
|
|
src/nix-instantiate/local.mk \
|
|
src/nix-env/local.mk \
|
|
src/nix-daemon/local.mk \
|
|
src/nix-collect-garbage/local.mk \
|
|
src/nix-copy-closure/local.mk \
|
|
src/nix-prefetch-url/local.mk \
|
|
src/buildenv/local.mk \
|
|
src/resolve-system-dependencies/local.mk \
|
|
src/nix-channel/local.mk \
|
|
src/nix-build/local.mk \
|
|
src/build-remote/local.mk \
|
|
perl/local.mk \
|
|
scripts/local.mk \
|
|
corepkgs/local.mk \
|
|
misc/systemd/local.mk \
|
|
misc/launchd/local.mk \
|
|
misc/upstart/local.mk \
|
|
misc/emacs/local.mk \
|
|
doc/manual/local.mk \
|
|
tests/local.mk
|
|
|
|
GLOBAL_CXXFLAGS += -std=c++14 -g -Wall -include config.h
|
|
|
|
-include Makefile.config
|
|
|
|
OPTIMIZE = 1
|
|
|
|
ifeq ($(OPTIMIZE), 1)
|
|
GLOBAL_CFLAGS += -O3
|
|
GLOBAL_CXXFLAGS += -O3
|
|
endif
|
|
|
|
include mk/lib.mk
|