Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 512238 - sci-physics/root-6.00.02 version bump
Summary: sci-physics/root-6.00.02 version bump
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Andrew Savchenko
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-06-03 03:24 UTC by jeremiah
Modified: 2015-04-12 19:16 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
build.log.gz (build.log.gz,128.43 KB, application/gzip)
2014-06-30 12:59 UTC, Jauhien Piatlicki (RETIRED)
Details
emerge.info (emerge.info,5.92 KB, text/plain)
2014-06-30 13:00 UTC, Jauhien Piatlicki (RETIRED)
Details

Note You need to log in before you can comment on or make changes to this bug.
Description jeremiah 2014-06-03 03:24:31 UTC
Try out our brand new model, fresh off the production line! Now with more Cling!
(Product may contain trace amounts of Radioactivity and/or Higgs Bosons)

Reproducible: Always
Comment 1 Oliver Freyermuth 2014-06-05 11:02:14 UTC
As also root-9999 is still ./configure-based: 
Please note that upstream encourages to switch to CMake for building ROOT, support should be completed by now: 
http://root.cern.ch/root/htmldoc/notes/release-notes.html#build-system
Of course rewriting the ebuild to CMake is a larger piece of work.
Comment 2 Andrew Savchenko gentoo-dev 2014-06-05 20:13:21 UTC
I plan add root-6.00.00 with configure based build and some next release will be with cmake (probably live ebuild first, then some release after testing). At this moment configure is not deprecated, so there is nothing wrong with using it. And it should have no difference for ebuild users what build system is used if it properly supports all ROOT features. Also configure-based approach is more mature and I'm really afraid cmake will bring a lot of bugs up to the surface.

I'm planning to work on ROOT-6 this weekend, so please be patient.

Another thought: should I work on cling as a separate package? Or this can wait for a while? Or we don't need this unbundling at all?
Comment 3 Jauhien Piatlicki (RETIRED) gentoo-dev 2014-06-05 20:49:55 UTC
(In reply to Andrew Savchenko from comment #2)

> Another thought: should I work on cling as a separate package? Or this can
> wait for a while? Or we don't need this unbundling at all?

My opinion -- it would be nice, as somebody (at least me ;-) ) may want to use it as separate package.

But for root users themselves it does not matter, I think. So if you have no time or it is too complicated -- just do not mind.
Comment 4 Oliver Freyermuth 2014-06-05 21:23:35 UTC
(In reply to Andrew Savchenko from comment #2)
> [...] Also configure-based approach is more mature and I'm really afraid 
> cmake will bring a lot of bugs up to the surface.
I agree, you are right. Although I have good experience with cmake, I know that the ROOT build process is a bit special in itself. 

> I'm planning to work on ROOT-6 this weekend, so please be patient.
Thanks! :-)

> Another thought: should I work on cling as a separate package? Or this can
> wait for a while? Or we don't need this unbundling at all?
I would personally also be interested in using it outside of ROOT, but I think it can wait for a while, the initial non-ROOT-cling-userbase is probably not too large.
Comment 5 Andrew Savchenko gentoo-dev 2014-06-14 01:51:18 UTC
Bad news here.

ROOT' cling uses highly modified llvm/clang fork internally. Its API is not compatible with mainstream (IOW system) clang, thus we must use bundled version.

It looks like I'll use cmake this time: configure for bundled llvm/clang is not --as-needed friendly at all.

Good news is that cling looks extractable.
Work continues...
Comment 6 Andrew Savchenko gentoo-dev 2014-06-14 11:30:46 UTC
I'll use cmake instead of configure. At least it build basic setup with bundled llvm fine and --as-needed friendly.

This is quite a serious change so it may be a good idea to mask root-6 for testing for a while.
Comment 7 Andrew Savchenko gentoo-dev 2014-06-15 21:34:37 UTC
Despite http://root.cern.ch/root/htmldoc/notes/release-notes.html#build-system says, the statement "The CMake system has been completed for this version and should be functionally equivalent to the classic one." is invalid.

As can be found in root/cmake/modules/SearchInstalledSoftware.cmake, the following modules are still not ported to cmake:

#---Report non implemented options---------------------------------------------------
foreach(opt afs chirp clarens glite hdfs pch peac sapdb srp geocad)
  if(${opt})
    message(STATUS ">>> Option '${opt}' not implemented yet! Signal your urgency to pere.mato@cern.ch")
    set(${opt} OFF CACHE BOOL "" FORCE)
  endif()
endforeach()

In Gentoo we support afs and geocad options. So I fell back to configure and fixed related issues and ported required. At least it builds :) So:

   ----------------------------------------------------------------------
  | Welcome to ROOT 6.00/00                          http://root.cern.ch |
  |                                         (c) 1995-2014, The ROOT Team |
  | Built for linuxx8664gcc                                              |
  | From heads/gentoo-patches@v6-00-00-3-ga53bc7f, Jun 16 2014, 00:43:27 |
  | Try '.help', '.demo', '.license', '.credits', '.quit'/'.q'           |
   ----------------------------------------------------------------------

I still have to rectify options, test at least some of them and fix html docs (ATM they still try to download some data.)

Also ROOT supports x32 ABI and while I can add a code to use it, I can't test it, because x32 is unsupported by the kernel on all my 50 Gentoo boxes :). So it isn't worth an effort, at least until someone will volunteer to test it thoroughly.
Comment 8 Andrew Savchenko gentoo-dev 2014-06-27 20:25:20 UTC
Everything is ready now except for API docs. Cling broke many things and will likely broke half of user macro (though this is fixable).
Comment 9 Andrew Savchenko gentoo-dev 2014-06-29 18:30:59 UTC
Hello,

I pushed root-6.00.01 and root-docs-6.00.01 to science overlay.

Main chainges:

CINT is now replaced by Cling. Reflex is also gone. Ruby is still not ported.
Cling is much stricter that CINT was:
http://root.cern.ch/root/htmldoc/notes/release-notes.html#cling-vs-cint
I expect that while user programs that were designed to compile and link with root libraries will works mostly well (though dictionary generators will have to migrate from rootcint to rootcling), a major breakage will occur for root macro files not intended for compiling. This will happen due to any of the following reasons: missed headers, not loaded libraries, C++ standard violations that were tolerable with CINT and are not with Cling. I added ewarn about this.

The following compilers are supported now (C++11 support is mandatory):
>=gcc-4.8
>=cling-3.4
>=icc-13
I tested root build with gcc and cling, but I don't own icc, so testing is welcome with the latter. Users asked my to add icc support, so I did.

Be warned, that ROOT uses bundled LLVM because it is patched and upstream can't be used instead due to different API. This will likely double compilation time.
Also this may lead to run-time issues due to LLVM clash. That is why I have to use bundled libAfterImage too, otherwise ROOT crasheds badly when any GUI window is attempted to be displayed (except for a splash screen).

As for new features, support is added for geocad (opencascade), http (fastcgi), vc (vectorized intrinsics) and vdt (very fast math library), the latter two are bundled.

Documentation:
Most pdf docs are now also generated from source tree. Known problem is with MACRCO_*.gif files from API doct that fail to generate. Upstream is contacted for assistance, maybe this is a Cling bug... Though all other API docs are usable (that is, just some gif files will be absent). And yes, one will need now both haskell (for pandoc) and latex to build docs. Happy compiling :)

And live ebuild is finally fixed again; and root-docs reuses root git tree making sure it is exactly the same.

Licenses:
ROOT embeds a lot of software, so whole package is not only LGPL-2.1, but contains a whole list of licenses (one can grep the sources). They were there in older versions, but were not mentioned. Now they are added to LICENSE: 
LGPL-2.1 freedist GPL-2 MSttfEULA LGPL-3 libpng UoI-NCSA

Plans for a future work:

1. API docs generation should be fixed. I hope upstream will help.

2. Add support for davix for webdav and amazon s3 protocol support. This requires davix (http://dmc.web.cern.ch/projects/davix/home) ebuild to be written and added to tree.

2. Unbundling stuff: cling, vdt. But first of all libafterimage issue should be solved. Depending on its severity, either stand-alone library should be fixed (but its upstream is dead for many years), or we should drop a stand-alone one and used bundled library, because a) it is maintained, b) no other package than root uses it.

3. x32 abi support. ROOT does this, but half of its dependencies doesn't. And I really doubt x32 abi is of any help, especially for root. So I don't plan to support it ATM unless someone volunteers to do all testing. (I don't have x32-compatible hosts, all my kernels lack this functionality.)

4. Cmake build system support. Please note that despite what is said on root.cern.ch, cmake still can't fully replace configure, e.g. afs and geocad are still not ported. Cmake should be implemented only in live ebuild first, then ported to released versions, but only after cmake will support all features we provide. So this is a low priority task.

Summary:
Testing is welcome, especially for icc and clang compilers. Help with stuff above, especially with unbundling and x32 is welcome too.

I doubt ROOT-6 should be put in portage tree right now due to issues described above and lack of testing. (I tested a lot, but I can't embrace everything.)
Comment 10 Jauhien Piatlicki (RETIRED) gentoo-dev 2014-06-30 12:59:11 UTC
Created attachment 379984 [details]
build.log.gz

For me it fails with clang. Log attached.
Comment 11 Jauhien Piatlicki (RETIRED) gentoo-dev 2014-06-30 13:00:16 UTC
Created attachment 379986 [details]
emerge.info
Comment 12 Jauhien Piatlicki (RETIRED) gentoo-dev 2014-06-30 13:00:49 UTC
With gcc everything is ok.
Comment 13 Andrew Savchenko gentoo-dev 2014-06-30 21:36:08 UTC
Hello,

thanks for testing.

(In reply to Jauhien Piatlicki from comment #10)
> Created attachment 379984 [details]
> build.log.gz
> 
> For me it fails with clang. Log attached.

Strange, but I can't reproduce this. I built root with exactly yours USE flags and both clang-3.4.1-r100 and 3.4.2-r100:

CC=clang CXX=clang++ LD=clang++ CFLAGS="-O2 -pipe -march=native" CXXFLAGS="$CFLAGS" LDFLAGS="-Wl,-O1,--as-needed,--sort-common,-z,combreloc,-z,relro,-z,now,--relax,--hash-style=gnu" FEATURES="noclean" USE="-* X emacs fftw ldap math mpi opengl pythia8 python sqlite ssl xml" emerge root

What version of clang are you using? Unfortunately, emerge.info omits this information. Please try the latest if you haven't already. If it still fails, please compile with CFLAGS="-g -O0" CXXFLAGS="$CFLAGS" FEATURES="splitdebug" and resubmit build.log. This way meaningful backtrace should be available.

This isn't a mere compilation failure. This is a segfault of rootcint. My guess that this is either miscompiled code due to clang bug or some really weird rootcint bug, which escaped both gcc and clang on my systems.
Comment 14 Andrew Savchenko gentoo-dev 2014-07-02 07:58:16 UTC
Hi,

(In reply to Jauhien Piatlicki from comment #10)

Could you please also try the latest live ebuild? One of recent commits fixed a rootcling segfault in ROOT.
Comment 15 Andrew Savchenko gentoo-dev 2014-07-06 15:09:10 UTC
6.00.02 is in science overlay now, as well as 5.34.18-r2 with some backported fixes. I mailed a request to the science team to put these updates in tree.
Comment 16 Andrew Savchenko gentoo-dev 2015-04-12 19:16:56 UTC
root-6.02.05-r2 is in the main tree now.