This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 4 of 7] cc/gcc: Add support for getting a gcc snapshot


On Thu, Dec 9, 2010 at 3:35 PM, Bryan Hundven <bryanhundven@gmail.com> wrote:
> On Thu, Dec 9, 2010 at 2:56 PM, Bryan Hundven <bryanhundven@gmail.com> wrote:
>> On Thu, Dec 9, 2010 at 2:06 PM, Yann E. MORIN
>> <yann.morin.1998@anciens.enib.fr> wrote:
>>> Bryan, All,
>>>
>>> On Tuesday 07 December 2010 10:06:57 Bryan Hundven wrote:
>>>> # HG changeset patch
>>>> # User Bryan Hundven <bryanhundven@gmail.com>
>>>> # Date 1291712194 28800
>>>> # Node ID 8f7cc140fe23d204d2d1915fb3f496f4eef9a7c6
>>>> # Parent Â73795525c82eaa7f4561f358c70d26ef9d72a446
>>>> cc/gcc: Add support for getting a gcc snapshot
>>>>
>>>> diff -r 73795525c82e -r 8f7cc140fe23 config/cc.in
>>>> --- a/config/cc.in  ÂMon Dec 06 22:42:07 2010 -0800
>>>> +++ b/config/cc.in  ÂTue Dec 07 00:56:34 2010 -0800
>>>> @@ -8,6 +8,9 @@
>>>> Âconfig CC_VERSION
>>>> Â Â Âstring
>>>>
>>>> +config CC_SNAPSHOT
>>>> + Â Âstring
>>>> +
>>>> Âsource "config.gen/cc.in"
>>>>
>>>> Âconfig CC_SUPPORT_CXX
>>>> diff -r 73795525c82e -r 8f7cc140fe23 config/cc/gcc.in
>>>> --- a/config/cc/gcc.in    ÂMon Dec 06 22:42:07 2010 -0800
>>>> +++ b/config/cc/gcc.in    ÂTue Dec 07 00:56:34 2010 -0800
>>>> @@ -19,6 +19,30 @@
>>>> Â# Don't remove next line
>>>> Â# CT_INSERT_VERSION_BELOW
>>>>
>>>> +config CC_V_4_6_SNAPSHOT
>>>> + Â Âbool
>>>> + Â Âprompt "4.6 Snapshot (EXPERIMENTAL)"
>>>> + Â Âdepends on EXPERIMENTAL
>>>> + Â Âselect CC_GCC_4_6_or_later
>>>> +
>>>> +config CC_V_4_5_SNAPSHOT
>>>> + Â Âbool
>>>> + Â Âprompt "4.5 Snapshot (EXPERIMENTAL)"
>>>> + Â Âdepends on EXPERIMENTAL
>>>> + Â Âselect CC_GCC_4_5_or_later
>>>> +
>>>> +config CC_V_4_4_SNAPSHOT
>>>> + Â Âbool
>>>> + Â Âprompt "4.4 Snapshot (EXPERIMENTAL)"
>>>> + Â Âdepends on EXPERIMENTAL
>>>> + Â Âselect CC_GCC_4_4_or_later
>>>> +
>>>> +config CC_V_4_3_SNAPSHOT
>>>> + Â Âbool
>>>> + Â Âprompt "4.3 Snapshot (EXPERIMENTAL)"
>>>> + Â Âdepends on EXPERIMENTAL
>>>> + Â Âselect CC_GCC_4_3_or_later
>>>> +
>>>
>>> I'd rather have the 4.x snapshots be beside the corresponding 4.x.y
>>> stable versions, eg:
>>> Â4.6-snapshot
>>> Â4.5-snapshot
>>> Â4.5.1
>>> Â4.5.0
>>> Â4.4-snapshot
>>> Â4.4.5
>>> Â4.4.4
>>> Â...
>>> Â4.3-snapshot
>>> Â4.3.5
>>> Â...
>>
>> Sure! Makes sense to me. I think Arnaud's version of the patch did the same.
>>
>>>> Âconfig CC_V_4_5_1
>>>> Â Â Âbool
>>>> Â Â Âprompt "4.5.1 (EXPERIMENTAL)"
>>>> @@ -154,6 +178,11 @@
>>>> Â Â Âselect CC_GCC_USE_MPC
>>>> Â Â Âselect CC_GCC_HAS_LTO
>>>>
>>>> +config CC_GCC_4_6_or_later
>>>> + Â Âbool
>>>> + Â Âdefault n
>>>> + Â Âselect CC_GCC_4_5_or_later
>>>> +
>>>> Âconfig CC_GCC_HAS_GRAPHITE
>>>> Â Â Âbool
>>>> Â Â Âdefault n
>>>> @@ -188,6 +217,10 @@
>>>> Â Â Âstring
>>>> Â# Don't remove next line
>>>> Â# CT_INSERT_VERSION_STRING_BELOW
>>>> + Â Âdefault "4.6-" if CC_V_4_6_SNAPSHOT
>>>> + Â Âdefault "4.5-" if CC_V_4_5_SNAPSHOT
>>>> + Â Âdefault "4.4-" if CC_V_4_4_SNAPSHOT
>>>> + Â Âdefault "4.3-" if CC_V_4_3_SNAPSHOT
>>>> Â Â Âdefault "4.5.1" if CC_V_4_5_1
>>>> Â Â Âdefault "4.5.0" if CC_V_4_5_0
>>>> Â Â Âdefault "4.4.5" if CC_V_4_4_5
>>>
>>> Ditto.
>>
>> ack.
>>
>>>> @@ -217,6 +250,15 @@
>>>> Â Â Âdepends on CC_LANG_JAVA
>>>> Â Â Âdepends on CC_GCC_4_3_or_later
>>>>
>>>> +config CC_SNAPSHOT
>>>> + Â Âstring
>>>> + Â Âprompt "gcc snapshot date"
>>>> + Â Âdepends on CC_V_4_6_SNAPSHOT || CC_V_4_5_SNAPSHOT || CC_V_4_4_SNAPSHOT || CC_V_4_3_SNAPSHOT
>>>> + Â Âdefault ""
>>>> + Â Âhelp
>>>> + Â Â Check ftp://gcc.gnu.org/pub/gcc/snapshots/ for the latest snapshot.
>>>> + Â Â The string to enter should be just the 'YYYYMMDD' date of the snapshot.
>>>> +
>>>
>>> How long are the snapshots kept on there? It looks like only for about
>>> 6-8 months. Which means that starting again with the same .config would
>>> make the toolchain no longer buildable after that period of time has
>>> elapsed.
>>>
>>> This should probably not be an issue, as using a toolchain based on a
>>> snapshot for production would be highly dubious. But once the option
>>> is here, people will start using it, forget about it, and ship their
>>> snapshot-toolchain to the outter world. Which means they'll be screwed
>>> if they have to fix it later.
>>>
>>> So, I would like you add a BIG FAT WARNING roughly saying:
>>>
>>> ÂBIG FAT WARNING ! You are using a snapshot, there is no guarantee that
>>> Âthe toolchain will properly work, or even build. You might even not be
>>> Âable to reproduce it later, if the upstream snapshot eventually disapears
>>> Â(and they have a tendency to disapear after a not-so-long period).
>>>
>>> ÂSo, it is HIGHLY advised:
>>> Â- that you think twice before you keep using a snapshot, and if so:
>>> Â- that you save the snapshot tarball by your own means in a safe place.
>>>
>>> Roughly that. I leave it to you to rephrase it, if you want. :-)
>>
>> I totally agree.
>> Maybe besides having EXPERIMENTAL, we should have SNAPSHOT or DEVELOPER.
>> And these options would have the "BIG FAT WARNING". What do you think?
>>
>>>> Âconfig CC_PKGVERSION
>>>> Â Â Âstring
>>>> Â Â Âprompt "gcc ID string"
>>>> diff -r 73795525c82e -r 8f7cc140fe23 scripts/build/internals.sh
>>>> --- a/scripts/build/internals.sh   ÂMon Dec 06 22:42:07 2010 -0800
>>>> +++ b/scripts/build/internals.sh   ÂTue Dec 07 00:56:34 2010 -0800
>>>> @@ -20,12 +20,12 @@
>>>> Â Â Â Â Âesac
>>>> Â Â Â Â ÂCT_DoLog INFO "Stripping all toolchain executables"
>>>> Â Â Â Â ÂCT_Pushd "${CT_PREFIX_DIR}"
>>>> - Â Â Â Âfor t in ar as c++ c++filt cpp dlltool dllwrap g++ gcc gcc-${CT_CC_VERSION} gcov gprof ld nm objcopy objdump ranlib readelf size strings strip addr2line windmc windres; do
>>>> + Â Â Â Âfor t in ar as c++ c++filt cpp dlltool dllwrap g++ gcc gcc-${CT_CC_REAL_VERSION} gcov gprof ld nm objcopy objdump ranlib readelf size strings strip addr2line windmc windres; do
>>>> Â Â Â Â Â Â Â[ -x bin/${CT_TARGET}-${t}${CT_HOST_SUFFIX} ] && ${CT_HOST}-strip ${strip_args} bin/${CT_TARGET}-${t}${CT_HOST_SUFFIX}
>>>> Â Â Â Â Â Â Â[ -x ${CT_TARGET}/bin/${t}${CT_HOST_SUFFIX} ] && ${CT_HOST}-strip ${strip_args} ${CT_TARGET}/bin/${t}${CT_HOST_SUFFIX}
>>>> Â Â Â Â Âdone
>>>> Â Â Â Â ÂCT_Popd
>>>> - Â Â Â ÂCT_Pushd "${CT_PREFIX_DIR}/libexec/gcc/${CT_TARGET}/${CT_CC_VERSION}"
>>>> + Â Â Â ÂCT_Pushd "${CT_PREFIX_DIR}/libexec/gcc/${CT_TARGET}/${CT_CC_REAL_VERSION}"
>>>> Â Â Â Â Âfor t in cc1 cc1plus collect2; do
>>>> Â Â Â Â Â Â Â[ -x ${t}${CT_HOST_SUFFIX} ] && ${CT_HOST}-strip ${strip_args} ${t}${CT_HOST_SUFFIX}
>>>> Â Â Â Â Âdone
>>>
>>> This will no longer apply, I've reworked that stuff in my tree, as some
>>> stuff was missing in there. I'll push that a bit later in the week, sorry
>>> for that... :-/
>>
>> Go, go gadget mq. I'll "hg qpop -a && hg pull -u", fix the other
>> problems, and re-post.
>>
>>>> diff -r 73795525c82e -r 8f7cc140fe23 scripts/crosstool-NG.sh.in
>>>> --- a/scripts/crosstool-NG.sh.in   ÂMon Dec 06 22:42:07 2010 -0800
>>>> +++ b/scripts/crosstool-NG.sh.in   ÂTue Dec 07 00:56:34 2010 -0800
>>>> @@ -151,6 +151,16 @@
>>>> ÂCT_CC_CORE_EXTRA_CONFIG="${CT_ARCH_CC_CORE_EXTRA_CONFIG} ${CT_CC_CORE_EXTRA_CONFIG}"
>>>> ÂCT_CC_EXTRA_CONFIG="${CT_ARCH_CC_EXTRA_CONFIG} ${CT_CC_EXTRA_CONFIG}"
>>>>
>>>> +# If we are using a gcc snapshot, get the real "version number" straight
>>>> +# here so we don't have to modify the build scripts.
>>>> +if [ "${CT_CC_V_4_5_SNAPSHOT}" = "y" -o "${CT_CC_V_4_6_SNAPSHOT}" = "y" ]; then
>>>> + Â Âif [ -n "${CT_CC_SNAPSHOT}" ]; then
>>>> + Â Â Â ÂCT_CC_VERSION="${CT_CC_VERSION}${CT_CC_SNAPSHOT}"
>>>> + Â Âelse
>>>> + Â Â Â ÂCT_Abort "You forgot to set the gcc snapshot date!"
>>>> + Â Âfi
>>>> +fi
>>>
>>> This should go to the gcc.sh script. I know you needed it to be globally
>>> available for the strip phase above, but that will no longer be needed.
>>
>> ack.
>
> Actually, come to think about it, when you use the snapshot, the
> ${CT_CC_VERSION} - which for a snapshot would be something like:
> 4.6-20101204 - would not be what gcc-${CT_CC_VERSION} is.
>
> Say I used said snapshot, gcc-${CT_CC_VERSION} would be 4.6.0, because
> that is what is in ${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER
>
>>>> Â# Compute the working directories names
>>>> ÂCT_TARBALLS_DIR="${CT_WORK_DIR}/tarballs"
>>>> ÂCT_SRC_DIR="${CT_WORK_DIR}/src"
>>>> @@ -572,6 +582,11 @@
>>>> Â Â Âfi
>>>> Âfi
>>>>
>>>> +# When referencing the real gcc version, and not the (possibly) snapshot
>>>> +# version, use ${CT_CC_REAL_VERSION} instead of the (possibly) snapshot
>>>> +# version.
>>>> +CT_CC_REAL_VERSION=$(cat ${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER)
>>>> +
>>>> Â# Now for the job by itself. Go have a coffee!
>>>> Âif [ "${CT_ONLY_DOWNLOAD}" != "y" -a "${CT_ONLY_EXTRACT}" != "y" ]; then
>>>> Â Â Â# Because of CT_RESTART, this becomes quite complex
>>>
>>> Ditto.
>>
>> ack.
>
> ... and because of that, I will still need this CT_CC_REAL_VERSION.
>
> and set gcc-${CT_CC_REAL_VERSION} in internals.sh.

And after _actually_ looking at the change you made to internals.sh,
these are the two that would need ${CT_CC_REAL_VERSION}:

"libexec/gcc/${CT_TARGET}/${CT_CC_VERSION}/"*                 \
"libexec/gcc/${CT_TARGET}/${CT_CC_VERSION}/install-tools/"*   \


>>> Regards,
>>> Yann E. MORIN.
>>>
>>> --
>>> .-----------------.--------------------.------------------.--------------------.
>>> | ÂYann E. MORIN Â| Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
>>> | +33 662 376 056 | Software ÂDesigner | \ / CAMPAIGN Â Â | Â___ Â Â Â Â Â Â Â |
>>> | +33 223 225 172 `------------.-------: ÂX ÂAGAINST Â Â Â| Â\e/ ÂThere is no Â|
>>> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL  Â|  v  conspiracy. Â|
>>> '------------------------------^-------^------------------^--------------------'
>>>
>>>
>>>
>>
>>
>> -Bryan
>>
>
> -Bryan
>

-Bryan

--
For unsubscribe information see http://sourceware.org/lists.html#faq


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]