diff --git a/root-gcc5-1.patch b/root-gcc5-1.patch new file mode 100644 index 0000000..ab826cb --- /dev/null +++ b/root-gcc5-1.patch @@ -0,0 +1,69 @@ +From 126c993d3c432ed09abc963bdbb1dc18f229a3e3 Mon Sep 17 00:00:00 2001 +From: David Abdurachmanov +Date: Wed, 11 Mar 2015 11:31:13 +0100 +Subject: [PATCH 1/1] Regenerate iosenum.linuxarm643 for GCC 5 + +There are two `iosenum.cxx` in ROOT5 source. Previously I used +`./cint/cint/include/iosenum.cxx` which also generated compiler +version check. This breaks on GCC 5 based system (e.g, Fedora 22). + +This time used `./cint/iosenum/iosenum.cxx` to match the rest of +`iosenum.h` files in source. + +Signed-off-by: David Abdurachmanov +--- + cint/iosenum/iosenum.linuxarm643 | 38 ++------------------------------------ + 1 file changed, 2 insertions(+), 36 deletions(-) + +diff --git a/cint/iosenum/iosenum.linuxarm643 b/cint/iosenum/iosenum.linuxarm643 +index 997f30b..0465c64 100644 +--- a/cint/iosenum/iosenum.linuxarm643 ++++ b/cint/iosenum/iosenum.linuxarm643 +@@ -1,42 +1,8 @@ +-/* include/iosenum.h ++/* include/platform/iosenum.h + * This file contains platform dependent ios enum value. +- * Run 'cint include/iosenum.cxx' to create this file. It is done ++ * Run 'cint iosenum.cxx' to create this file. It is done + * only once at installation. */ +-#if !defined(G__GNUC) || (G__GNUC!=4) +-#error $CINTSYSDIR/include/iosenum.h compiler version mismatch. Do'cd $CINTSYSDIR/include; cint iosenum.cxx' to restore +-#endif + #pragma ifndef G__TMPLTIOS +-static int ios::goodbit=0; +-static int ios::eofbit=2; +-static int ios::failbit=4; +-static int ios::badbit=1; +-static int ios::in=8; +-static int ios::out=16; +-static int ios::ate=2; +-static int ios::app=1; +-static int ios::trunc=32; +-static int ios::binary=4; +-static int ios::beg=0; +-static int ios::cur=1; +-static int ios::end=2; +-static int ios::boolalpha=1; +-static int ios::adjustfield=176; +-static int ios::basefield=74; +-static int ios::floatfield=260; +-static int ios::skipws=4096; +-static int ios::left=32; +-static int ios::right=128; +-static int ios::internal=16; +-static int ios::dec=2; +-static int ios::oct=64; +-static int ios::hex=8; +-static int ios::showbase=512; +-static int ios::showpoint=1024; +-static int ios::uppercase=16384; +-static int ios::showpos=2048; +-static int ios::scientific=256; +-static int ios::fixed=4; +-static int ios::unitbuf=8192; + #pragma else + static ios_base::fmtflags ios_base::boolalpha=1; + static ios_base::fmtflags ios_base::dec=2; +-- +1.8.2 + diff --git a/root-gcc5-2.patch b/root-gcc5-2.patch new file mode 100644 index 0000000..6343555 --- /dev/null +++ b/root-gcc5-2.patch @@ -0,0 +1,76 @@ +From 7dec562d1d5723b7eea08d08659dc9dc4e79c8ca Mon Sep 17 00:00:00 2001 +From: David Abdurachmanov +Date: Wed, 11 Mar 2015 11:35:47 +0100 +Subject: [PATCH 1/1] Update CINT CMake and configure scripts for GCC 5 + +The following is required otherwise `iosenum.h` will be missing causing +build failures. Needed for Fedora 22. + +Signed-off-by: David Abdurachmanov +--- + cint/cint/CMakeLists.txt | 4 +--- + cint/cint/Module.mk | 12 ++++++++++++ + 2 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/cint/cint/CMakeLists.txt b/cint/cint/CMakeLists.txt +index 705b57d..e7756be 100644 +--- a/cint/cint/CMakeLists.txt ++++ b/cint/cint/CMakeLists.txt +@@ -61,9 +61,7 @@ set_source_files_properties(loadfile_tmp.cxx COMPILE_FLAGS "-UR__HAVE_CONFIG -D + #---Generate and/or copy the iosenum headerfile to the include directory------------------------------- + if(${CLANG_MAJOR} GREATER 2) + set(IOSENUM_H ${PROJECT_SOURCE_DIR}/cint/iosenum/iosenum.${ROOT_ARCHITECTURE}3) +-elseif(${GCC_MAJOR} EQUAL 4) +- set(IOSENUM_H ${PROJECT_SOURCE_DIR}/cint/iosenum/iosenum.${ROOT_ARCHITECTURE}3) +-elseif(${GCC_MAJOR} EQUAL 3) ++elseif(${GCC_MAJOR} GREATER 3) + set(IOSENUM_H ${PROJECT_SOURCE_DIR}/cint/iosenum/iosenum.${ROOT_ARCHITECTURE}3) + else() + set(IOSENUM_H ${PROJECT_SOURCE_DIR}/cint/iosenum/iosenum.${ROOT_ARCHITECTURE}) +diff --git a/cint/cint/Module.mk b/cint/cint/Module.mk +index 4cfed92..0293321 100644 +--- a/cint/cint/Module.mk ++++ b/cint/cint/Module.mk +@@ -161,6 +161,10 @@ ifeq ($(GCC_MAJOR),4) + CINTS2 := $(filter-out $(MODDIRSD)/libstrm.%,$(CINTS2)) + CINTS2 += $(MODDIRSD)/gcc4strm.cxx + endif ++ifeq ($(GCC_MAJOR),5) ++CINTS2 := $(filter-out $(MODDIRSD)/libstrm.%,$(CINTS2)) ++CINTS2 += $(MODDIRSD)/gcc4strm.cxx ++endif + ifneq ($(CLANG_MAJOR),) + CINTS2 := $(filter-out $(MODDIRSD)/libstrm.%,$(CINTS2)) + CINTS2 += $(MODDIRSD)/gcc4strm.cxx +@@ -203,6 +207,9 @@ IOSENUMC := $(CINTDIRIOSEN)/iosenum.cxx + ifneq ($(CLANG_MAJOR),) + IOSENUMA := $(CINTDIRIOSEN)/iosenum.$(ARCH)3 + else ++ifeq ($(GCC_MAJOR),5) ++IOSENUMA := $(CINTDIRIOSEN)/iosenum.$(ARCH)3 ++else + ifeq ($(GCC_MAJOR),4) + IOSENUMA := $(CINTDIRIOSEN)/iosenum.$(ARCH)3 + else +@@ -213,6 +220,7 @@ IOSENUMA := $(CINTDIRIOSEN)/iosenum.$(ARCH) + endif + endif + endif ++endif + + # used in the main Makefile + ALLHDRS += $(CINTHT) $(CINTINCLUDES) +@@ -344,6 +352,10 @@ $(call stripsrc,$(CINTDIRSD)/%strm.o): CINTCXXFLAGS += -I$(CINTDIRL)/$(notdir + ifeq ($(GCC_MAJOR),4) + $(call stripsrc,$(CINTDIRSD)/gcc4strm.o): CINTCXXFLAGS += -Wno-strict-aliasing + endif ++ifeq ($(GCC_MAJOR),5) ++$(call stripsrc,$(CINTDIRSD)/gcc4strm.o): CINTCXXFLAGS += -Wno-strict-aliasing ++endif ++ + + $(MAKECINTO) $(CINTO): $(CINTCONF) $(ORDER_) $(CINTINCLUDES) + +-- +1.8.2 + diff --git a/root-gcc5-3.patch b/root-gcc5-3.patch new file mode 100644 index 0000000..740561e --- /dev/null +++ b/root-gcc5-3.patch @@ -0,0 +1,34 @@ +From 0a2381e82798f6fad2013d553c76b5f321b8a6a3 Mon Sep 17 00:00:00 2001 +From: David Abdurachmanov +Date: Wed, 11 Mar 2015 11:37:28 +0100 +Subject: [PATCH 1/1] Disable unsecure gets() in CINT as it's removed in C11 + +gets() for a long time is considered unsafe, one could use fgets() +instead. Also gets_s() could be used since C11. GCC 5 and Clang 3.6 +defaults to C11 as default now. glibc still provides gets() only +if compiling for GNU specifically (_GNU_SOURCE is defined). Other +libc implementations behavior is unknown to me. + +Required for Fedora 22. + +Signed-off-by: David Abdurachmanov +--- + cint/cint/lib/stdstrct/stdfunc.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cint/cint/lib/stdstrct/stdfunc.h b/cint/cint/lib/stdstrct/stdfunc.h +index 530bc71..f849b13 100644 +--- a/cint/cint/lib/stdstrct/stdfunc.h ++++ b/cint/cint/lib/stdstrct/stdfunc.h +@@ -70,7 +70,7 @@ size_t fwrite(void *buffer,size_t size,size_t n,FILE *fp); + int getc(FILE *fp); + int getchar(void); + char *getenv(const char *variable); +-char *gets(char *buffer); ++/* char *gets(char *buffer); */ + struct tm* gmtime(time_t *caltime); + int isalnum(int c); + int isalpha(int c); +-- +1.8.2 + diff --git a/root-gcc5-4.patch b/root-gcc5-4.patch new file mode 100644 index 0000000..14f8cd9 --- /dev/null +++ b/root-gcc5-4.patch @@ -0,0 +1,49 @@ +From 19f4cf3c144c4a2b6e2e758c601fc3976e9baa39 Mon Sep 17 00:00:00 2001 +From: David Abdurachmanov +Date: Wed, 11 Mar 2015 11:43:02 +0100 +Subject: [PATCH 1/1] Remove `operator void*() const` from CINT if compiled in + C++11 mode (GCC 5) + +`std::basic_ios` had `operator void*() const` until C++11 and after that +`explicit operator bool() const`. libstdc++ with GCC 5 finally cleans up +things to be more compliant with C++11 standard. This is required if ROOT5 +is compiled in C++11 mode (--enable-c++11) on GCC 5. + +Signed-off-by: David Abdurachmanov +--- + cint/cint/src/dict/gcc4strm.cxx | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/cint/cint/src/dict/gcc4strm.cxx b/cint/cint/src/dict/gcc4strm.cxx +index 2bc8d43..4db0264 100644 +--- a/cint/cint/src/dict/gcc4strm.cxx ++++ b/cint/cint/src/dict/gcc4strm.cxx +@@ -1047,11 +1047,14 @@ static int G__G__stream_13_0_8(G__value* result7, G__CONST char* funcname, struc + return(1 || funcname || hash || result7 || libp) ; + } + ++#if __cplusplus < 201103L ++// operator void*() const is only available until C++11. Starting C++11 it's replaced with explicit operator bool() const + static int G__G__stream_13_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) + { + G__letint(result7, 89, (long) ((const basic_ios >*) G__getstructoffset())->operator void*()); + return(1 || funcname || hash || result7 || libp) ; + } ++#endif + + static int G__G__stream_13_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash) + { +@@ -4097,7 +4100,10 @@ static void G__setup_memfuncbasic_ioslEcharcOchar_traitslEchargRsPgR(void) { + G__memfunc_setup("clear",519,G__G__stream_13_0_6, 121, -1, -1, 0, 1, 1, 1, 0, "i - 'ios_base::iostate' 0 'goodbit' state", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("setstate",877,G__G__stream_13_0_7, 121, -1, -1, 0, 1, 1, 1, 0, "i - 'ios_base::iostate' 0 - state", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("rdstate",759,G__G__stream_13_0_8, 105, -1, G__defined_typename("ios_base::iostate"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0); ++#if __cplusplus < 201103L ++// operator void*() const is only available until C++11. Starting C++11 it's replaced with explicit operator bool() const + G__memfunc_setup("operator void*",1384,G__G__stream_13_0_9, 89, -1, -1, 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0); ++#endif + G__memfunc_setup("operator!",909,G__G__stream_13_0_10, 103, -1, -1, 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("good",425,G__G__stream_13_0_11, 103, -1, -1, 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0); + G__memfunc_setup("eof",314,G__G__stream_13_0_12, 103, -1, -1, 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0); +-- +1.8.2 + diff --git a/root-meta.patch b/root-meta.patch index 6395e3a..02dc37d 100644 --- a/root-meta.patch +++ b/root-meta.patch @@ -1,7 +1,7 @@ diff -ur root-5.32.00.orig/core/meta/src/TCint.cxx root-5.32.00/core/meta/src/TCint.cxx --- root-5.32.00.orig/core/meta/src/TCint.cxx 2011-12-02 12:41:50.000000000 +0100 +++ root-5.32.00/core/meta/src/TCint.cxx 2012-02-18 12:07:12.157520013 +0100 -@@ -320,23 +320,27 @@ +@@ -320,25 +320,29 @@ ProcessLine("#define ROOT_TError 0"); ProcessLine("#define ROOT_TGenericClassInfo 0"); @@ -30,6 +30,8 @@ diff -ur root-5.32.00.orig/core/meta/src/TCint.cxx root-5.32.00/core/meta/src/TC - ProcessLine("#include "); - delete[] whichTypesCint; - } +- // We cannot autoload this but ROOT needs it (ROOT-7103) +- ProcessLine("#include "); + // Allow the usage of ClassDef and ClassImp in interpreted macros + // if RtypesCint.h can be found (think of static executable without + // include/) @@ -38,7 +40,9 @@ diff -ur root-5.32.00.orig/core/meta/src/TCint.cxx root-5.32.00/core/meta/src/TC + ProcessLine("#include "); + delete[] whichTypesCint; + } ++ // We cannot autoload this but ROOT needs it (ROOT-7103) ++ ProcessLine("#include "); + } - } + //______________________________________________________________________________ diff --git a/root.spec b/root.spec index ad2948c..6dd2cac 100644 --- a/root.spec +++ b/root.spec @@ -21,20 +21,14 @@ %endif %endif -%if %($(pkg-config emacs) ; echo $?) -%global emacs_version 21.4 -%global emacs_lispdir %{_datadir}/emacs/site-lisp -%else -%global emacs_version %(pkg-config emacs --modversion) -%global emacs_lispdir %(pkg-config emacs --variable sitepkglispdir) -%endif +%{!?_emacs_sitelispdir: %global _emacs_sitelispdir %{_datadir}/emacs/site-lisp} %global xrootd 1 %{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}} Name: root -Version: 5.34.26 +Version: 5.34.28 %global libversion %(cut -d. -f 1-2 <<< %{version}) Release: 1%{?dist} Summary: Numerical data analysis framework @@ -80,6 +74,11 @@ Patch7: %{name}-hdfs.patch Patch8: %{name}-dont-link-jvm.patch # Use local copy of input file during documentation generation Patch9: %{name}-usa.patch +# Fixes for gcc 5 (from upstream git) +Patch10: %{name}-gcc5-1.patch +Patch11: %{name}-gcc5-2.patch +Patch12: %{name}-gcc5-3.patch +Patch13: %{name}-gcc5-4.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) # The build segfaults on ppc64 during an invocation of cint: # https://savannah.cern.ch/bugs/index.php?70542 @@ -193,6 +192,13 @@ BuildRequires: font(stixsize1) %endif %endif Requires: hicolor-icon-theme +%if %{?fedora}%{!?fedora:0} >= 15 || %{?rhel}%{!?rhel:0} >= 7 +Requires: emacs-filesystem >= %{_emacs_version} +%endif +Provides: emacs-%{name} = %{version}-%{release} +Provides: emacs-%{name}-el = %{version}-%{release} +Obsoletes: emacs-%{name} < 5.34.28 +Obsoletes: emacs-%{name}-el < 5.34.28 %description The ROOT system provides a set of object oriented frameworks with all @@ -1119,36 +1125,6 @@ Group: Applications/Engineering %description tree-viewer This package contains a plugin for browsing a ROOT tree in ROOT. -%package -n emacs-%{name} -Summary: Compiled elisp files to run root under GNU Emacs -Group: Applications/Engineering -%if %{?fedora}%{!?fedora:0} >= 10 || %{?rhel}%{!?rhel:0} >= 6 -BuildArch: noarch -%endif -Requires: %{name} = %{version}-%{release} -%if %{?rhel}%{!?rhel:0} == 5 -Requires: emacs >= %{emacs_version} -%else -Requires: emacs(bin) >= %{emacs_version} -%endif - -%description -n emacs-%{name} -emacs-root is an add-on package for GNU Emacs. It provides integration -with ROOT. - -%package -n emacs-%{name}-el -Summary: Elisp source files for root under GNU Emacs -Group: Applications/Engineering -%if %{?fedora}%{!?fedora:0} >= 10 || %{?rhel}%{!?rhel:0} >= 6 -BuildArch: noarch -%endif -Requires: emacs-%{name} = %{version}-%{release} - -%description -n emacs-%{name}-el -This package contains the elisp source files for root under GNU Emacs. You -do not need to install this package to run root. Install the emacs-root -package to use root with GNU Emacs. - %prep %setup -q if pkg-config --max-version 2.1.2 ftgl ; then @@ -1163,6 +1139,10 @@ fi %patch7 -p1 %patch8 -p1 %patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 find . '(' -name '*.cxx' -o -name '*.cpp' -o -name '*.C' -o -name '*.c' -o \ -name '*.h' -o -name '*.hh' -o -name '*.hi' -o -name '*.py' -o \ @@ -1249,7 +1229,7 @@ unset QTINC --libdir=%{_libdir}/%{name} \ --etcdir=%{_datadir}/%{name} \ --docdir=%{_pkgdocdir} \ - --elispdir=%{emacs_lispdir}/%{name} \ + --elispdir=%{_emacs_sitelispdir}/%{name} \ %if %{?fedora}%{!?fedora:0} >= 13 || %{?rhel}%{!?rhel:0} >= 6 --disable-builtin-afterimage \ %else @@ -1376,7 +1356,7 @@ mv %{buildroot}%{_libdir}/%{name}/*.py* %{buildroot}%{python_sitearch} # Do emacs byte compilation emacs -batch -no-site-file -f batch-byte-compile \ - %{buildroot}%{emacs_lispdir}/%{name}/*.el + %{buildroot}%{_emacs_sitelispdir}/%{name}/*.el # Install desktop entry and icon mkdir -p %{buildroot}%{_datadir}/applications @@ -1867,6 +1847,14 @@ fi %{_datadir}/icons/hicolor/48x48/apps/root.png %{_datadir}/icons/hicolor/48x48/mimetypes/application-x-root.png %{_datadir}/mime/packages/root.xml +%if %{?fedora}%{!?fedora:0} < 15 && %{?rhel}%{!?rhel:0} < 7 +# No emacs-filesystem package +%dir %{_datadir}/emacs +%dir %{_emacs_sitelispdir} +%endif +%dir %{_emacs_sitelispdir}/%{name} +%{_emacs_sitelispdir}/%{name}/*.elc +%{_emacs_sitelispdir}/%{name}/*.el %files icons %{_datadir}/%{name}/icons @@ -2412,14 +2400,11 @@ fi %{_libdir}/%{name}/libTreeViewer.* %{_datadir}/%{name}/plugins/TVirtualTreeViewer/P010_TTreeViewer.C -%files -n emacs-%{name} -%dir %{emacs_lispdir}/root -%{emacs_lispdir}/root/*.elc - -%files -n emacs-%{name}-el -%{emacs_lispdir}/root/*.el - %changelog +* Fri Apr 03 2015 Mattias Ellert - 5.34.28-1 +- Update to 5.34.28 +- Merge emacs support files into main package (guidelines updated) + * Tue Feb 24 2015 Mattias Ellert - 5.34.26-1 - Update to 5.34.26 - Drop patch root-xrdversion.patch diff --git a/sources b/sources index 667e107..eb2cd1b 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -baf87e434af88ecbbdfc47ab49608b57 root-5.34.26.tar.xz +87647e87b2ab5634759e0efe99ec1543 root-5.34.28.tar.xz afb35390554c43a7d92576a6d9d3ae8a usa.root