On 10/24/2014 10:20 AM, Christophe Lyon wrote:
> On 23 October 2014 12:00, Will Newton <will.new...@linaro.org> wrote:
>> On 23 October 2014 10:44, Yvan Roux <yvan.r...@linaro.org> wrote:
>>> Hi,
>>>
>>> after the recent lkml thread on blacklisting some GCC versions (see
>>> below) and the issue in identifying accurately our releases, I propose
>>> to add some Linaro specific macros in our branches (i.e this patch
>>> will not go upstream) to be able to check the Linaro version at
>>> preprocessor time.  It will not solve the kernel issue with 4.8.N but
>>> hopefully help if such issues happen again the the futur.
>>>
>>>  http://thread.gmane.org/gmane.linux.ports.arm.omap/119412
>>>
>>> What GCC has for the moment is 3 macros __GNUC__, __GNUC_MINOR__ and
>>> __GNUC_PATCHLEVEL__ that are filled by parsing version number
>>> contained in BASE-VER file, for instance on our 4.9 branch:
>>>
>>> __GNUC__ = 4
>>> __GNUC_MINOR__ = 9
>>> __GNUC_PATCHLEVEL__ = 2
>>>
>>> In our branches, the Linaro version number is in the LINARO-VERSION
>>> file and has this format:
>>>
>>> At release point : 4.9-2014.10
>>> Head of our branch: 4.9-2014.10-1~dev
>>>
>>> I want your (the team and users) point of view on the macros we need
>>> to create from it.  Here is the options I see:
>>>
>>> A - Be fully Linaro consistent:
>>>
>>> __LINARO_MAJOR__ = 4
>>> __LINARO_MINOR__ = 9
>>> __LINARO_YEAR__ = 2014
>>> __LINARO_MONTH__ = 10
>>> __LINARO_SPIN__ = 0 or N
>>> __LINARO_STATE = 0 for release or 1 for dev
>>>
>>> B - Only give information that are not in the __GNUC* macros:
>>>
>>> __LINARO_YEAR__ = 2014
>>> __LINARO_MONTH__ = 10
>>> __LINARO_SPIN__ = 0 or N
>>> __LINARO_STATE = 0 for release or 1 for dev
>>>
>>> C - Be more concise:
>>>
>>> __LINARO_VERSION__ = 201410
>>> __LINARO_SPIN__ = 0 or N
>>> __LINARO_STATE = 0 for release or 1 for dev
>>>
>>> D - Even more:
>>>
>>> __LINARO_VERSION__ = 201410N (with N the spin number)
>>> __LINARO_STATE = 0 for release or 1 for dev
>>>
>>> E - Hardcore conciseness:
>>>
>>> __LINARO__ = 201410NM (N = SPIN M = state)
>>>
>>> F - One of the previous ones without STATE information.
>>>
>>> G - One of the previous ones without SPIN information.
>>>
>>> Do you think it is something we need ?
>>>
>>> Do we already have that kind of macros in some products (binutils,
>>> gdb, glibc, ...) ?
>>>
>>> What option do you prefer ?
>>>
>>> My own feeling is that C+F is sufficient as STATE information is
>>> useless for releases and I don't think dev builds checking have to be
>>> used in another project.  But SPIN information can be useful has we're
>>> doing respin because an outstanding issue/improvement has to be
>>> fixed/added to the current release, thus it is the kind of thing you
>>> want to check if the version of the compiler you are using contains.
>>
>> Personally I think I would go D+F, but with two digits for the spin:
>>
>> __LINARO_VERSION__ = 201410NN (with NN the spin number)
>>
>> I guess that could be misread as a date though. :-/

Do you expect to make more than one spin in a day? Do you expect to make a
lower-numbered spin at a later date? If the answers are no, then why not
simply use YYYYMMDD? Just in case you could document that under unusual
circumstances, such as the above, the day may be slightly off, but that
arithmetic comparison operators will work as expected.

Chris

-- 
Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to