In regard to: Re: Supporting multiple GNU toolchains, Kyle Kloepper said...:
Are there any thoughts on how to best support multiple GNU toolchains?
Is this for internal use only, or do you want your spec file(s) for your RPM(s) to be redistributable and generally useful to others? Do you do all builds from a build account, or do different users (with potentially different environment settings) need to be able to do rpm builds? I personally would be annoyed by having to edit the spec file to switch which build environment is used. You could obviate the need for setting _CC and _CXX in your macros.toolchain and allow it to be overridden on the command line by using something like %configure \ CC=%{?!_CC: %define _CC /opt/gcc4_6/bin/gcc}; export CC; \ CXX=%{?!_CXX: %define _CXX /opt/gcc4_6/bin/g++}; export CXX; \ ... and then doing something like rpmbuild --define '%_CC /usr/bin/gcc' --define '%_CXX /usr/bin/g++' (you may not need the % for each macro with --define. I don't know, as this isn't something I typically use and I haven't tested it). However, is all of that machinery really any better than just exporting CC and CXX in your environment before you run rpmbuild? Tim
From: Kyle Kloepper <kyle.kloepper@xxxxxxxxxxxx<mailto:kyle.kloepper@xxxxxxxxxxxx>> Date: Tuesday, November 13, 2012 4:16 PM To: "rpm-list@xxxxxxxxxxxxx<mailto:rpm-list@xxxxxxxxxxxxx>" <rpm-list@xxxxxxxxxxxxx<mailto:rpm-list@xxxxxxxxxxxxx>> Subject: Supporting multiple GNU toolchains In my build environment I have multiple GNU toolchains. For instance gcc 4.4 to compile kernel, 4.6 for general programs, and 4.7 for experimental work. To make full use of these toolchains when packaging components, I am looking to do two things: 1. Set a default toolchain used by all invocations of rpmbuild (which may or may not be the same toolchain used when I compile outside of rpmbuild) 2. Allow a SPEC file to easily select a specific toolchain to use. This selection would override the default toolchain for the machine My plan to accomplish this was to redefine the %configure macro in /etc/rpm/macros.toolchain and add the following: %_CC /opt/gcc4_6/bin/gcc %_CXX /opt/gcc4_6/bin/g++ %configure \ CC=%{_CC} ; export CC ; \ CXX=%{_CXX} ; export CXX ; \ ... Then in a specific SPEC file the toolchain could be selected by changing the %_CC and %_CXX variables: ... %define _CC /usr/bin/gcc %define _CXX /usr/bin/g++ ... Is this the best way to allow multiple toolchains to coexist for packaging with RPM? -Kyle
-- Tim Mooney Tim.Mooney@xxxxxxxx Enterprise Computing & Infrastructure 701-231-1076 (Voice) Room 242-J6, IACC Building 701-231-8541 (Fax) North Dakota State University, Fargo, ND 58105-5164 _______________________________________________ Rpm-list mailing list Rpm-list@xxxxxxxxxxxxx http://lists.rpm.org/mailman/listinfo/rpm-list