Hi Brian I have more input here:
On Wed, Feb 15, 2012 at 8:50 PM, Brian Aker <[email protected]> wrote: > We > still require libdrizzle to be installed as our client applications require > it (and are dynamically linked). This turns out not to be true. I had also assumed this would (obviously?) be the case and would lead to all kinds of trouble. Yesterday I created deb packages without libdrizzle (will send separate email) and to my surprise everything just works. The explanation is that none of the clients depend on libdrizzle.so: $ for f in `ls /usr/bin/drizzle*`; do echo $f; ldd $f; echo; done|grep libdrizzle.so $ (Full non-grepped list at end of this mail.) Hence, the current setup is actually feasible as far as the so is concerned. As far as I understand we could even remove it from make install? The only main benefit of having libdrizzle in the main repository is for testing: To test it you need the server on the other end. There is the question of headers. Currently they install into /usr/include/libdrizzle-1.0. There are things to be said about this name (below), but a good thing is there is no conflict between installing this from lp:drizzle or lp:libdrizzle. They are identical. And as far as I understand, also the headers could be removed from make install (in lp:drizzle), which makes the problem go away in any case. Therefore... > 2) Having these as two different trees lead to a lot of > incompatibility/testing nightmares. This is why we combined them after > extracting them in the first place. This is correct. The libdrizzle unit tests require a (compatible) server on the other end of the line. > 1) Having a library named libdrizzle from the main package and another one > called libdrizzle that is installable by itself is just likely to lead to > version issues. As explained above, it is straightforward to just leave out libdrizzle.so and its headers from the main package (lp:drizzle). We could also just remove it from what make install does. There is confusion in versioning, including that the current version of lp:libdrizzle can be classfied as a bug. I will do my best to make it simple, but it isn't: The version of an SO library is determined in configure.ac. Since we have 2 versions of libdrizzle floating around, we define two SO versions: LIBDRIZZLE_LIBRARY_VERSION=3:0:0 -> becomes libdrizzle.so.3.0.0 OLDLIBDRIZZLE_LIBRARY_VERSION=2:0:1 -> becomes libdrizzle.so.2.0.1 Now, the code in source dir "libdrizzle-1.0/" is OLDLIBDRIZZLE. The code in "libdrizzle-2.0/" is LIBDRIZZLE. Here's the root of the confusion. So in lp:libdrizzle you have copied the code from libdrizzle-1.0, but configure.ac has: LIBDRIZZLE_LIBRARY_VERSION=3:0:0 ...since this has been used for the libdrizzle-2.0/ code this is wrong. Ok, so the fix is to instead have OLDLIBDRIZZLE_LIBRARY_VERSION=2:0:1 ...also on lp:libdrizzle/configure.ac. Then it matches what we have in lp:drizzle. At this point things are technically correct. Now the question is whether this is still confusing or not? We have previously talked about libdrizzle 2.0 which is in source dir libdrizzle-2.0, however now we would end up releasing libdrizzle-2.0.1.tar.gz which is from source dir libdrizzle-1.0. Technically we can do this but it would be very confusing. Therefore I also have another proposal on the table which is to a) ignore libdrizzle-2.0 and b) bump everything related to libdrizzle-1.0 to an unused number 4: * lp:drizzle/configure.ac OLDLIBDRIZZLE_LIBRARY_VERSION=4.0.0 * lp:libdrizzle/configure.ac OLDLIBDRIZZLE_LIBRARY_VERSION=4.0.0 * lp:libdrizzle/configure.ac AC_INIT([libdrizzle4],[4.0.0] ...) * lp:libdrizzle releases: libdrizzle4-4.0.0.tar.gz, libdrizzle4_4.0.0_arch.deb, libdrizzle4-4.0.0.arch.rpm Given that we just released our first RC, this kind of change should be done asap or not at all. If we choose "not at all", then lp:drizzle stays at 2.0.1 and we must fix lp:libdrizzle to match (re-read above until the line "at this point things are technically correct"). This is ok (I believe), slightly confusing, but allows us to not mess with the RC that is already released. > I am going to propose the standalone library be "libdrizzleclient" and the > one that is packaged with the server be "libdrizzle". "libdrizzleclient" > will be a pulled tree from lp:drizzle (so the code will be the same, though > versioning will be separated). This will resolve the issues with building > the server to get the library, but won't introduce new headaches for package > versioning. I'm against this. While picking a new name of course allows you to then release it with any version you wish, this does not solve the root cause. It would still be confusing to release a libdrizzleclient.so.3.0.0, which would be different from a previously existing libdrizzle.so.3.0.0. Even if distros and gnu ld would be fine with this, it would be very confusing to humans. The real fix is to sync the version numbers. Either to 2.0.1 or 4.0.0. When this is done, I don't see any other issues and there is no need to change the name. henrik PS: As promised, the full ldd output of all our clients: $ for f in `ls /usr/bin/drizzle*`; do echo $f; ldd $f; echo; done /usr/bin/drizzle linux-gate.so.1 => (0x00f26000) libreadline.so.6 => /lib/libreadline.so.6 (0x00518000) libboost_program_options.so.1.46.1 => /usr/lib/libboost_program_options.so.1.46.1 (0x00a5a000) libboost_regex.so.1.46.1 => /usr/lib/libboost_regex.so.1.46.1 (0x00388000) libboost_iostreams.so.1.46.1 => /usr/lib/libboost_iostreams.so.1.46.1 (0x00eb6000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0x00110000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x001fb000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x0064a000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00ac3000) libtinfo.so.5 => /lib/libtinfo.so.5 (0x00219000) libicuuc.so.44 => /usr/lib/libicuuc.so.44 (0x00238000) libicui18n.so.44 => /usr/lib/libicui18n.so.44 (0x00665000) libbz2.so.1.0 => /lib/libbz2.so.1.0 (0x0047b000) libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0x00cf4000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x00f43000) /lib/ld-linux.so.2 (0x0095d000) libicudata.so.44 => /usr/lib/libicudata.so.44 (0xb690f000) libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0x00852000) /usr/bin/drizzlebackup.innobase linux-gate.so.1 => (0x00e80000) libboost_program_options.so.1.46.1 => /usr/lib/libboost_program_options.so.1.46.1 (0x0060c000) libaio.so.1 => /lib/libaio.so.1 (0x009e3000) libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0x008c9000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0x00110000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x00301000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x0091e000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00b3a000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x00ce2000) /lib/ld-linux.so.2 (0x00ade000) /usr/bin/drizzledump linux-gate.so.1 => (0x0076d000) libboost_program_options.so.1.46.1 => /usr/lib/libboost_program_options.so.1.46.1 (0x00d40000) libboost_regex.so.1.46.1 => /usr/lib/libboost_regex.so.1.46.1 (0x00110000) libboost_date_time.so.1.46.1 => /usr/lib/libboost_date_time.so.1.46.1 (0x00b03000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0x00203000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x009a1000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x00c92000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x003c5000) libicuuc.so.44 => /usr/lib/libicuuc.so.44 (0x0060b000) libicui18n.so.44 => /usr/lib/libicui18n.so.44 (0x0076e000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x0059c000) /lib/ld-linux.so.2 (0x005eb000) libicudata.so.44 => /usr/lib/libicudata.so.44 (0xb6a97000) libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0x00e25000) /usr/bin/drizzleimport linux-gate.so.1 => (0x0027c000) libboost_program_options.so.1.46.1 => /usr/lib/libboost_program_options.so.1.46.1 (0x00e40000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0x0027d000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x00d44000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x008a2000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00368000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x009a4000) /lib/ld-linux.so.2 (0x001b1000) /usr/bin/drizzle_password_hash linux-gate.so.1 => (0x00c4b000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0x0029e000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x001d3000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00852000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x00fa8000) /lib/ld-linux.so.2 (0x00202000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x00110000) /usr/bin/drizzleslap linux-gate.so.1 => (0x009a1000) libboost_program_options.so.1.46.1 => /usr/lib/libboost_program_options.so.1.46.1 (0x00590000) libboost_thread.so.1.46.1 => /usr/lib/libboost_thread.so.1.46.1 (0x00458000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0x00796000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x00c1e000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x0016f000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x009d9000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x0018d000) /lib/ld-linux.so.2 (0x0039f000) /usr/bin/drizzletrx linux-gate.so.1 => (0x0082d000) libprotobuf.so.7 => /usr/lib/libprotobuf.so.7 (0x00239000) libdrizzledmessage.so.0 => /usr/lib/libdrizzledmessage.so.0 (0x00b02000) libboost_program_options.so.1.46.1 => /usr/lib/libboost_program_options.so.1.46.1 (0x00110000) libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x004c1000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0x004dc000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x0016f000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x005c7000) libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0x0018d000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x001a2000) /lib/ld-linux.so.2 (0x003f4000) -- [email protected] +358-40-8211286 skype: henrik.ingo irc: hingo www.openlife.cc My LinkedIn profile: http://www.linkedin.com/profile/view?id=9522559 _______________________________________________ Mailing list: https://launchpad.net/~drizzle-discuss Post to : [email protected] Unsubscribe : https://launchpad.net/~drizzle-discuss More help : https://help.launchpad.net/ListHelp

