root/root-memory-usage.patch
Mattias Ellert 88f740ba6c Update to 6.14.00
Drop patches previously backported:
  root-doxygen-makefile.patch
  root-crash-fix.patch
  root-test-stress-32bit.patch
Drop patches accepted upstream:
  root-test-subdirs.patch
  root-test-fixes.patch
  root-out-of-bounds.patch
  root-doxygen-tilde.patch
  root-noinst.patch
Drop patches for issues fixed upstream:
  root-dont-link-jvm.patch
  root-system-pythia.patch
Drop patch root-urw-otf-hack.patch - broken font file no longer present
Drop Google Droid Sans Fallback font from EPEL 7 root-fonts package
  (the font is now available in EPEL 7)
Use two more patches from Fedora's llvm5.0 package
New root-test-subdirs.patch patch for more instances of the same issue
Fix a test not setting cache file directory so that it works offline
Fix a compatibility issue with the EPEL 7 gtest version
Fix a missing include
Workaround optimization problems in the Geom library
New subpackages due to library splits
  root-tree-dataframe and root-vecops from root-tree-player
  root-net-httpsniff from root-net-http
New subpackages due to package splits
  root-gui-html from root-gui
  root-gui-qtgsi from root-gui-qt
  root-io-xmlparser from root-io-xml
  root-proof-player from root-proof
New ROOT 7 subpackages
  graf-gpadv7
  graf-primitives
  gui-fitpanelv7
  gui-qt5webdisplay
Rename root-guibuilder package to root-gui-builder
2018-07-08 14:11:30 +02:00

42 lines
1.8 KiB
Diff

From 3617dd1d911bb5e8fa17a6139dbb887c44dae0fe Mon Sep 17 00:00:00 2001
From: Mattias Ellert <mattias.ellert@physics.uu.se>
Date: Tue, 16 Jan 2018 10:25:50 +0100
Subject: [PATCH] Reduce the needed memory for compilation
The linking of rootcling_stage1 and libCling requires a lot of memory.
Since these are linked from mostly the same objects, the build is ready
to link them at the same time. If you make a parallel build this means
that the two targets that require the most amount of memory are being
linked in parallel. This exhausts the available memory, and the
computer starts swapping.
This adds a dependency of one of the targets to the other. The dependency is
not really there since it is not needed for building, but it prevents the
two memory consuming targets to be built in parallel.
A similar dependency existed before the code latest code changes
(see commit 2638f6fc7f54b0995f2f9d60363daaf8aae2386e), then between
rootcling and libCling.
---
core/metacling/Module.mk | 6 +++++-
core/metacling/src/CMakeLists.txt | 4 ++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/core/metacling/src/CMakeLists.txt b/core/metacling/src/CMakeLists.txt
index e820d144eb..3a1f1ca446 100644
--- a/core/metacling/src/CMakeLists.txt
+++ b/core/metacling/src/CMakeLists.txt
@@ -37,6 +37,10 @@ ROOT_LINKER_LIBRARY(Cling
$<TARGET_OBJECTS:Dictgen>
$<TARGET_OBJECTS:MetaCling>
LIBRARIES ${CLING_LIBRARIES} ${LINK_LIBS})
+# The dependency on rootcling_stage1 was added to prevent Cling (libCling) and
+# rootcling_stage1 from being linked in parallel.
+# This avoids doing two memory consuming operations in parallel.
+add_dependencies(Cling rootcling_stage1)
if(MSVC)
set_target_properties(Cling PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
--
2.14.3