[GenABEL-dev] m4_ax_prog_cxx_mpi.m4

Frank, Alvaro Jesus alvaro.frank at rwth-aachen.de
Thu Oct 30 21:59:36 CET 2014


Hi Lennart, Thank you for all the info provided so far.

The problem at the moment is this. 

there are 2 different computers with 2 different setups. One where I work and one were the user installs the program. 

The one were the user installs the program has blas, boost etc. 
The one that generates the until now unseen dist tar has a different setup than the user computer.
SO one computer (developer) and many user computers (run). 
Is this correct?
1) @Developer computer, make dist check, then ----> give tar to user ---->2) user compiles and installs

How does that workflow work? my dist check fails because it asks me for blas, but there is no need to have blas at point 1) only the users blas is relevant at 2).

Am I suppose to do dist check on the same setup as the user will have?
Why is dist check asking me for libraries and all? 

Have you tried yourself doing the dist check to make it and then give that tar to someone and have that someone install it?

I am wondering because it seems to me that we are talking about 2 complete different approaches here.

-Alvaro

________________________________________
From: L.C. Karssen [lennart at karssen.org]
Sent: Thursday, October 30, 2014 8:46 PM
To: Frank, Alvaro Jesus; genabel-devel at lists.r-forge.r-project.org
Cc: juergen.riegel at helmholtz-muenchen.de
Subject: Re: m4_ax_prog_cxx_mpi.m4

Hi Alvaro,

On 30-10-14 15:31, Frank, Alvaro Jesus wrote:
> I am really not an autoconf user, but I am failing to do the make distcheck. I do have openblas.
> I am struggling as I am not the sysadmin. The end user IS the sysadmin.

Not always. From my experience with ProbABEL I know many aren't. That's
another reason to be happy with Autotools, it allows people not only to
specify where to find libraries, but also where to install:
 ./configure --prefix=$HOME/myprograms/AOnoMM/
or, with even more detail:
 ./configure --prefix=/my/install/path --sysconfdir=/my/install/path/ \
            --datarootdir=/my/install/path --docdir=/my/install/path/doc

>
> I am having trouble grasping this:
> They will choose the openblas,boost ,gcc,mpi,etc, path right?

The don't have to, but they can, see my other e-mail.

>
> So cant they just checkout the src and compile and obtain the binary normally?

Experienced people can do that too. There shouldn't be much difference.
However, I wouldn't call that 'normally'. I'd say that this is the way
people install software on their Linux system, most commonly used first:
1) via distro package manager from default repositories
2) via distro package manager from alternative repositories
3) by downloading the released source.tar.gz file and running
./configure && make && sudo make install (actually, this is what is
listed in the INSTALL file)
4) using 3, but with their own ./configure options
5) checkout from a VCS (either the latest/trunk or a tagged release)




>
> My error:
>
> make distcheck
> { test ! -d "omicabelnomm-0.1.0" || { find "omicabelnomm-0.1.0" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -fr "omicabelnomm-0.1.0"; }; }
> test -d "omicabelnomm-0.1.0" || mkdir "omicabelnomm-0.1.0"
> test -n "" \
> || find "omicabelnomm-0.1.0" -type d ! -perm -755 \
>         -exec chmod u+rwx,go+rx {} \; -o \
>   ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
>   ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
>   ! -type d ! -perm -444 -exec /bin/sh /home/alvaro.frank/omicabelnomm/OmicABELnoMM/install-sh -c -m a+r {} {} \; \
> || chmod -R a+r "omicabelnomm-0.1.0"
> tardir=omicabelnomm-0.1.0 && /bin/sh /home/alvaro.frank/omicabelnomm/OmicABELnoMM/missing --run tar chof - "$tardir" | GZIP=--best gzip -c >omicabelnomm-0.1.0.tar.gz
> { test ! -d "omicabelnomm-0.1.0" || { find "omicabelnomm-0.1.0" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -fr "omicabelnomm-0.1.0"; }; }
> case 'omicabelnomm-0.1.0.tar.gz' in \
> *.tar.gz*) \
>   GZIP=--best gzip -dc omicabelnomm-0.1.0.tar.gz | /bin/sh /home/alvaro.frank/omicabelnomm/OmicABELnoMM/missing --run tar xf - ;;\
> *.tar.bz2*) \
>   bzip2 -dc omicabelnomm-0.1.0.tar.bz2 | /bin/sh /home/alvaro.frank/omicabelnomm/OmicABELnoMM/missing --run tar xf - ;;\
> *.tar.lzma*) \
>   lzma -dc omicabelnomm-0.1.0.tar.lzma | /bin/sh /home/alvaro.frank/omicabelnomm/OmicABELnoMM/missing --run tar xf - ;;\
> *.tar.xz*) \
>   xz -dc omicabelnomm-0.1.0.tar.xz | /bin/sh /home/alvaro.frank/omicabelnomm/OmicABELnoMM/missing --run tar xf - ;;\
> *.tar.Z*) \
>   uncompress -c omicabelnomm-0.1.0.tar.Z | /bin/sh /home/alvaro.frank/omicabelnomm/OmicABELnoMM/missing --run tar xf - ;;\
> *.shar.gz*) \
>   GZIP=--best gzip -dc omicabelnomm-0.1.0.shar.gz | unshar ;;\
> *.zip*) \
>   unzip omicabelnomm-0.1.0.zip ;;\
> esac
> chmod -R a-w omicabelnomm-0.1.0; chmod a+w omicabelnomm-0.1.0
> mkdir omicabelnomm-0.1.0/_build
> mkdir omicabelnomm-0.1.0/_inst
> chmod a-w omicabelnomm-0.1.0
> test -d omicabelnomm-0.1.0/_build || exit 0; \
> dc_install_base=`CDPATH="${ZSH_VERSION+.}:" && cd omicabelnomm-0.1.0/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
>   && dc_destdir="${TMPDIR-/tmp}/am-dc-$$/" \
>   && am__cwd=`pwd` \
>   && CDPATH="${ZSH_VERSION+.}:" && cd omicabelnomm-0.1.0/_build \
>   && ../configure --srcdir=.. --prefix="$dc_install_base" \
>      \
>   && make  \
>   && make  dvi \
>   && make  check \
>   && make  install \
>   && make  installcheck \
>   && make  uninstall \
>   && make  distuninstallcheck_dir="$dc_install_base" \
>         distuninstallcheck \
>   && chmod -R a-w "$dc_install_base" \
>   && ({ \
>        (cd ../.. && umask 077 && mkdir "$dc_destdir") \
>        && make  DESTDIR="$dc_destdir" install \
>        && make  DESTDIR="$dc_destdir" uninstall \
>        && make  DESTDIR="$dc_destdir" \
>             distuninstallcheck_dir="$dc_destdir" distuninstallcheck; \
>       } || { rm -rf "$dc_destdir"; exit 1; }) \
>   && rm -rf "$dc_destdir" \
>   && make  dist \
>   && rm -rf omicabelnomm-0.1.0.tar.gz \
>   && make  distcleancheck \
>   && cd "$am__cwd" \
>   || exit 1
> checking for a BSD-compatible install... /usr/bin/install -c
> checking whether build environment is sane... yes
> checking for a thread-safe mkdir -p... /bin/mkdir -p
> checking for gawk... gawk
> checking whether make sets $(MAKE)... yes
> checking whether to disable maintainer-specific portions of Makefiles... yes
> checking for mpic++... mpic++
> checking whether the C++ compiler works... yes
> checking for C++ compiler default output file name... a.out
> checking for suffix of executables...
> checking whether we are cross compiling... no
> checking for suffix of object files... o
> checking whether we are using the GNU C++ compiler... yes
> checking whether mpic++ accepts -g... yes
> checking for style of include used by make... GNU
> checking dependency style of mpic++... gcc3
> checking dependency style of mpic++... (cached) gcc3
> checking for gcc... gcc
> checking whether we are using the GNU C compiler... yes
> checking whether gcc accepts -g... yes
> checking for gcc option to accept ISO C89... none needed
> checking dependency style of gcc... gcc3
> checking dependency style of gcc... (cached) gcc3
> checking for gcc option to support OpenMP... -fopenmp
> checking for library containing pthread_mutex_init... none required
> checking for library containing __iso_c_binding_c_f_pointer_l4... -lgfortran
> checking for library containing cblas_sgemm... no
> configure: error: OpenBLAS library NOT found
> make: *** [distcheck] Error 1
>

I assume you have your own BLAS compiled somewhere. Now the thing is
that you somehow have to influence how './configure' is run by 'make
distcheck'. This can be done as follows:

DISTCHECK_CONFIGURE_FLAGS="--disable-latex-doc --disable-silent-rules"
make -j4 distcheck

So, once we've set up a proper way to add the location of a BLAS library
(see my previous e-mail: via the Autoconf Archive macros), it should be
a matter of specifying the right configure option.
For now you I think (but didn't test) you should specify all CPPFLAGS,
something like this:

DISTCHECK_CONFIGURE_FLAGS="CPPFLAGS='-O3 -std=c++11 -march=native
-mfpmath=sse -flto -funroll-loops -I/path/to/your/BLAS'" make -j4 distcheck



Best,

Lennart.

> ________________________________________
> From: L.C. Karssen [lennart at karssen.org]
> Sent: Thursday, October 30, 2014 3:23 PM
> To: Frank, Alvaro Jesus; genabel-devel at lists.r-forge.r-project.org
> Subject: Re: m4_ax_prog_cxx_mpi.m4
>
> Hi Alvaro,
>
> On 30-10-14 15:16, Frank, Alvaro Jesus wrote:
>> Hi Lennart,
>>
>> Can we include m4_ax_prog_cxx_mpi.m4 on the root directory with our svn?
>
> We can. I'm not too much a fan of including code that is maintained
> elsewhere and packaged properly by Linux distributions, but if you think
> it might otherwise deter people from contributing, be my guest.
>
> But keep in mind that a user shouldn't need to have that file (because
> autoreconf will include it in the ./configure script, which is packaged
> in the tar.gz file). Only a developer/someone who checks out from SVN/a
> user who runs autoreconf after unpacking the source tar.gz file needs
> that file.
>
> As to the location: what do you mean with root directory? If you mean
> the root of the OAnoMM package (pkg/OmicABELnoMM/) than it's fine with me.
>
>
> Lennart.
>
>>
>> Best,
>>
>> -Alvaro
>
> --
> *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
> L.C. Karssen
> Utrecht
> The Netherlands
>
> lennart at karssen.org
> http://blog.karssen.org
> GPG key ID: A88F554A
> -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
>

--
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
L.C. Karssen
Utrecht
The Netherlands

lennart at karssen.org
http://blog.karssen.org
GPG key ID: A88F554A
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-



More information about the genabel-devel mailing list