Gentoo Archives: gentoo-dev

From: Craig Andrews <candrews@g.o>
To: llvm@g.o, gentoo-dev@l.g.o
Cc: gienah@g.o, gentoo@××××××.net
Subject: [gentoo-dev] How to handle ROC forks of llvm and clang
Date: Fri, 14 Dec 2018 20:00:42
Message-Id: 5d774dabaee69376e4780c076fb271a6@gentoo.org
I'm working on packaging the Radeon Open Compute (ROC) packages for 
Gentoo with first goal being to get the OpenCL runtime working.

The OpenCL runtime can be found at: 
https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime

It has a mess of dependencies; I can handle most of them (not that it'll 
be easy, but at least I know what to do). The 3 troublemakers I'd like 
to discuss are the ROC forks of:
llvm: https://github.com/RadeonOpenCompute/llvm/
clang: https://github.com/RadeonOpenCompute/clang/
ldd: https://github.com/RadeonOpenCompute/ldd/

Potential approaches include:
1) Create new packages for each: sys-devel/radeon-open-compute-llvm, 
sys-devel/radeon-open-compute-clang, sys-devel/radeon-open-compute-lld
2) Add use flags to existing packages that apply the ROC changes as a 
patch
3) Add use flags to existing packages that use ROC archives as the 
SRC_URIs
4) Take the approach justxi did in his overlay which is to bundle these 
dependencies wherever they're needed; for example, take a look at 
https://github.com/justxi/rocm/blob/master/media-libs/ROCm-OpenCL-Runtime/ROCm-OpenCL-Runtime-1.7.0-r3.ebuild

Personally, I dislike (4), as it's contrary to the bundling policy that 
Gentoo tries to follow.

For (2), I'm concerned that generating and maintaining that patch may be 
really annoying and a lot of work.

For (3), it's not great to have different base archives.

Since ROC will eventually upstream all of it's work, (2) is ideal - but 
I have no idea what the timeline on that upstreaming effort may be, and 
I can't find anything that gives a hint.

What is the best way forward? And what would be acceptable to the Gentoo 
LLVM project?

Thanks,
~Craig

Attachments

File name MIME type
signature.asc application/pgp-signature

Replies