arpack-ng icon indicating copy to clipboard operation
arpack-ng copied to clipboard

libparpack built without using FFLAGS when using autotools

Open loqs opened this issue 1 year ago • 2 comments

Expected behavior

FFLAGS will be used for all parts of the build.

Actual behavior

FFLAGS are used for everything except libparpack.

Where/how to reproduce the problem

  • arpack-ng: release or commit (SHA) 3.9.1 40329031ae8deb7c1e26baf8353fa384fc37c251
  • OS: debian ? ubuntu ? mac ?... Arch Linux
  • compiler: gcc ? intel ? clang ? version ?...
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --enable-languages=ada,c,c++,d,fortran,go,lto,objc,obj-c++ --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.2.1 20230801 (GCC) 
$ f90 -v
Using built-in specs.
COLLECT_GCC=f95
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --enable-languages=ada,c,c++,d,fortran,go,lto,objc,obj-c++ --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.2.1 20230801 (GCC) 
$ ompi_info
                 Package: Open MPI builduser@buildhost Distribution
                Open MPI: 4.1.6
  Open MPI repo revision: v4.1.6
   Open MPI release date: Sep 30, 2023
                Open RTE: 4.1.6
  Open RTE repo revision: v4.1.6
   Open RTE release date: Sep 30, 2023
                    OPAL: 4.1.6
      OPAL repo revision: v4.1.6
       OPAL release date: Sep 30, 2023
                 MPI API: 3.1.0
            Ident string: 4.1.6
                  Prefix: /usr
 Configured architecture: x86_64-pc-linux-gnu
          Configure host: buildhost
           Configured by: builduser
           Configured on: Fri Jan 19 20:02:42 UTC 2024
          Configure host: buildhost
  Configure command line: '--prefix=/usr' '--enable-builtin-atomics' '--enable-memchecker' '--enable-mpi-cxx' '--enable-mpi-fortran=all' '--enable-pretty-print-stacktrace' '--libdir=/usr/lib' '--sysconfdir=/etc/openmpi' '--with-cuda=/opt/cuda' '--with-hwloc=external' '--with-libevent=external' '--with-pmix=external' '--with-valgrind'
                Built by: builduser
                Built on: Fri Jan 19 20:02:42 UTC 2024
              Built host: buildhost
              C bindings: yes
            C++ bindings: yes
             Fort mpif.h: yes (all)
            Fort use mpi: yes (full: ignore TKR)
       Fort use mpi size: deprecated-ompi-info-value
        Fort use mpi_f08: yes
 Fort mpi_f08 compliance: The mpi_f08 module is available, but due to limitations in the gfortran compiler and/or Open MPI, does not support the following: array subsections, direct passthru (where possible) to underlying Open MPI's C functionality
  Fort mpi_f08 subarrays: no
           Java bindings: no
  Wrapper compiler rpath: runpath
              C compiler: gcc
     C compiler absolute: /usr/bin/gcc
  C compiler family name: GNU
      C compiler version: 13.2.1
            C++ compiler: g++
   C++ compiler absolute: /usr/bin/g++
           Fort compiler: gfortran
       Fort compiler abs: /usr/bin/gfortran
         Fort ignore TKR: yes (!GCC$ ATTRIBUTES NO_ARG_CHECK ::)
   Fort 08 assumed shape: yes
      Fort optional args: yes
          Fort INTERFACE: yes
    Fort ISO_FORTRAN_ENV: yes
       Fort STORAGE_SIZE: yes
      Fort BIND(C) (all): yes
      Fort ISO_C_BINDING: yes
 Fort SUBROUTINE BIND(C): yes
       Fort TYPE,BIND(C): yes
 Fort T,BIND(C,name="a"): yes
            Fort PRIVATE: yes
          Fort PROTECTED: yes
           Fort ABSTRACT: yes
       Fort ASYNCHRONOUS: yes
          Fort PROCEDURE: yes
         Fort USE...ONLY: yes
           Fort C_FUNLOC: yes
 Fort f08 using wrappers: yes
         Fort MPI_SIZEOF: yes
             C profiling: yes
           C++ profiling: yes
   Fort mpif.h profiling: yes
  Fort use mpi profiling: yes
   Fort use mpi_f08 prof: yes
          C++ exceptions: no
          Thread support: posix (MPI_THREAD_MULTIPLE: yes, OPAL support: yes, OMPI progress: no, ORTE progress: yes, Event lib: yes)
           Sparse Groups: no
  Internal debug support: no
  MPI interface warnings: yes
     MPI parameter check: runtime
Memory profiling support: no
Memory debugging support: no
              dl support: yes
   Heterogeneous support: no
 mpirun default --prefix: no
       MPI_WTIME support: native
     Symbol vis. support: yes
   Host topology support: yes
            IPv6 support: no
      MPI1 compatibility: no
          MPI extensions: affinity, cuda, pcollreq
   FT Checkpoint support: no (checkpoint thread: no)
   C/R Enabled Debugging: no
  MPI_MAX_PROCESSOR_NAME: 256
    MPI_MAX_ERROR_STRING: 256
     MPI_MAX_OBJECT_NAME: 64
        MPI_MAX_INFO_KEY: 36
        MPI_MAX_INFO_VAL: 256
       MPI_MAX_PORT_NAME: 1024
  MPI_MAX_DATAREP_STRING: 128
           MCA allocator: basic (MCA v2.1.0, API v2.0.0, Component v4.1.6)
           MCA allocator: bucket (MCA v2.1.0, API v2.0.0, Component v4.1.6)
           MCA backtrace: execinfo (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA btl: tcp (MCA v2.1.0, API v3.1.0, Component v4.1.6)
                 MCA btl: smcuda (MCA v2.1.0, API v3.1.0, Component v4.1.6)
                 MCA btl: self (MCA v2.1.0, API v3.1.0, Component v4.1.6)
                 MCA btl: vader (MCA v2.1.0, API v3.1.0, Component v4.1.6)
            MCA compress: gzip (MCA v2.1.0, API v2.0.0, Component v4.1.6)
            MCA compress: bzip (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA crs: none (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                  MCA dl: dlopen (MCA v2.1.0, API v1.0.0, Component v4.1.6)
               MCA event: external (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA hwloc: external (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                  MCA if: linux_ipv6 (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                  MCA if: posix_ipv4 (MCA v2.1.0, API v2.0.0, Component v4.1.6)
         MCA installdirs: env (MCA v2.1.0, API v2.0.0, Component v4.1.6)
         MCA installdirs: config (MCA v2.1.0, API v2.0.0, Component v4.1.6)
          MCA memchecker: valgrind (MCA v2.1.0, API v2.0.0, Component v4.1.6)
              MCA memory: patcher (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA mpool: hugepage (MCA v2.1.0, API v3.0.0, Component v4.1.6)
             MCA patcher: overwrite (MCA v2.1.0, API v1.0.0, Component v4.1.6)
                MCA pmix: flux (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA pmix: ext3x (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA pmix: isolated (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA pstat: linux (MCA v2.1.0, API v2.0.0, Component v4.1.6)
              MCA rcache: gpusm (MCA v2.1.0, API v3.3.0, Component v4.1.6)
              MCA rcache: grdma (MCA v2.1.0, API v3.3.0, Component v4.1.6)
              MCA rcache: rgpusm (MCA v2.1.0, API v3.3.0, Component v4.1.6)
           MCA reachable: netlink (MCA v2.1.0, API v2.0.0, Component v4.1.6)
           MCA reachable: weighted (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA shmem: posix (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA shmem: mmap (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA shmem: sysv (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA timer: linux (MCA v2.1.0, API v2.0.0, Component v4.1.6)
              MCA errmgr: default_tool (MCA v2.1.0, API v3.0.0, Component v4.1.6)
              MCA errmgr: default_app (MCA v2.1.0, API v3.0.0, Component v4.1.6)
              MCA errmgr: default_orted (MCA v2.1.0, API v3.0.0, Component v4.1.6)
              MCA errmgr: default_hnp (MCA v2.1.0, API v3.0.0, Component v4.1.6)
                 MCA ess: singleton (MCA v2.1.0, API v3.0.0, Component v4.1.6)
                 MCA ess: env (MCA v2.1.0, API v3.0.0, Component v4.1.6)
                 MCA ess: slurm (MCA v2.1.0, API v3.0.0, Component v4.1.6)
                 MCA ess: hnp (MCA v2.1.0, API v3.0.0, Component v4.1.6)
                 MCA ess: tool (MCA v2.1.0, API v3.0.0, Component v4.1.6)
                 MCA ess: pmi (MCA v2.1.0, API v3.0.0, Component v4.1.6)
               MCA filem: raw (MCA v2.1.0, API v2.0.0, Component v4.1.6)
             MCA grpcomm: direct (MCA v2.1.0, API v3.0.0, Component v4.1.6)
                 MCA iof: tool (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA iof: orted (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA iof: hnp (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA odls: default (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA odls: pspawn (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA oob: tcp (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA plm: isolated (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA plm: slurm (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA plm: rsh (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA ras: slurm (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA ras: simulator (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA regx: naive (MCA v2.1.0, API v1.0.0, Component v4.1.6)
                MCA regx: fwd (MCA v2.1.0, API v1.0.0, Component v4.1.6)
                MCA regx: reverse (MCA v2.1.0, API v1.0.0, Component v4.1.6)
               MCA rmaps: mindist (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA rmaps: ppr (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA rmaps: rank_file (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA rmaps: round_robin (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA rmaps: seq (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA rmaps: resilient (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA rml: oob (MCA v2.1.0, API v3.0.0, Component v4.1.6)
              MCA routed: direct (MCA v2.1.0, API v3.0.0, Component v4.1.6)
              MCA routed: radix (MCA v2.1.0, API v3.0.0, Component v4.1.6)
              MCA routed: binomial (MCA v2.1.0, API v3.0.0, Component v4.1.6)
                 MCA rtc: hwloc (MCA v2.1.0, API v1.0.0, Component v4.1.6)
              MCA schizo: ompi (MCA v2.1.0, API v1.0.0, Component v4.1.6)
              MCA schizo: jsm (MCA v2.1.0, API v1.0.0, Component v4.1.6)
              MCA schizo: slurm (MCA v2.1.0, API v1.0.0, Component v4.1.6)
              MCA schizo: flux (MCA v2.1.0, API v1.0.0, Component v4.1.6)
              MCA schizo: orte (MCA v2.1.0, API v1.0.0, Component v4.1.6)
               MCA state: hnp (MCA v2.1.0, API v1.0.0, Component v4.1.6)
               MCA state: app (MCA v2.1.0, API v1.0.0, Component v4.1.6)
               MCA state: tool (MCA v2.1.0, API v1.0.0, Component v4.1.6)
               MCA state: orted (MCA v2.1.0, API v1.0.0, Component v4.1.6)
               MCA state: novm (MCA v2.1.0, API v1.0.0, Component v4.1.6)
                 MCA bml: r2 (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA coll: han (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA coll: basic (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA coll: adapt (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA coll: cuda (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA coll: self (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA coll: inter (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA coll: monitoring (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA coll: sm (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA coll: libnbc (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA coll: tuned (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA coll: sync (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA fbtl: posix (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA fcoll: dynamic_gen2 (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA fcoll: individual (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA fcoll: two_phase (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA fcoll: vulcan (MCA v2.1.0, API v2.0.0, Component v4.1.6)
               MCA fcoll: dynamic (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                  MCA fs: ufs (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                  MCA io: romio321 (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                  MCA io: ompio (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                  MCA op: avx (MCA v2.1.0, API v1.0.0, Component v4.1.6)
                 MCA osc: rdma (MCA v2.1.0, API v3.0.0, Component v4.1.6)
                 MCA osc: pt2pt (MCA v2.1.0, API v3.0.0, Component v4.1.6)
                 MCA osc: sm (MCA v2.1.0, API v3.0.0, Component v4.1.6)
                 MCA osc: monitoring (MCA v2.1.0, API v3.0.0, Component v4.1.6)
                 MCA pml: v (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA pml: ob1 (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA pml: cm (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA pml: monitoring (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                 MCA rte: orte (MCA v2.1.0, API v2.0.0, Component v4.1.6)
            MCA sharedfp: sm (MCA v2.1.0, API v2.0.0, Component v4.1.6)
            MCA sharedfp: lockedfile (MCA v2.1.0, API v2.0.0, Component v4.1.6)
            MCA sharedfp: individual (MCA v2.1.0, API v2.0.0, Component v4.1.6)
                MCA topo: treematch (MCA v2.1.0, API v2.2.0, Component v4.1.6)
                MCA topo: basic (MCA v2.1.0, API v2.2.0, Component v4.1.6)
           MCA vprotocol: pessimist (MCA v2.1.0, API v2.0.0, Component v4.1.6)
$ ld -v
GNU ld (GNU Binutils) 2.41.0
  • environment: export FFLAGS ?...
$ printenv
SHELL=/bin/bash
DEBUG_FFLAGS= -ffile-prefix-map=/build/arpack/src=/usr/src/debug/arpack
BUILDTOOL=devtools
SUDO_GID=0
PYTHONHASHSEED=0
TEXTDOMAINDIR=/usr/share/locale
SUDO_COMMAND=/bin/bash -c bash -c cd\ /startdir;\ makepkg\ "$@" -bash --syncdeps --noconfirm --log --holdver --skipinteg --install
SUDO_USER=root
FFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -fstack-clash-protection -fcf-protection  -ffile-prefix-map=/build/arpack/src=/usr/src/debug/arpack
PWD=/build/arpack/src
SOURCE_DATE_EPOCH=1706383633
LOGNAME=builduser
CXXFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -fstack-clash-protection -fcf-protection  -Wformat -Werror=format-security -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/arpack/src=/usr/src/debug/arpack -flto=auto
DEBUG_RUSTFLAGS=-C debuginfo=2 --remap-path-prefix=/build/arpack/src=/usr/src/debug/arpack
COMMAND_MODE=legacy
LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -flto=auto
HOME=/build
LANG=C.UTF-8
RUSTFLAGS= -C debuginfo=2 --remap-path-prefix=/build/arpack/src=/usr/src/debug/arpack
FCFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -fstack-clash-protection -fcf-protection  -ffile-prefix-map=/build/arpack/src=/usr/src/debug/arpack
MAKEFLAGS=-j32
TERM=xterm-256color
USER=builduser
SHLVL=1
DEBUGINFOD_URLS=https://debuginfod.archlinux.org 
CHOST=x86_64-pc-linux-gnu
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -fstack-clash-protection -fcf-protection  -Wformat -Werror=format-security -g -ffile-prefix-map=/build/arpack/src=/usr/src/debug/arpack -flto=auto
SUDO_UID=0
MAIL=/var/mail/builduser
BUILDTOOLVER=1:1.0.4-1.1-any
OLDPWD=/startdir
TEXTDOMAIN=pacman-scripts
_=/usr/bin/printenv
  • configure: ./configure --enable-stuff ? cmake -DSTUFFS=ON ?
./configure --enable-icb --enable-mpi --prefix=/usr
cmake -DCMAKE_INSTALL_PREFIX='/usr'  -DICB=True -DMPI=True

Steps to reproduce the problem

For autotools with the issue:

$ cd arpack-ng
$ ./bootstrap
$ ./configure --enable-icb --enable-mpi --prefix=/usr
$ make
# make install

For cmake without the issue:

$ cd arpack-ng
$ ./bootstrap
$ cmake -DCMAKE_INSTALL_PREFIX='/usr'  -DICB=True -DMPI=True
$ cmake --build
# cmake --install

Notes, remarks

I believe the issue is caused by: https://github.com/opencollab/arpack-ng/blob/40329031ae8deb7c1e26baf8353fa384fc37c251/PARPACK/SRC/MPI/Makefile.am#L4-L5 Removing those lines and both build systems use FFLAGS throughout.

loqs avatar Jan 27 '24 19:01 loqs

Feel free to propose a PR

fghoussen avatar Jan 27 '24 19:01 fghoussen

I believe the issue is caused by:

If tested to work at your side, feel free to push this patch

fghoussen avatar Jan 27 '24 19:01 fghoussen