John: I remember last year that you told us that we didn't need a
contract for certain desktop modules (libcdio and liboil) to
build with GCC or link against libgcc. I notice GCC is listed
as External in PSARC 2004/742, and normally External/Volatile
interfaces require contracts. Can you remind us why a contract
isn't needed for GCC? You can see below for some background on
why this issue came up again. Thanks.
Stephen:
> Its just a useful piece of software. We are not shipping anything that
> depends on it.
Thanks, I was just curious. Also, thanks for ARC'ing this.
>>> http://www.opensolaris.org/os/community/arc/policies/interface-taxonomy/#EXPSARC
>>
>> I normally see people refer to the stability level as defined in the
>> case rather than doing translations in their Imported Interface Table
>> (e.g. External->Volatile). I remember that when the new taxonomy was
>> released, there was some wiggle-room where projects could redefine
>> External to either Volatile or Uncommitted. So it might not always be
>> accurate to assume the translations apply to a given interface.
>
> Well thats not what the mapping table on opensolaris says. It notes
> Volatile as a direct name change of External. It lists Evolving as
> either Committed or Uncomitted. It is not for me to upgrade someone
> elses interface classification. I have seen a lot of confusion around
> these classifications over the years and I dont see the value in using
> multiple labels in the same case. I was going for consistency.
>
>> Therefore, it is probably safer to list "External" unless there is a
>> newer case where the interface owner has clarified it as Volatile.
>
> If you are saying the table is wrong then get it updated, please.
Like with any rule, there are exceptions. I was just pointing out
that you can make mistakes making assumptions about interfaces for
which you are unfamiliar. I know I've done it.
Many ARC cases seem to just guess what imported interface stability
levels should be, and leave off the case #.
>> Normally in the Imported Interface table you list the ARC case which
>> defines the stability level for the interface in the comment column.
>> Since you didn't list a case, it wasn't clear to me what case you were
>> referring to. For all I know, there might be a newer case than the
>> one I referred to. This is probably not a big deal, but perhaps
>> explains my confusion.
>
> It is listed in the file I sent out (PSARC/2004/742) so I don't
> understand your confusion. I listed all the case numbers for the
> imported interfaces and feel I spent far too long looking for them. I
> wish there was an easy way to do that.
In hindsight, I'm not sure why I was confused either. Sorry, I now see
you did clearly list case numbers in your imported interface table.
> Also, since you didn't mention
> the case you were refering to and by your own admission it is difficult
> to know which is the latest case for an interface for all I know there
> IS a newer case.
I did a lot of research to try and track down a concrete reason why a
contract is not required to use GCC or link against libgcc. After
searching for about 30 minutes, the best I could find was an email
dated from February, 2007 where I said that John Fischer told us we
don't need a contract at some meeting. At any rate, I know we didn't
pursue a contract for libcdio or liboil based on these discussions.
I have a vague memory that GCC might be one of the odd cases where
External ended up being mapped to Uncommitted. Thus my comments
about this. Sorry, I should have been more clear.
Brian