Re: Supporting multiple GNU toolchains

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [RPM Ecosystem]     [Linux Kernel]     [Red Hat Install]     [PAM]     [Red Hat Watch]     [Red Hat Development]     [Red Hat]     [Gimp]     [Yosemite News]     [IETF Discussion]

  Powered by Linux