root icon indicating copy to clipboard operation
root copied to clipboard

[build] Remove hsimple tutorial from main CMake build

Open vepadulano opened this issue 1 year ago • 1 comments

The main motivation is because it is a clear blocker for proper cross-compilation. Also, the tutorial itself is already run as the first tutorial irrespective of the build configuration so the test is actually repeated.

vepadulano avatar Jun 25 '24 15:06 vepadulano

Test Results

    13 files      13 suites   2d 15h 37m 31s :stopwatch:  2 651 tests  2 105 :white_check_mark: 0 :zzz:   546 :x: 32 645 runs  31 561 :white_check_mark: 0 :zzz: 1 084 :x:

For more details on these failures, see this check.

Results for commit 4fa46b1c.

:recycle: This comment has been updated with latest results.

github-actions[bot] avatar Jun 25 '24 16:06 github-actions[bot]

cross-compilation is blocked by the creation of modules.idx anyway, which significantly reduces the argument for removing the hsimple tutorial IMHO...

hahnjo avatar Jul 03 '24 08:07 hahnjo

It's still one less patch needed for the conda packaging. Clearly there's a bigger rock to move, but this smaller one could be moved anyway perhaps?

vepadulano avatar Jul 03 '24 08:07 vepadulano

But how do you solve the modules.idx creation, can you link to a patch? AFAICT from https://github.com/conda-forge/root-feedstock/pull/226/files, there is qemu in place for that, so that should also take care of hsimple, no?

hahnjo avatar Jul 03 '24 08:07 hahnjo

But how do you solve the modules.idx creation, can you link to a patch?

The build is actually cross-compiling as requested in the conda-forge.yml file (e.g. here). Then the conda forge CI is able to automatically detect that an executable e.g. rootcling_stage1 that is being invoked during the build was built for a different target platform than the build one. In such cases, it runs that executable via qemu (which in turn is enabled by binfmt_misc). There's some hint of it in the CI files such as https://github.com/conda-forge/root-feedstock/blob/1987df5fb087fb149f114dab14f6dd5f99e3156d/.azure-pipelines/azure-pipelines-linux.yml#L90-L96 (these are generated automatically by conda-forge)

This does not explain alone the fact that there is also a patch to disable hsimple.root generation in the conda forge ROOT feedstock. At some point in the past that was generating some other problem at build time (unclear whether that was only fault of ROOT or also a bug in qemu itself, see this bug report), so that patch was added.

IMHO clearly the better approach is to have less patches and walk towards a fully cross-compilable ROOT build, albeit this PR might be just a very small step.

vepadulano avatar Jul 03 '24 08:07 vepadulano

IMHO clearly the better approach is to have less patches

Sure, so can we just remove the patch from the conda forge and see what happens? It's still not clear to me why it is needed.

walk towards a fully cross-compilable ROOT build, albeit this PR might be just a very small step.

I agree, but I don't see the bigger picture here: how do you want to achieve this with all of rootcling for dictionary and module generation? Personally I don't see a value of starting at the easy leaves with no clear plan how to actually tackle the hard parts.

hahnjo avatar Jul 03 '24 09:07 hahnjo

I agree we should wait for a more robust solution for cross-compilation of the whole project before removing this simple test. I will close this PR and if in the future we decide what to do we can resume from here 👍

vepadulano avatar Jul 15 '24 14:07 vepadulano