[Ganglia-developers] [RFT]: build: linux 64bit biarch support (v0)
The following proposed patch for stable 3.1, partially reverts the configure routine that tried to guess the libdir directory by assuming biarch rules from fedora linux (breaking all amd64 BSD and x64 Solaris) and overriding the libdir parameter passed at configure time (breaking fedora linux ppc64). It restores the functionality needed to allow setting libdir while still using libdir at compile time to setup the path for modules and as an intermediate solution until removing the need to hardcode the module path in the configuration is backported from trunk. Carlo --- Index: configure.in === --- configure.in(revision 1531) +++ configure.in(working copy) @@ -111,7 +111,6 @@ dnl The following cpu_vendor_os string goes into config.h. dnl AC_DEFINE_UNQUOTED(HOST_OS, $host_os, HOST_OS) -AC_DEFINE_UNQUOTED(ARCH, $host_cpu, ARCH) AC_DEFINE_UNQUOTED(CPU_VENDOR_OS, $host, CPU_VENDOR_OS) dnl AC_CYGWIN @@ -576,18 +575,18 @@ AC_SUBST(varstatedir) AC_DEFINE_UNQUOTED(VARSTATEDIR, $varstatedir, VARSTATEDIR) -dnl Python module config files need to know where to look for libraries (/usr/lib vs /usr/lib64) -AC_SUBST_FILE(libdir) -if test x$prefix = xNONE; then - prefix=$ac_default_prefix +if test x$libdir = x\${exec_prefix}/lib; then + if test x$exec_prefix = xNONE; then + if test x$prefix = xNONE; then + exec_prefix=$ac_default_prefix + else + exec_prefix=$prefix + fi + fi + libdir=`eval echo $libdir` fi +AC_SUBST(libdir) -if test x$host_cpu = xx86_64; then - libdir=$prefix/lib64 -else - libdir=$prefix/lib -fi - AC_OUTPUT(Makefile ganglia-config tests/Makefile - Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08___ Ganglia-developers mailing list Ganglia-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ganglia-developers
Re: [Ganglia-developers] [RFT]: build: linux 64bit biarch support
On Mon, Jul 07, 2008 at 09:10:37AM -0400, Jarod Wilson wrote: On Monday 07 July 2008 04:46:05 am Carlo Marcelo Arenas Belon wrote: On Wed, Jul 02, 2008 at 09:27:02AM -0400, Jarod Wilson wrote: On Wednesday 02 July 2008 07:36:41 am Carlo Marcelo Arenas Belon wrote: The following proposed patch for stable 3.1, replaces the configure routine that tried to guess the libdir directory by assuming biarch rules from fedora linux (breaking all amd64 BSD and x64 Solaris) and overriding the libdir parameter passed at configure time (breaking fedora linux ppc64). Contains changes from r1452, r1467, r1468, r1475 and r1487 At a glance, yeah, this looks like it should indeed finally Do The Right Thing(tm) on all Linux architectures for both 32-bit and 64-bit. It didn't, I found it was broken in an ia64 SuSE Enterprise Server 10 server. D'oh. How so? It would use an unexpanded libdir variable to replace all the libdir entries in the configuration and code (the embedded gmond configuration), so if no configuration was available and --libdir wasn't used it will end up trying to load all modules from a directory named literally : ${exec_prefix}/lib A fix has been committed to trunk already, but it is so interlinked with another patch to remove the need to hardcode libdir in the configurations from Brad that it might as well require it (or both patches together) backported as a solution. Never mind, I can just take a look at trunk and spin up one of my own ia64 boxes... It should had been broken in alpha as well (if you still have one of those and the host I guessed is right) please use the alternative proposed patch instead, which is IMHO the only safe way to ensure this patch doesn't break something else. Carlo - Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 ___ Ganglia-developers mailing list Ganglia-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ganglia-developers
Re: [Ganglia-developers] [RFT]: build: linux 64bit biarch support
On Tuesday 08 July 2008 07:14:25 am Carlo Marcelo Arenas Belon wrote: On Mon, Jul 07, 2008 at 09:10:37AM -0400, Jarod Wilson wrote: On Monday 07 July 2008 04:46:05 am Carlo Marcelo Arenas Belon wrote: On Wed, Jul 02, 2008 at 09:27:02AM -0400, Jarod Wilson wrote: On Wednesday 02 July 2008 07:36:41 am Carlo Marcelo Arenas Belon wrote: The following proposed patch for stable 3.1, replaces the configure routine that tried to guess the libdir directory by assuming biarch rules from fedora linux (breaking all amd64 BSD and x64 Solaris) and overriding the libdir parameter passed at configure time (breaking fedora linux ppc64). Contains changes from r1452, r1467, r1468, r1475 and r1487 At a glance, yeah, this looks like it should indeed finally Do The Right Thing(tm) on all Linux architectures for both 32-bit and 64-bit. It didn't, I found it was broken in an ia64 SuSE Enterprise Server 10 server. D'oh. How so? It would use an unexpanded libdir variable to replace all the libdir entries in the configuration and code (the embedded gmond configuration), so if no configuration was available and --libdir wasn't used it will end up trying to load all modules from a directory named literally : ${exec_prefix}/lib Oh, ew, ouch. A fix has been committed to trunk already, but it is so interlinked with another patch to remove the need to hardcode libdir in the configurations from Brad that it might as well require it (or both patches together) backported as a solution. Never mind, I can just take a look at trunk and spin up one of my own ia64 boxes... It should had been broken in alpha as well (if you still have one of those and the host I guessed is right) No alphas here. Well, there are some collecting dust somewhere in the lab, I believe... But no Fedora or Red Hat Enterprise Linux on Alpha for a while now, so they don't get much love... My ia64 Fedora build (with --libdir explicitly passed in) looks perfectly sane, haven't got around to poking at things beyond a simple rpmbuild of the rawhide packages though. please use the alternative proposed patch instead, which is IMHO the only safe way to ensure this patch doesn't break something else. Okay, sounds good. -- Jarod Wilson [EMAIL PROTECTED] - Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 ___ Ganglia-developers mailing list Ganglia-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ganglia-developers
Re: [Ganglia-developers] [RFT]: build: linux 64bit biarch support
On Monday 07 July 2008 04:46:05 am Carlo Marcelo Arenas Belon wrote: On Wed, Jul 02, 2008 at 09:27:02AM -0400, Jarod Wilson wrote: On Wednesday 02 July 2008 07:36:41 am Carlo Marcelo Arenas Belon wrote: The following proposed patch for stable 3.1, replaces the configure routine that tried to guess the libdir directory by assuming biarch rules from fedora linux (breaking all amd64 BSD and x64 Solaris) and overriding the libdir parameter passed at configure time (breaking fedora linux ppc64). Contains changes from r1452, r1467, r1468, r1475 and r1487 At a glance, yeah, this looks like it should indeed finally Do The Right Thing(tm) on all Linux architectures for both 32-bit and 64-bit. It didn't, I found it was broken in an ia64 SuSE Enterprise Server 10 server. D'oh. How so? A fix has been committed to trunk already, but it is so interlinked with another patch to remove the need to hardcode libdir in the configurations from Brad that it might as well require it (or both patches together) backported as a solution. Never mind, I can just take a look at trunk and spin up one of my own ia64 boxes... -- Jarod Wilson [EMAIL PROTECTED] - Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 ___ Ganglia-developers mailing list Ganglia-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ganglia-developers
[Ganglia-developers] [RFT]: build: linux 64bit biarch support
The following proposed patch for stable 3.1, replaces the configure routine that tried to guess the libdir directory by assuming biarch rules from fedora linux (breaking all amd64 BSD and x64 Solaris) and overriding the libdir parameter passed at configure time (breaking fedora linux ppc64). Contains changes from r1452, r1467, r1468, r1475 and r1487 Carlo --- Index: configure.in === --- configure.in(revision 1496) +++ configure.in(working copy) @@ -111,7 +111,6 @@ dnl The following cpu_vendor_os string goes into config.h. dnl AC_DEFINE_UNQUOTED(HOST_OS, $host_os, HOST_OS) -AC_DEFINE_UNQUOTED(ARCH, $host_cpu, ARCH) AC_DEFINE_UNQUOTED(CPU_VENDOR_OS, $host, CPU_VENDOR_OS) dnl AC_CYGWIN @@ -494,14 +493,40 @@ EXPORT_SYMBOLS=-export-dynamic case $host in *linux*) -CFLAGS=$CFLAGS -D_REENTRANT -AC_DEFINE(LINUX, 1, LINUX) + CFLAGS=$CFLAGS -D_REENTRANT + AC_DEFINE(LINUX, 1, LINUX) dnl dnl For fsusage.c - disk usage. dnl -AC_DEFINE(STAT_STATVFS, 1, STAT_STATVFS) -AC_DEFINE(SUPPORT_GEXEC, 1, SUPPORT_GEXEC) -;; + AC_DEFINE(STAT_STATVFS, 1, STAT_STATVFS) + AC_DEFINE(SUPPORT_GEXEC, 1, SUPPORT_GEXEC) + if test x$build_cpu != xia64 \ + test x$build_cpu != xalpha; then + if test x$libdir = x\${exec_prefix}/lib; then + if test x$exec_prefix = xNONE; then + if test x$prefix = xNONE; then + libroot=/usr + else + libroot=$prefix + fi + else + libroot=$exec_prefix + fi + + AC_TRY_COMPILE([], [], + [file conftest.$ac_objext conftest.file]) + FILE=`cat conftest.file` + WIDTH_CPU=`expr x$FILE : '.*ELF \(.*\)-bit '` + rm -f conftest.file + if test x$WIDTH_CPU = x64; then + libdir=$libroot/lib64 + else + libdir=$libroot/lib + fi + moduledir=$libdir/ganglia + fi + fi + ;; *ia64-*hpux*) CFLAGS=$CFLAGS -D_PSTAT64 -D_HPUX_SOURCE LIBS=-lpthread $LIBS EXPORT_SYMBOLS=-Wl,-E @@ -572,16 +597,7 @@ dnl Python module config files need to know where to look for libraries (/usr/lib vs /usr/lib64) AC_SUBST_FILE(libdir) -if test x$prefix = xNONE; then - prefix=$ac_default_prefix -fi -if test x$host_cpu = xx86_64; then - libdir=$prefix/lib64 -else - libdir=$prefix/lib -fi - AC_OUTPUT(Makefile ganglia-config tests/Makefile - Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08___ Ganglia-developers mailing list Ganglia-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ganglia-developers
Re: [Ganglia-developers] [RFT]: build: linux 64bit biarch support
On Wednesday 02 July 2008 07:36:41 am Carlo Marcelo Arenas Belon wrote: The following proposed patch for stable 3.1, replaces the configure routine that tried to guess the libdir directory by assuming biarch rules from fedora linux (breaking all amd64 BSD and x64 Solaris) and overriding the libdir parameter passed at configure time (breaking fedora linux ppc64). Contains changes from r1452, r1467, r1468, r1475 and r1487 At a glance, yeah, this looks like it should indeed finally Do The Right Thing(tm) on all Linux architectures for both 32-bit and 64-bit. -- Jarod Wilson [EMAIL PROTECTED] - Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 ___ Ganglia-developers mailing list Ganglia-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ganglia-developers
Re: [Ganglia-developers] [RFT]: build: linux 64bit biarch support
On 2008-07-02 06:36:41 -0500, Carlo Marcelo Arenas Belon wrote: The following proposed patch for stable 3.1, replaces the configure routine that tried to guess the libdir directory by assuming biarch rules from fedora linux (breaking all amd64 BSD and x64 Solaris) and overriding the libdir parameter passed at configure time (breaking fedora linux ppc64). Contains changes from r1452, r1467, r1468, r1475 and r1487 Carlo --- Index: configure.in === --- configure.in (revision 1496) +++ configure.in (working copy) @@ -111,7 +111,6 @@ dnl The following cpu_vendor_os string goes into config.h. dnl AC_DEFINE_UNQUOTED(HOST_OS, $host_os, HOST_OS) -AC_DEFINE_UNQUOTED(ARCH, $host_cpu, ARCH) AC_DEFINE_UNQUOTED(CPU_VENDOR_OS, $host, CPU_VENDOR_OS) dnl AC_CYGWIN @@ -494,14 +493,40 @@ EXPORT_SYMBOLS=-export-dynamic case $host in *linux*) -CFLAGS=$CFLAGS -D_REENTRANT -AC_DEFINE(LINUX, 1, LINUX) + CFLAGS=$CFLAGS -D_REENTRANT + AC_DEFINE(LINUX, 1, LINUX) dnl dnl For fsusage.c - disk usage. dnl -AC_DEFINE(STAT_STATVFS, 1, STAT_STATVFS) -AC_DEFINE(SUPPORT_GEXEC, 1, SUPPORT_GEXEC) -;; + AC_DEFINE(STAT_STATVFS, 1, STAT_STATVFS) + AC_DEFINE(SUPPORT_GEXEC, 1, SUPPORT_GEXEC) + if test x$build_cpu != xia64 \ + test x$build_cpu != xalpha; then + if test x$libdir = x\${exec_prefix}/lib; then + if test x$exec_prefix = xNONE; then + if test x$prefix = xNONE; then + libroot=/usr + else + libroot=$prefix + fi + else + libroot=$exec_prefix + fi + + AC_TRY_COMPILE([], [], + [file conftest.$ac_objext conftest.file]) + FILE=`cat conftest.file` + WIDTH_CPU=`expr x$FILE : '.*ELF \(.*\)-bit '` + rm -f conftest.file + if test x$WIDTH_CPU = x64; then + libdir=$libroot/lib64 + else + libdir=$libroot/lib + fi + moduledir=$libdir/ganglia + fi + fi + ;; *ia64-*hpux*)CFLAGS=$CFLAGS -D_PSTAT64 -D_HPUX_SOURCE LIBS=-lpthread $LIBS EXPORT_SYMBOLS=-Wl,-E @@ -572,16 +597,7 @@ dnl Python module config files need to know where to look for libraries (/usr/lib vs /usr/lib64) AC_SUBST_FILE(libdir) -if test x$prefix = xNONE; then - prefix=$ac_default_prefix -fi -if test x$host_cpu = xx86_64; then - libdir=$prefix/lib64 -else - libdir=$prefix/lib -fi - AC_OUTPUT(Makefile ganglia-config tests/Makefile i would never ever default libdir to $prefix/lib64. there are linux distros which default to single arch on x86_64. imho the default should always be plain $prefix/lib and if the packager/user is on a biarch system he has to specify --libdir. darix -- openSUSE - SUSE Linux is my linux openSUSE is good for you www.opensuse.org - Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 ___ Ganglia-developers mailing list Ganglia-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ganglia-developers
Re: [Ganglia-developers] [RFT]: build: linux 64bit biarch support
On Wednesday 02 July 2008 09:37:55 am Marcus Rueckert wrote: On 2008-07-02 06:36:41 -0500, Carlo Marcelo Arenas Belon wrote: The following proposed patch for stable 3.1, replaces the configure routine that tried to guess the libdir directory by assuming biarch rules from fedora linux (breaking all amd64 BSD and x64 Solaris) and overriding the libdir parameter passed at configure time (breaking fedora linux ppc64). Contains changes from r1452, r1467, r1468, r1475 and r1487 [...] i would never ever default libdir to $prefix/lib64. there are linux distros which default to single arch on x86_64. imho the default should always be plain $prefix/lib and if the packager/user is on a biarch system he has to specify --libdir. It seems most single-arch x86_64 distros have a compatibility symlink from lib to lib64, so it should work fine there too. Granted, yes, this could screw up a few people using single-arch x86_64 distros w/o a lib64 dir, but the failure mode should be obvious, and this probably helps more people than it hurts, since plenty of people building from source on bi-arch x86_64 neglect to pass in --libdir=/usr/lib64 and can wind up with less-than-obvious failure modes. I don't particularly care one way or the other myself, so long as I can pass in the correct libdir via configure, which is always done for rpm builds, of course. -- Jarod Wilson [EMAIL PROTECTED] - Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 ___ Ganglia-developers mailing list Ganglia-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ganglia-developers
Re: [Ganglia-developers] [RFT]: build: linux 64bit biarch support
On Wed, Jul 02, 2008 at 03:37:55PM +0200, Marcus Rueckert wrote: On 2008-07-02 06:36:41 -0500, Carlo Marcelo Arenas Belon wrote: The following proposed patch for stable 3.1, replaces the configure routine that tried to guess the libdir directory by assuming biarch rules from fedora linux (breaking all amd64 BSD and x64 Solaris) and overriding the libdir parameter passed at configure time (breaking fedora linux ppc64). Contains changes from r1452, r1467, r1468, r1475 and r1487 Carlo --- Index: configure.in === --- configure.in(revision 1496) +++ configure.in(working copy) @@ -111,7 +111,6 @@ dnl The following cpu_vendor_os string goes into config.h. dnl AC_DEFINE_UNQUOTED(HOST_OS, $host_os, HOST_OS) -AC_DEFINE_UNQUOTED(ARCH, $host_cpu, ARCH) AC_DEFINE_UNQUOTED(CPU_VENDOR_OS, $host, CPU_VENDOR_OS) dnl AC_CYGWIN @@ -494,14 +493,40 @@ EXPORT_SYMBOLS=-export-dynamic case $host in *linux*) -CFLAGS=$CFLAGS -D_REENTRANT -AC_DEFINE(LINUX, 1, LINUX) + CFLAGS=$CFLAGS -D_REENTRANT + AC_DEFINE(LINUX, 1, LINUX) dnl dnl For fsusage.c - disk usage. dnl -AC_DEFINE(STAT_STATVFS, 1, STAT_STATVFS) -AC_DEFINE(SUPPORT_GEXEC, 1, SUPPORT_GEXEC) -;; + AC_DEFINE(STAT_STATVFS, 1, STAT_STATVFS) + AC_DEFINE(SUPPORT_GEXEC, 1, SUPPORT_GEXEC) + if test x$build_cpu != xia64 \ + test x$build_cpu != xalpha; then + if test x$libdir = x\${exec_prefix}/lib; then + if test x$exec_prefix = xNONE; then + if test x$prefix = xNONE; then + libroot=/usr + else + libroot=$prefix + fi + else + libroot=$exec_prefix + fi + + AC_TRY_COMPILE([], [], + [file conftest.$ac_objext conftest.file]) + FILE=`cat conftest.file` + WIDTH_CPU=`expr x$FILE : '.*ELF \(.*\)-bit '` + rm -f conftest.file + if test x$WIDTH_CPU = x64; then + libdir=$libroot/lib64 + else + libdir=$libroot/lib + fi + moduledir=$libdir/ganglia + fi + fi + ;; *ia64-*hpux*) CFLAGS=$CFLAGS -D_PSTAT64 -D_HPUX_SOURCE LIBS=-lpthread $LIBS EXPORT_SYMBOLS=-Wl,-E @@ -572,16 +597,7 @@ dnl Python module config files need to know where to look for libraries (/usr/lib vs /usr/lib64) AC_SUBST_FILE(libdir) -if test x$prefix = xNONE; then - prefix=$ac_default_prefix -fi -if test x$host_cpu = xx86_64; then - libdir=$prefix/lib64 -else - libdir=$prefix/lib -fi - AC_OUTPUT(Makefile ganglia-config tests/Makefile i would never ever default libdir to $prefix/lib64. agree, and as I said several times, I'd rather drop this and revert the original patch that put that rule in there and rely in the packager/user to specify --libdir if on a biarch system because getting it right is hard and prone to failure : http://www.mail-archive.com/ganglia-developers@lists.sourceforge.net/msg04275.html but the part you are missing, is that this patch at least makes that problem smaller and allows packages/user to fix it using --libdir if we got it wrong and therefore it is most likely to help more people than it hurts, and will stop hurting all people affected in 3.1 by the current implementation. getting it wrong at least with what will be the first release of 3.1, will prevent some users to have a working package or will get them a gmond with no metrics to report and so (I presume, as I wasn't the one that committed the original patch) that since the failure mode will be bad it was better to try to guess a working libdir to prevent the user to shoot himself on the foot. There are some patches already being worked on for the next release of 3.1 which will hopefully make the failure mode be not that bad and then if this heuristic has been found to be more problematic than helpful will be easier to drop. there are linux distros which default to single arch on x86_64. do you have any examples?, I checked debian/ubuntu and they both will still work thanks to a link that maps lib64 into lib. I also checked gentoo and it will still work because lib64 (like in fedora) is the directory used for 64bit libraries.