This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
What's the name of this library? (was: Re: autotools transition report: v 28.07)
- From: Phil Edwards <phil at jaj dot com>
- To: Benjamin Kosnik <bkoz at redhat dot com>
- Cc: libstdc++ at gcc dot gnu dot org
- Date: Fri, 1 Aug 2003 16:04:43 -0400
- Subject: 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