root5: fix build

This commit is contained in:
Dmitry Kalinkin 2018-12-15 20:55:38 +03:00
parent 52dae14f0c
commit c36f841ec7
No known key found for this signature in database
GPG Key ID: 06AF1D3C38F04E0E
3 changed files with 251 additions and 4 deletions

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, cmake, pcre, pkgconfig, python2
{ stdenv, fetchurl, fetchpatch, cmake, pcre, pkgconfig, python2
, libX11, libXpm, libXft, libXext, libGLU_combined, zlib, libxml2, lzma, gsl_1
, Cocoa, OpenGL, cf-private, noSplash ? false }:
@ -19,11 +19,30 @@ stdenv.mkDerivation rec {
patches = [
./sw_vers_root5.patch
(fetchpatch {
name = "enable_new_gcc.patch";
url = "https://aur.archlinux.org/cgit/aur.git/plain/enable_new_gcc.patch?h=root5&id=91c50876081a0af36f84ec4f0f9dba869107fa4f";
sha256 = "1rnp0xlw0yqi7mjs4w145njd79i8kkir1qik7zwicdik9axf8ygm";
})
# prevents rootcint from looking in /usr/includes and such
./purify_include_paths_root5.patch
# disable dictionary generation for stuff that includes libc headers
# our glibc requires a modern compiler
./disable_libc_dicts_root5.patch
];
preConfigure = ''
patchShebangs build/unix/
ln -s ${stdenv.lib.getDev stdenv.cc.libc}/include/AvailabilityMacros.h cint/cint/include/
''
# Fix CINTSYSDIR for "build" version of rootcint
# This is probably a bug that breaks out-of-source builds
+ ''
substituteInPlace cint/cint/src/loadfile.cxx\
--replace 'env = "cint";' 'env = "'`pwd`'/cint";'
'' + stdenv.lib.optionalString noSplash ''
substituteInPlace rootx/src/rootx.cxx --replace "gNoLogo = false" "gNoLogo = true"
'';
@ -73,8 +92,5 @@ stdenv.mkDerivation rec {
description = "A data analysis framework";
platforms = platforms.unix;
maintainers = with maintainers; [ veprbl ];
# needs to be adapted to work with modern glibc
# it works on darwin by impurely picking up system's libc headers
broken = stdenv.isLinux;
};
}

View File

@ -0,0 +1,27 @@
diff --git a/cint/ROOT/CMakeLists.txt b/cint/ROOT/CMakeLists.txt
--- a/cint/ROOT/CMakeLists.txt
+++ b/cint/ROOT/CMakeLists.txt
@@ -47,21 +47,13 @@ set(CINTSTLDLLHEADERS
${CMAKE_SOURCE_DIR}/cint/cint/lib/stdstrct/stdcxxfunc.h
)
set(CINTINCDLLNAMES
- stdfunc
+# stdfunc
# stdcxxfunc
)
set(CINTINCDLLHEADERS
- ${CMAKE_SOURCE_DIR}/cint/cint/lib/stdstrct/stdfunc.h
+# ${CMAKE_SOURCE_DIR}/cint/cint/lib/stdstrct/stdfunc.h
# ${CMAKE_SOURCE_DIR}/cint/cint/lib/stdstrct/stdcxxfunc.h
)
-if(NOT WIN32)
- set(CINTSTLDLLNAMES ${CINTSTLDLLNAMES} valarray)
- set(CINTSTLDLLHEADERS ${CINTSTLDLLHEADERS} ${CINTDLLDIR}/vary.h)
- set(CINTINCDLLNAMES ${CINTINCDLLNAMES} posix ipc)
- set(CINTINCDLLHEADERS ${CINTINCDLLHEADERS}
- ${CMAKE_SOURCE_DIR}/cint/cint/lib/posix/exten.h
- ${CMAKE_SOURCE_DIR}/cint/cint/lib/ipc/ipcif.h)
-endif()
set(CINTBUILDLOADER
vector

View File

@ -0,0 +1,204 @@
diff --git a/cint/cint/src/loadfile.cxx b/cint/cint/src/loadfile.cxx
--- a/cint/cint/src/loadfile.cxx
+++ b/cint/cint/src/loadfile.cxx
@@ -1365,92 +1365,6 @@ int G__statfilename(const char *filenamein, struct stat *statBuf,
}
}
#endif /* G__EDU_VERSION */
-
-#ifdef G__VISUAL
- /**********************************************
- * try /msdev/include
- **********************************************/
- if('\0'!=G__cintsysdir[0]) {
- workname.Format("/msdev/include/%s%s",filename(),addpost[i2]);
- res = stat( workname, statBuf );
- if (res==0) {
- if (fullPath) fullPath->Swap(workname);
- return res;
- }
- }
-#endif /* G__VISUAL */
-
-#ifdef G__SYMANTEC
- /**********************************************
- * try /sc/include
- **********************************************/
- if('\0'!=G__cintsysdir[0]) {
- workname.Format("/sc/include/%s%s",filename(),addpost[i2]);
- res = stat( workname, statBuf );
- if (res==0) {
- if (fullPath) fullPath->Swap(workname);
- return res;
- }
- }
-#endif // G__SYMANTEC
-
-#ifndef G__WIN32
- /**********************************************
- * try /usr/include/filename
- **********************************************/
- if('\0'!=G__cintsysdir[0]) {
- workname.Format("/usr/include/%s%s",filename(),addpost[i2]);
- res = stat( workname, statBuf );
- if (res==0) {
- if (fullPath) fullPath->Swap(workname);
- return res;
- }
- }
-#endif
-
-#ifdef __GNUC__
- /**********************************************
- * try /usr/include/g++/filename
- **********************************************/
- if('\0'!=G__cintsysdir[0]) {
- workname.Format("/usr/include/g++/%s%s",filename(),addpost[i2]);
- res = stat( workname, statBuf );
- if (res==0) {
- if (fullPath) fullPath->Swap(workname);
- return res;
- }
- }
-#endif /* __GNUC__ */
-
-#ifndef G__WIN32
- /* #ifdef __hpux */
- /**********************************************
- * try /usr/include/CC/filename
- **********************************************/
- if('\0'!=G__cintsysdir[0]) {
- workname.Format("/usr/include/CC/%s%s",filename(),addpost[i2]);
- res = stat( workname, statBuf );
- if (res==0) {
- if (fullPath) fullPath->Swap(workname);
- return res;
- }
- }
-#endif
-
-#ifndef G__WIN32
- /**********************************************
- * try /usr/include/codelibs/filename
- **********************************************/
- if('\0'!=G__cintsysdir[0]) {
- workname.Format("/usr/include/codelibs/%s%s"
- ,filename(),addpost[i2]);
- res = stat( workname, statBuf );
- if (res==0) {
- if (fullPath) fullPath->Swap(workname);
- return res;
- }
- }
-#endif
}
return -1;
}
@@ -1960,107 +1874,6 @@ int G__loadfile(const char *filenamein)
}
if(G__ifile.fp) break;
#endif /* G__EDU_VERSION */
-
-#ifdef G__VISUAL
- /**********************************************
- * try /msdev/include
- **********************************************/
- if('\0'!=G__cintsysdir[0]) {
- G__snprintf(G__ifile.name,G__MAXFILENAME,"/msdev/include/%s%s",filename(),addpost[i2]);
-#ifndef G__WIN32
- G__ifile.fp = fopen(G__ifile.name,"r");
-#else
- G__ifile.fp = fopen(G__ifile.name,"rb");
-#endif
- G__globalcomp=G__store_globalcomp;
- }
- if(G__ifile.fp) break;
-#endif /* G__VISUAL */
-
-#ifdef G__SYMANTEC
- /**********************************************
- * try /sc/include
- **********************************************/
- if('\0'!=G__cintsysdir[0]) {
- G__snprintf(G__ifile.name,G__MAXFILENAME,"/sc/include/%s%s",filename(),addpost[i2]);
-#ifndef G__WIN32
- G__ifile.fp = fopen(G__ifile.name,"r");
-#else
- G__ifile.fp = fopen(G__ifile.name,"rb");
-#endif
- G__globalcomp=G__store_globalcomp;
- }
- if(G__ifile.fp) break;
-#endif /* G__SYMANTEC */
-
-#ifndef G__WIN32
- /**********************************************
- * try /usr/include/filename
- **********************************************/
- if('\0'!=G__cintsysdir[0]) {
- G__snprintf(G__ifile.name,G__MAXFILENAME,"/usr/include/%s%s",filename(),addpost[i2]);
-#ifndef G__WIN32
- G__ifile.fp = fopen(G__ifile.name,"r");
-#else
- G__ifile.fp = fopen(G__ifile.name,"rb");
-#endif
- G__globalcomp=G__store_globalcomp;
- }
- if(G__ifile.fp) break;
-#endif
-
-#ifdef __GNUC__
- /**********************************************
- * try /usr/include/g++/filename
- **********************************************/
- if('\0'!=G__cintsysdir[0]) {
- G__snprintf(G__ifile.name,G__MAXFILENAME,"/usr/include/g++/%s%s",filename(),addpost[i2]);
-#ifndef G__WIN32
- G__ifile.fp = fopen(G__ifile.name,"r");
-#else
- G__ifile.fp = fopen(G__ifile.name,"rb");
-#endif
- G__globalcomp=G__store_globalcomp;
- }
- if(G__ifile.fp) break;
-#endif /* __GNUC__ */
-
-#ifndef G__WIN32
-/* #ifdef __hpux */
- /**********************************************
- * try /usr/include/CC/filename
- **********************************************/
- if('\0'!=G__cintsysdir[0]) {
- G__snprintf(G__ifile.name,G__MAXFILENAME,"/usr/include/CC/%s%s",filename(),addpost[i2]);
-#ifndef G__WIN32
- G__ifile.fp = fopen(G__ifile.name,"r");
-#else
- G__ifile.fp = fopen(G__ifile.name,"rb");
-#endif
- G__globalcomp=G__store_globalcomp;
- }
- if(G__ifile.fp) break;
-/* #endif __hpux */
-#endif
-
-#ifndef G__WIN32
-/* #ifdef __hpux */
- /**********************************************
- * try /usr/include/codelibs/filename
- **********************************************/
- if('\0'!=G__cintsysdir[0]) {
- G__snprintf(G__ifile.name,G__MAXFILENAME,"/usr/include/codelibs/%s%s"
- ,filename(),addpost[i2]);
-#ifndef G__WIN32
- G__ifile.fp = fopen(G__ifile.name,"r");
-#else
- G__ifile.fp = fopen(G__ifile.name,"rb");
-#endif
- G__globalcomp=G__store_globalcomp;
- }
- if(G__ifile.fp) break;
-/* #endif __hpux */
-#endif
}
}