Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OMPI cannot build with Libtool 2.4.3 and above #311

Closed
rhc54 opened this issue Dec 9, 2014 · 6 comments
Closed

OMPI cannot build with Libtool 2.4.3 and above #311

rhc54 opened this issue Dec 9, 2014 · 6 comments
Labels
Milestone

Comments

@rhc54
Copy link
Contributor

rhc54 commented Dec 9, 2014

It fails with the following error:

CDPATH="${ZSH_VERSION+.}:" && cd ../../../ompi/opal/libltdl && /bin/sh /Users/bosilca/unstable/ompi/trunk/ompi/config/missing aclocal-1.14 -I ../../config
aclocal-1.14: error: ../../config/autogen_found_items.m4:312: file ‘opal/mca/backtrace/configure.m4’ does not exist
@rhc54 rhc54 added this to the Open MPI 1.9 milestone Dec 9, 2014
@rhc54
Copy link
Contributor Author

rhc54 commented Dec 9, 2014

Should point out that the latest MacPorts update will load libtool 2.4.4 on the Mac, thereby breaking OMPI's build system 👎

@jsquyres
Copy link
Member

I'm fairly certain that this is due to a bug in LT 2.4.4 (I did not test 2.4.3 myself, but based on @rhc54's filing this issue against LT 2.4.3, the issue was probably introduced in LT 2.4.3).

See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19370.

@jsquyres
Copy link
Member

Removing the "blocker" tag; if this is actually a Libtool bug, the solution is (annoying but) simple: don't upgrade past LT 2.4.2. :-(

jsquyres added a commit to jsquyres/ompi that referenced this issue Jan 30, 2015
Per open-mpi#311, Libtool v2.4.4 exposes a bug in either Libtool
and/or autoreconf (after discussions with Libtool and Autoconf
maintainers, it's not clear which) when embedding libltdl.

After some discussion in the Open MPI community, we have decided to
both remove our embedded libltdl and (mostly) treat libltdl like any
other external library:

* If --disable-dlopen is specified, it behaves as it always has:
  libltdl support is wholly disabled, and all plugins are slurped into
  their higher-level libraries.
* If --enable-dlopen is specified, configure will abort if it cannot
  find properly libltdl support.
* If neither of these are specified, configure will behave differently
  between a developer build (i.e., where a .git directory is present
  in the source tree) and non-developer build:
  * In a developer build, --enable-dlopen is assumed (i.e., configure
    will abort if libltdl support cannot be found).
  * In a non-developer build:
    * If configure finds libltdl support, it will build dlopen support
      and build plugins as DSOs.
    * If configure does not find libltdl support, it will disable dlopen
      support and slurp plugins into higher level libraries.

Fixes open-mpi#311.
jsquyres added a commit to jsquyres/ompi that referenced this issue Jan 30, 2015
Per open-mpi#311, Libtool v2.4.4 exposes a bug in either Libtool
and/or autoreconf (after discussions with Libtool and Autoconf
maintainers, it's not clear which) when embedding libltdl.

After some discussion in the Open MPI community, we have decided to
both remove our embedded libltdl and (mostly) treat libltdl like any
other external library:

* If --disable-dlopen is specified, it behaves as it always has:
  libltdl support is wholly disabled, and all plugins are slurped into
  their higher-level libraries.
* If --enable-dlopen is specified, configure will abort if it cannot
  find properly libltdl support.
* If neither of these are specified, configure will behave differently
  between a developer build (i.e., where a .git directory is present
  in the source tree) and non-developer build:
  * In a developer build, --enable-dlopen is assumed (i.e., configure
    will abort if libltdl support cannot be found). --disable-dlopen
    must be specified if you do not have libltdl support.
  * In a non-developer build:
    * If configure finds libltdl support, it will build dlopen support
      and build plugins as DSOs.
    * If configure does not find libltdl support, it will disable dlopen
      support and slurp plugins into higher level libraries.

The developer build behavior is because dlopen support is usually
highly valued (e.g., being able to repeatedly build individual
plugins), and libltdl-devel may not be installed by default on Linux
distros and OSX. Hence, developers may inadvertently build without
dlopen support without this special developer-build provision.

Fixes open-mpi#311.
jsquyres added a commit to jsquyres/ompi that referenced this issue Jan 30, 2015
Per open-mpi#311, Libtool v2.4.4 exposes a bug in either Libtool
and/or autoreconf (after discussions with Libtool and Autoconf
maintainers, it's not clear which) when embedding libltdl.

After some discussion in the Open MPI community, we have decided to
both remove our embedded libltdl and (mostly) treat libltdl like any
other external library:

* If --disable-dlopen is specified, it behaves as it always has:
  libltdl support is wholly disabled, and all plugins are slurped into
  their higher-level libraries.
* If --enable-dlopen is specified, configure will abort if it cannot
  find proper libltdl support.
* If neither of these are specified, configure will behave differently
  between a developer build (i.e., where a .git directory is present
  in the source tree) and non-developer build:
  * In a developer build, --enable-dlopen is assumed (i.e., configure
    will abort if libltdl support cannot be found). --disable-dlopen
    must be specified if you do not have libltdl support.
  * In a non-developer build:
    * If configure finds libltdl support, it will behave as if
      --enable-dlopen was specified.
    * If configure does not find libltdl support, it will behave as if
      --disable-dlopen was specified.

The developer build behavior is because dlopen support is usually
highly valued (e.g., being able to repeatedly build individual
plugins), and libltdl-devel may not be installed by default on Linux
distros and OSX.  Hence, without this special developer-build
provision, developers may inadvertently build without dlopen support.

Fixes open-mpi#311.
jsquyres added a commit to jsquyres/ompi that referenced this issue Jan 30, 2015
Per open-mpi#311, Libtool v2.4.4 exposes a bug in either Libtool
and/or autoreconf (after discussions with Libtool and Autoconf
maintainers, it's not clear which) when embedding libltdl.

After some discussion in the Open MPI community, we have decided to
both remove our embedded libltdl and (mostly) treat libltdl like any
other external library:

* If --disable-dlopen is specified, it behaves as it always has:
  libltdl support is wholly disabled, and all plugins are slurped into
  their higher-level libraries.
* If --enable-dlopen is specified, configure will abort if it cannot
  find proper libltdl support.
* If neither of these are specified, configure will behave differently
  between a developer build (i.e., where a .git directory is present
  in the source tree) and non-developer build:
  * In a developer build, --enable-dlopen is assumed (i.e., configure
    will abort if libltdl support cannot be found). --disable-dlopen
    must be specified if you do not have libltdl support.
  * In a non-developer build:
    * If configure finds libltdl support, it will behave as if
      --enable-dlopen was specified.
    * If configure does not find libltdl support, it will behave as if
      --disable-dlopen was specified.

The developer build behavior is because dlopen support is usually
highly valued (e.g., being able to repeatedly build individual
plugins), and libltdl-devel may not be installed by default on Linux
distros and OSX.  Hence, without this special developer-build
provision, developers may inadvertently build without dlopen support.

Fixes open-mpi#311.
jsquyres added a commit that referenced this issue Feb 3, 2015
Per #311, Libtool v2.4.4 exposes a bug in either Libtool
and/or autoreconf (after discussions with Libtool and Autoconf
maintainers, it's not clear which) when embedding libltdl.

After some discussion in the Open MPI community, we have decided to
both remove our embedded libltdl and (mostly) treat libltdl like any
other external library:

* If --disable-dlopen is specified, it behaves as it always has:
  libltdl support is wholly disabled, and all plugins are slurped into
  their higher-level libraries.
* If --enable-dlopen is specified, configure will abort if it cannot
  find proper libltdl support.
* If neither of these are specified, configure will behave differently
  between a developer build (i.e., where a .git directory is present
  in the source tree) and non-developer build:
  * In a developer build, --enable-dlopen is assumed (i.e., configure
    will abort if libltdl support cannot be found). --disable-dlopen
    must be specified if you do not have libltdl support.
  * In a non-developer build:
    * If configure finds libltdl support, it will behave as if
      --enable-dlopen was specified.
    * If configure does not find libltdl support, it will behave as if
      --disable-dlopen was specified.

The developer build behavior is because dlopen support is usually
highly valued (e.g., being able to repeatedly build individual
plugins), and libltdl-devel may not be installed by default on Linux
distros and OSX.  Hence, without this special developer-build
provision, developers may inadvertently build without dlopen support.

Fixes #311.
jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 7, 2015
Per open-mpi#311, Libtool v2.4.4 exposes a bug in either Libtool
and/or autoreconf (after discussions with Libtool and Autoconf
maintainers, it's not clear which) when embedding libltdl.

After some discussion in the Open MPI community, we have decided to
both remove our embedded libltdl and (mostly) treat libltdl like any
other external library:

* If --disable-dlopen is specified, it behaves as it always has:
  libltdl support is wholly disabled, and all plugins are slurped into
  their higher-level libraries.
* If --enable-dlopen is specified, configure will abort if it cannot
  find proper libltdl support.
* If neither of these are specified, configure will behave differently
  between a developer build (i.e., where a .git directory is present
  in the source tree) and non-developer build:
  * In a developer build, --enable-dlopen is assumed (i.e., configure
    will abort if libltdl support cannot be found). --disable-dlopen
    must be specified if you do not have libltdl support.
  * In a non-developer build:
    * If configure finds libltdl support, it will behave as if
      --enable-dlopen was specified.
    * If configure does not find libltdl support, it will behave as if
      --disable-dlopen was specified.

The developer build behavior is because dlopen support is usually
highly valued (e.g., being able to repeatedly build individual
plugins), and libltdl-devel may not be installed by default on Linux
distros and OSX.  Hence, without this special developer-build
provision, developers may inadvertently build without dlopen support.

Fixes open-mpi#311.
jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 11, 2015
Per open-mpi#311, Libtool v2.4.4 exposes a bug in either Libtool
and/or autoreconf (after discussions with Libtool and Autoconf
maintainers, it's not clear which) when embedding libltdl.

After some discussion in the Open MPI community, we have decided to
both remove our embedded libltdl and (mostly) treat libltdl like any
other external library:

* If --disable-dlopen is specified, it behaves as it always has:
  libltdl support is wholly disabled, and all plugins are slurped into
  their higher-level libraries.
* If --enable-dlopen is specified, configure will abort if it cannot
  find proper libltdl support.
* If neither of these are specified, configure will behave differently
  between a developer build (i.e., where a .git directory is present
  in the source tree) and non-developer build:
  * In a developer build, --enable-dlopen is assumed (i.e., configure
    will abort if libltdl support cannot be found). --disable-dlopen
    must be specified if you do not have libltdl support.
  * In a non-developer build:
    * If configure finds libltdl support, it will behave as if
      --enable-dlopen was specified.
    * If configure does not find libltdl support, it will behave as if
      --disable-dlopen was specified.

The developer build behavior is because dlopen support is usually
highly valued (e.g., being able to repeatedly build individual
plugins), and libltdl-devel may not be installed by default on Linux
distros and OSX.  Hence, without this special developer-build
provision, developers may inadvertently build without dlopen support.

Fixes open-mpi#311.
jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 11, 2015
Per open-mpi#311, Libtool v2.4.4 exposes a bug in either Libtool
and/or autoreconf (after discussions with Libtool and Autoconf
maintainers, it's not clear which) when embedding libltdl.

After some discussion in the Open MPI community, we have decided to
both remove our embedded libltdl and (mostly) treat libltdl like any
other external library:

* If --disable-dlopen is specified, it behaves as it always has:
  libltdl support is wholly disabled, and all plugins are slurped into
  their higher-level libraries.
* If --enable-dlopen is specified, configure will abort if it cannot
  find proper libltdl support.
* If neither of these are specified, configure will behave differently
  between a developer build (i.e., where a .git directory is present
  in the source tree) and non-developer build:
  * In a developer build, --enable-dlopen is assumed (i.e., configure
    will abort if libltdl support cannot be found). --disable-dlopen
    must be specified if you do not have libltdl support.
  * In a non-developer build:
    * If configure finds libltdl support, it will behave as if
      --enable-dlopen was specified.
    * If configure does not find libltdl support, it will behave as if
      --disable-dlopen was specified.

The developer build behavior is because dlopen support is usually
highly valued (e.g., being able to repeatedly build individual
plugins), and libltdl-devel may not be installed by default on Linux
distros and OSX.  Hence, without this special developer-build
provision, developers may inadvertently build without dlopen support.

Fixes open-mpi#311.
jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 11, 2015
Per open-mpi#311, Libtool v2.4.4 exposes a bug in either Libtool
and/or autoreconf (after discussions with Libtool and Autoconf
maintainers, it's not clear which) when embedding libltdl.

After some discussion in the Open MPI community, we have decided to
both remove our embedded libltdl and (mostly) treat libltdl like any
other external library:

* If --disable-dlopen is specified, it behaves as it always has:
  libltdl support is wholly disabled, and all plugins are slurped into
  their higher-level libraries.
* If --enable-dlopen is specified, configure will abort if it cannot
  find proper libltdl support.
* If neither of these are specified, configure will behave differently
  between a developer build (i.e., where a .git directory is present
  in the source tree) and non-developer build:
  * In a developer build, --enable-dlopen is assumed (i.e., configure
    will abort if libltdl support cannot be found). --disable-dlopen
    must be specified if you do not have libltdl support.
  * In a non-developer build:
    * If configure finds libltdl support, it will behave as if
      --enable-dlopen was specified.
    * If configure does not find libltdl support, it will behave as if
      --disable-dlopen was specified.

The developer build behavior is because dlopen support is usually
highly valued (e.g., being able to repeatedly build individual
plugins), and libltdl-devel may not be installed by default on Linux
distros and OSX.  Hence, without this special developer-build
provision, developers may inadvertently build without dlopen support.

Fixes open-mpi#311.
jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 11, 2015
Per open-mpi#311, Libtool v2.4.4 exposes a bug in either Libtool
and/or autoreconf (after discussions with Libtool and Autoconf
maintainers, it's not clear which) when embedding libltdl.

After some discussion in the Open MPI community, we have decided to
both remove our embedded libltdl and (mostly) treat libltdl like any
other external library:

* If --disable-dlopen is specified, it behaves as it always has:
  libltdl support is wholly disabled, and all plugins are slurped into
  their higher-level libraries.
* If --enable-dlopen is specified, configure will abort if it cannot
  find proper libltdl support.
* If neither of these are specified, configure will behave differently
  between a developer build (i.e., where a .git directory is present
  in the source tree) and non-developer build:
  * In a developer build, --enable-dlopen is assumed (i.e., configure
    will abort if libltdl support cannot be found). --disable-dlopen
    must be specified if you do not have libltdl support.
  * In a non-developer build:
    * If configure finds libltdl support, it will behave as if
      --enable-dlopen was specified.
    * If configure does not find libltdl support, it will behave as if
      --disable-dlopen was specified.

The developer build behavior is because dlopen support is usually
highly valued (e.g., being able to repeatedly build individual
plugins), and libltdl-devel may not be installed by default on Linux
distros and OSX.  Hence, without this special developer-build
provision, developers may inadvertently build without dlopen support.

Fixes open-mpi#311.
@jsquyres
Copy link
Member

There are now two PRs that can solve this issue (each has tradeoffs):

  1. RFC: Remove embedded libltdl #366: Remove libltdl from the tree
    • PRO: libltdl is now just like any other library -- we build support for it if it's there, skip it if it's not
    • CON: default behavior of dlopen/DSO support will likely disappear from many installations because libltdl-devel support (i.e., ltdl.h) is not frequently installed by default
    • CON: lose "good" error messages for when DSOs fail to open (OMPI has been locally applying a patch that didn't go upstream to Libtool)
    • CON: potentially increase MPI process size (because unused plugins can't be closed/unloaded)
  2. RFC: Embed libltdl in opal/libltdl #390: Embed libltdl in the tree
    • PRO: preserve default dlopen/DSO behavior
    • PRO: preserve "good" ltdl error messages
    • CON: have to maintain embedded libltdl

As a community, we need to decide which one we want.

@jsquyres
Copy link
Member

jsquyres commented Feb 19, 2015

Per the Tuesday 17 Feb 2015 webex, we decided to go with #390 and ditch #366.

However, per #390 (comment), #390 has become untenable. I'm working on a new approach; more details soon.

jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 21, 2015
The libltdl interface has been completely replaced by the OPAL DL
framework (i.e., the opal_dl interface).

Fixes open-mpi#311
jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 21, 2015
The libltdl interface has been completely replaced by the OPAL DL
framework (i.e., the opal_dl interface).

Fixes open-mpi#311
jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 21, 2015
The libltdl interface has been completely replaced by the OPAL DL
framework (i.e., the opal_dl interface).

Fixes open-mpi#311
jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 22, 2015
The libltdl interface has been completely replaced by the OPAL DL
framework (i.e., the opal_dl interface).

Fixes open-mpi#311
jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 23, 2015
The libltdl interface has been completely replaced by the OPAL DL
framework (i.e., the opal_dl interface).

Fixes open-mpi#311
jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 23, 2015
The libltdl interface has been completely replaced by the OPAL DL
framework (i.e., the opal_dl interface).

Fixes open-mpi#311
jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 23, 2015
The libltdl interface has been completely replaced by the OPAL DL
framework (i.e., the opal_dl interface).

Fixes open-mpi#311
jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 25, 2015
The libltdl interface has been completely replaced by the OPAL DL
framework (i.e., the opal_dl interface).

Fixes open-mpi#311
jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 25, 2015
The libltdl interface has been completely replaced by the OPAL DL
framework (i.e., the opal_dl interface).

Fixes open-mpi#311
jsquyres added a commit to jsquyres/ompi that referenced this issue Feb 27, 2015
The libltdl interface has been completely replaced by the OPAL DL
framework (i.e., the opal_dl interface).

Fixes open-mpi#311
jsquyres added a commit to jsquyres/ompi that referenced this issue Mar 4, 2015
The libltdl interface has been completely replaced by the OPAL DL
framework (i.e., the opal_dl interface).

Fixes open-mpi#311
@jsquyres
Copy link
Member

Just to tie off this issue: #410 was the PR that contained the final solution for this issue.

jsquyres pushed a commit to jsquyres/ompi that referenced this issue Sep 21, 2016
Revert "Fix a typo in the alignment threshold in openib BTL."
dong0321 pushed a commit to dong0321/ompi that referenced this issue Feb 19, 2020
Not finding a job object isn't necessarily an error
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants