-
Notifications
You must be signed in to change notification settings - Fork 415
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
More information on CDT (Core Dependency Tree) packages? #3696
Comments
You are not forced to use our compilers but I would encourage it if you want to achieve the optimum level of compatibility with AD packages. All that 'compiler' does is to use ours by default if it finds no compiler package(s) identified in conda_build_config.yaml. The keys to change are: c_compiler, cxx_compiler and fortran_compiler, be aware that the conda subdir (osx-64, linux-32 etc) get prepended to these package names. You can create empty packages here if you wish and just use gcc or g++ in your recipe. Regarding CDT packages, I agree we should document them properly, but as a brief explanation, AD promises compatibility with CentOS6 (and some compatibility with SLES11). We use repackaged RPMs from CentOS6 moved into the sysroot of our pseudo-cross compilers. To see which packages use CDTs you can recursively clone https://github.com/AnacondaRecipes/aggregate.git and search for cdt in the yaml files (I'd estimate about 5-10% of our packages use them directly, basically the X11 stack). If achieving compatibility with AD (and CentOS6) is something you wish to achieve then you have two choices when it comes to libusb:
|
CDT packages are a conda thing yes. It gives enough isolation that we do not need to force people to use a specific linux distro (or docker or chroots or other isolation - though they are free to combine our isolation with those systems for even better isolation!), however if a build system explicitly adds .. to help avoid this recent .. and I think that the isolation and error are probably good enough (this If you ever need to do 'binary repackaging' as we do when we create these CDT packages, you can use |
Thanks for that info! It's super helpful. I'm definitely trying to move my packages to be "more compatible" which I believe means moving towards your new compilers + CDT system. QQ What does AD stand for? Anaconda Distro? FYI It might be worth just dumping this explanation above in CDT section? (Just a FYI, I'm in the process of updating our packaging of bare metal cross-compilers and FPGA tools for our Python based hardware description language project. See https://github.com/timvideos/litex-buildenv -- we are using conda to provide a self contained SDK style environment.) |
I abbreviate Anaconda Distribution to AD, yeah. Saves my fingers a bit.
Yes, I remember our discussion about static compilers. I think the issues on our end are all fixed for that now, or are you still unable to build them fully statically? |
We were able to statically link the compilers but then ran into ContinuumIO/anaconda-issues#8203 (Due to glibc 2.12 limitation, static executables that use time(), cpuinfo() and maybe a few others cannot be run on systems that do not support or use I'm now trying to test if using the AD compilers means we don't need to statically link and can just bypass the above issue. I'm also hoping to port our cross compilers to be based on your packages which used crosstool-ng. (I'm also hoping that it will make it easier for us to provide Mac + Windows packages too.) |
I'd love to have the time to build out a matrix of cross-compilers so you can build conda-packages for Linux, macOS and Windows (using clang-cl backend with either the clang-gcc or the clang-cl frontend) on any of the other OSes. Testing would need careful consideration, as would I also ported macOS and iPhone compilers to run on Linux and Windows a good few years ago. That's how I got into |
From a building packages point of view, I only really care about building on Linux (IE Travis actually :-). For people using the packages, I would like to support as many platforms as possible but have historically restricted it to Linux due to not having enough time. If you ever want some FPGA hardware to play with, I would be more than happy to send you some to play with! However, I'm guessing you already have way to many time commitments. |
Yeah, I have far more tasks to do than time to do them, as always, but many thanks for the offer! |
I noticed your crosstool-ng-feedstock recently changed to using the repository at https://github.com/continuumio/crosstool-ng.git -- Should I be basing my ct-ng patches on top of that repo? |
If you have changes you think are more appropriate for Yes, we moved it to be more official and to standardise on the master branch and also forked it directly from the upstream project instead of using the If your patches are too Anaconda-specific then it's fine to submit a PR to us. If it's in support of esoteric platforms that you need to support then so long as they don't break intel linux then I personally don't mind carrying them, esp. if it opens AD up to other platforms. We'd not build these esoteric compiler binaries though unless there was a strong demand (which I guess esoteric excludes), we'd leave that up to you instead. |
Oh, one important consideration when building the compilers is to do it on CentOS6 using the system compilers. If you don't do this then the compilers may not run on other distros (or even compile, I've only rarely built them on any other distro and just during development). This is the only package that needs to be built on CentOS6 though. |
What is the status of compiling crosstool-ng compilers using the anaconda compilers? I see comments about "fixme bootstrap" :-) |
It might work fine, comments have probably rotted, but use the Our compilers are bootstrapped though internally since So build
If you run into trouble building them the give me a shout. |
The system packages you need to install on CentOS6 are:
|
Hi there, thank you for your contribution! This issue has been automatically marked as stale because it has not had recent activity. It will be closed automatically if no further activity occurs. If you would like this issue to remain open please:
NOTE: If this issue was closed prematurely, please leave a comment. Thanks! |
Sorry if this is the wrong repository to log this issue, feel free to move to the right location.
The
Host
section of Defining metadata (meta.yaml) page talks about a thing calledCDT
(which apparently stands for Core Dependency Tree). I however can't seem to find any more information about CDT after a bunch of Googling. This leaves me with a couple of questions;requirements:
output? The example seems to imply you have to add them yourself?I have a couple of packages which need to link against libusb and it seems. In older versions of conda, we got this from the system host (and it worked mostly by accident). It seems like this should be explicitly set as a requirement by a CDT definition in newer conda builds? I however didn't know what to put in my
requirements
section. I was guessing something like{{ cdt('libusb-devel') }}
or something?The text was updated successfully, but these errors were encountered: