httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Greg Stein <gst...@lyra.org>
Subject Re: binary compatibility for APR
Date Wed, 24 May 2000 21:23:39 GMT
On Tue, 23 May 2000, Jeff Trawick wrote:
> On the other hand...
> 
> If the app has APR statically linked, no problem...

I was considering at link time, when the app links against "libapr.a",
that APR_VERSION helps that case.

> If the app does not have APR statically linked, it could be loading
> something with the version number in it (libapr.so, libapr.so.1,
> libapr.so.2, etc.).

Yes... if the major version is encoded in the name, then a number of
problems are solved. However, I think we can increase the safety by using
APR_VERSION. Since we have an "init/terminate" semantic, this should be
very easy to implement.

Cheers,
-g

> 
> > Mailing-List: contact new-httpd-help@apache.org; run by ezmlm
> > Precedence: bulk
> > X-No-Archive: yes
> > Reply-To: new-httpd@apache.org
> > list-help: <mailto:new-httpd-help@apache.org>
> > list-unsubscribe: <mailto:new-httpd-unsubscribe@apache.org>
> > list-post: <mailto:new-httpd@apache.org>
> > Date: Tue, 23 May 2000 17:18:25 -0700 (PDT)
> > From: Greg Stein <gstein@lyra.org>
> > Content-Type: TEXT/PLAIN; charset=US-ASCII
> > X-Spam-Rating: locus.apache.org 1.6.2 0/1000/N
> > X-UIDL: 4dc0863385099ee228a30e320798e222
> > 
> > On Tue, 23 May 2000, Jeff Trawick wrote:
> > >...
> > > With the understanding that we don't have to try too hard to maintain
> > > binary compatibility,
> > 
> > This made me think of something...
> > 
> > It would seem reasonable to change the call to ap_initialize() to take a
> > parameter. The param would contain the version number that the app was
> > compiled with. APR can then check for major-version compatibility.
> > 
> > For example:
> > 
> > 
> > #define APR_VERSION ((APR_MAJOR << 16) | APR_MINOR)
> > 
> > app.c:
> > ...
> >     if (ap_initialize(APR_VERSION) != APR_SUCCESS) exit(1);
> > ...
> > 
> > 
> > apr/.../start.c:
> > 
> > ap_status_t ap_initialize(int compiled_for_vsn)
> > {
> >     if ((compiled_for_vsn >> 16) != APR_MAJOR)
> >         return APR_EBADMAJOR;
> > ...
> > 
> > 
> > 
> > As the app is recompiled, it picks up the new APR interfaces and the new
> > APR_VERSION to pass to ap_initialize(). If the app statically/dynamically
> > links against a pre-built APR, then the compiled-in APR_VERSION can be
> > used by ap_initialize() to determine acceptability.
> > 
> > Thoughts?
> > 
> > Cheers,
> > -g
> > 
> > -- 
> > Greg Stein, http://www.lyra.org/
> > 
> > 
> 
> 
> -- 
> Jeff Trawick | trawick@ibm.net | PGP public key at web site:
>      http://www.geocities.com/SiliconValley/Park/9289/
>           Born in Roswell... married an alien...
> 

-- 
Greg Stein, http://www.lyra.org/


Mime
View raw message