Hello colleagues,

(Sorry if my message will appear twice, the first one was sent to [EMAIL PROTECTED] according to my local docs on 2.7.0).

My name is Alexey.


Let's assume that we issued an application linked with 2.7.0 xerces-c.so
and sent it to our clients (binaries only).
Let's assume that our clients want to migrate to 2.8.0.
So the questions from subj is arised.



I have some predicates. Please, confirm or contradict them.
Also there are some questions.
Any links to documentation, remarks, explanations are welcome.


------------------

P (Predicate): Physically it (subj) is possible,
but functions used by the application must have the same interfaces for all "a few xercesc shared objects versions"
  (to avoid some stack corruption).
  Please, confirm or contradict.

------------------

P: To track any interfaces changing it is enough to read
 migration guide (like http://xerces.apache.org/xerces-c/migrate.html)
and make sure that functions which are used by the application are not met in the following chapters:
 "Modified Public API"
 "Deprecated/Removed Public API"
  Please, confirm or contradict.


Q: Here is a question: why Deprecated and Removed API are not separated to different chapters ?

------------------

The article
"http://www.codesynthesis.com/~boris/blog/2007/09/02/xerces-2-8-0-released/";
has such strings:

"2.8.0 is interface-compatible with 2.7.0 which means all you will need to do to take advantage of all the improvements
is to recompile your applications."

So there are questions:

Q: Does such an intention (subj) violate some principles ?

Q: Will there be some troubles if the client, say, just will rename xerces-c.so.28.0 to xerces-c.so.27.0 (provided that "Modified Public API" and "Deprecated/Removed Public API" chapters of migrations guide are empty) ?


------------------

Q : Is there a standard way to do so (subj) ?
If yes, explain, please, how to link the application, which linker options and links to shared object to use etc.?

------------------

I noticed that after XercesC building, the $XERCESCROOT/lib directory contains smth like this:

libxerces-c.so
libxerces-c.so.27
libxerces-c.so.27.0

where libxerces-c.so is a link which points to libxerces-c.so.27,
and libxerces-c.so.27 is a link which points to libxerces-c.so.27.0 (this is real shared objects).

When I use "-lxerces-c" linker option, ldd shows that my application needed libxerces-c.so.27 (i.e. link).

Q: Is there a way (probably linker options) to make so that
  my application will require libxerces-c.so (link) ?
Q: If there are not standard solutions, will such solution be appropriate:
to create a link libxerces-c_tmp.so which will point to libxerces-c.so and to use "-lxerces-c_tmp" linker option ?


Q: If I understand correctly that all libxerces-c.so.Y.x shared objects have exactly the same interface for different x
  *if Y is a constant* ?

------------------

Thank you,
-------
Alexey

Reply via email to