List:Commits« Previous MessageNext Message »
From:Sergei Golubchik Date:August 26 2008 5:27pm
Subject:Re: WL#4380 ABI check: Implementation details
View as plain text  
Hi!

On Aug 26, Joerg Bruehe wrote:
> Sergei Golubchik wrote:
>> On Aug 26, Joerg Bruehe wrote:

>> You seem to assume that one source (.c or .cc) file can include two
>> (monitored by check_abi rule) .h files, and in that case it would be
>> acceptable to move a definition from one to another.
>
>> But it's never the case. We have one .h file per API. plugin.h - it's
>> plugin API, mysql.h - it's client-server API, mysql_priv.h - it's for
>> storage engines. Moving a definition from one API to another is never
>> one atomic action. It's two, as VN has explained above.
>
> I haven't worked in that area, so maybe my question is silly: As we
> want to support storage engines as plugins, doesn't that mean their
> sources have to include both "mysql_priv.h" and "plugin.h" ?

Correct, it does. But these correspond to different API's. Moving
something (e.g. a function prototype) from mysql_priv.h to plugin.h,
means that this function was *added* to plugin API. This fact alone
means that plugin API version should be increased. And it's unrelated to
what has happened to mysql_priv.h.

> And even if that isn't so just now, don't you think it quite possible
> that we add header files for specific functional areas, which plugin
> sources need to include in addition to "plugin.h" ?

Yes, we're doing that. But see above.

>>> All I say is that the API team must be given all differences
>>> simultaneously, not piecemeal.
>> And it will. API team will see a commit email - which changes all
>> affected .pp files.  Assuming that a developer ensures that his tree
>> builds before committing, of course.
>
> It seems my assumption of the workflow differs from yours:
>
> With the current approach, "make" will terminate a build attempt if one 
> ".pp" file differs from what is generated from current header files.
> So in order to proceed to the next one, the first ".pp" file needs to be 
> adapted to current header contents.

Yes. But a commit should only happen when all .pp files are updated.

> What I would like to see is that one "make" run generates several
> ".pp-new" (or whatever the name may be) files, so that these can be
> compared against the (old) ".pp" files.
>
> For such a major operation as an API change (or placement change that
> doesn't affect the ABI), I simply prefer the simultaneous existence of
> ".pp" and ".pp-new" which can then be compared by the tool of choice,
> not only as the diff output in a commit mail.

There will be .pp and .out files, which can be compared by the tool of
choice. The fact that make fails on the first mismatch means that
developer will need to work on changes filewise, or, rather, API-wise.
Because "API" is a reasonably independent unit, it's ok to work on
changes API-wise, not all at once.

But in the commit mail - which is what others, not the developer who has
caused the change - all changes to the APIs will be seen at once.

Regards / Mit vielen Grüßen,
Sergei

-- 
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /   Sergei Golubchik <serg@stripped>
 / /|_/ / // /\ \/ /_/ / /__  Principal Software Engineer/Server Architect
/_/  /_/\_, /___/\___\_\___/  Sun Microsystems GmbH, HRB München 161028
       <___/                  Sonnenallee 1, 85551 Kirchheim-Heimstetten
Geschäftsführer: Thomas Schroeder, Wolfgang Engels, Dr. Roland Boemer
Vorsitzender des Aufsichtsrates: Martin Häring
Thread
bzr commit into mysql-5.1 branch (v.narayanan:2678) WL#4380Narayanan V13 Aug
  • Re: bzr commit into mysql-5.1 branch (v.narayanan:2678) WL#4380Joerg Bruehe13 Aug
    • Re: bzr commit into mysql-5.1 branch (v.narayanan:2678) WL#4380Narayanan14 Aug
      • Re: bzr commit into mysql-5.1 branch (v.narayanan:2678) WL#4380Joerg Bruehe15 Aug
        • Re: bzr commit into mysql-5.1 branch (v.narayanan:2678) WL#4380Narayanan18 Aug
          • Re: bzr commit into mysql-5.1 branch (v.narayanan:2678) WL#4380Sergei Golubchik18 Aug
            • Re: bzr commit into mysql-5.1 branch (v.narayanan:2678) WL#4380Joerg Bruehe20 Aug
              • Re: bzr commit into mysql-5.1 branch (v.narayanan:2678) WL#4380Sergei Golubchik20 Aug
                • Re: WL#4380 ABI check: Where and when to run it ?Joerg Bruehe26 Aug
                  • Re: WL#4380 ABI check: Where and when to run it ?Sergei Golubchik26 Aug
                  • Re: WL#4380 ABI check: Where and when to run it ?Narayanan27 Aug
                    • Re: WL#4380 ABI check: Where and when to run it ?Joerg Bruehe27 Aug
          • Re: bzr commit into mysql-5.1 branch (v.narayanan:2678) WL#4380Joerg Bruehe20 Aug
            • Re: bzr commit into mysql-5.1 branch (v.narayanan:2678) WL#4380V Narayanan21 Aug
              • Re: WL#4380 ABI check: Implementation detailsJoerg Bruehe26 Aug
                • Re: WL#4380 ABI check: Implementation detailsSergei Golubchik26 Aug
                  • Re: WL#4380 ABI check: Implementation detailsJoerg Bruehe26 Aug
                    • Re: WL#4380 ABI check: Implementation detailsSergei Golubchik26 Aug
                      • Re: WL#4380 ABI check: Implementation detailsJoerg Bruehe26 Aug
                        • Re: WL#4380 ABI check: Implementation detailsNarayanan27 Aug
                          • Re: WL#4380 ABI check: Implementation detailsJoerg Bruehe27 Aug
                            • Re: WL#4380 ABI check: Implementation detailsNarayanan27 Aug
                • Re: WL#4380 ABI check: Implementation detailsNarayanan27 Aug