This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


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

What's the name of this library? (was: Re: autotools transition report: v 28.07)


The testcase code in question:

    catalog cat_de = mssg_de.open("libstdc++", loc_c, dir);


On Thu, Jul 31, 2003 at 08:56:21PM -0500, Benjamin Kosnik wrote:
> old:
> -rw-r--r--    1 bkoz     bkoz          490 Jul 31 20:24 libstdc++.mo
> 
> new:
> -rw-r--r--    1 bkoz     bkoz          490 Jul 31 20:02 libstdc++-v3.mo


> *** po.cvs/Makefile	2003-07-31 20:06:39.000000000 -0500
> --- po.orig/Makefile	2003-07-31 18:19:26.000000000 -0500
> ! PACKAGE = libstdc++
> --- 65,208 ----
> + PACKAGE = libstdc++-v3

Your Honor, may I present Exhibit A: the smoking gun.

The 64-million-bit question:  do we call ourselves libstdc++, or libstdc++-v3?
Ponder carefully; this affects more than what it used to.

Reasons supporting the -v3 name:

1) The rest of the configury refers to the library as -v3.  Which means
   that generic hooks like --enable-{shared,static} only know about -v3.
   Remember that, post-transition, we must support

      --enable-shared=libfoo,libbar

   which builds those target libraries shared, and all other ones static.
   The autoconf code does the parsing for us, but we must be called -v3
   to make it work.  If an end user tries to do, say,

      --enable-shared --enable-static=libstdc++

   we will be built shared, because the user didn't use the -v3 form.
   That's unfortunate, but to "fix" it we'd have to rename the whole tree.
   Kiss CVS history goodbye.  We also get involved in the old v2 history
   suddenly reappearing, since it used to be called the plain name.

2) The dejagnu framework also needs to know the name.  Right now, it
   demands the -v3 form.  This would not be as difficult to change, since
   it's entirely internal to us.  Just lots of file and function renaming.


Reasons supporting the plain form:

1) It's what the .mo file has been called up to now.

2) It's what users tend to expect.


You'll note that the project name is only exposed to the end user in two
places, the configury options and the NLS translations file.  Currently,
in one place we demand (well, we /use/) the plain form, and in the other
place we demand the -v3 form.


Options:

1) Call the project libstdc++ internally and rename everything.

2) Call the project libstdc++-v3 internally.  Change the 5 failing test
   cases accordingly.  Document that users will need to call the message
   catalog -v3 starting with 3.4.  (Possibly provide a libstdc++.mo symlink
   to ease transition.)

[Note that the first sentence of (2) is mostly where we are right now,
and definitely where we will be after the autotools transition, given the
existing scripts in my local tree.]

3) As (2), but do enough renames during build and installation to make
   all post-configure instances of the library appear as the plain form.
   The NLS message catalog continues to be named libstdc++.mo.

4) As (3), and also try to trick autoconf into thinking the name of the
   project is the plain form, just long enough to parse the shared/static
   pieces.  /All/ user-visible elements of the project name will be the
   plain form.  Expert configury users using the "obviously correct" -v3
   form get confused.

4.1) As (4) but try to handle both names in shared/static options.  I have
   no idea whether this will work.

5) Build a time machine.  Travel to the mid/late 90's.  Convince the
   maintainers to call their new project "libstdcxx".  Obviate the need
   for bizarre little tweaks all through the CVS server backend scripts
   because "++" isn't matched by the normal word regex.  Obviate the
   current problems.

6) As (5), but we skip building the time machine and do the rename now,
   as in (1).

7) Things I haven't thought of.

Opinions?  Please don't vote for 4.1.


Phil

-- 
If ye love wealth greater than liberty, the tranquility of servitude greater
than the animating contest for freedom, go home and leave us in peace.  We seek
not your counsel, nor your arms.  Crouch down and lick the hand that feeds you;
and may posterity forget that ye were our countrymen.            - Samuel Adams


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