From c32f82ca48d6a85a50e4945a9d3b73926ec1b157 Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Fri, 7 Aug 2009 23:46:00 +0000 Subject: [PATCH] Found kludge to permit build --- contribs/pam/Makefile.am | 26 +++++++++----------------- contribs/pam/Makefile.in | 4 ++-- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/contribs/pam/Makefile.am b/contribs/pam/Makefile.am index d7dcf1fb1fb..811c6d9e049 100644 --- a/contribs/pam/Makefile.am +++ b/contribs/pam/Makefile.am @@ -7,8 +7,7 @@ AUTOMAKE_OPTIONS = foreign CFLAGS = -fPIC INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/.. LIBS = -# Without "-module", we get error: `pam_slurm.la' is not a standard libtool library name -PLUGIN_FLAGS = -nostdlib -shared -module +PLUGIN_FLAGS = -lgcc -module -avoid-version --export-dynamic -nostdlib -shared if HAVE_PAM pam_lib = pam_slurm.la @@ -24,22 +23,15 @@ pam_slurm_la_SOURCES = \ $(top_builddir)/src/common/hostlist.c \ $(top_builddir)/src/common/hostlist.h pam_slurm_la_LDFLAGS = $(PLUGIN_FLAGS) +# +# The following kludge prevents libtool passing of an (unused) "-rpath" +# argument to cc, which also permits libtool from passing "-nostdlib" to cc. +# Without this kludge, "-nostdlib" is not passed to cc and the linking process +# results in duplicate "_init" and "_fini" symbols being defined, which is a +# fatal error. +am_pam_slurm_la_rpath = + else EXTRA_pam_slurm_la_SOURCES = pam_slurm.c endif -# Compiles fine -# Link line bad: -# gcc -shared .libs/pam_slurm.o .libs/hostlist.o -Wl,-soname -Wl,pam_slurm.so.0 -o .libs/pam_slurm.so.0.0.0 -#.libs/pam_slurm.o: In function `_init': -# pam_slurm.c:(.text+0xa33): multiple definition of `_init' -# /usr/lib/gcc/x86_64-linux-gnu/4.3.3/../../../../lib/crti.o:/build/buildd/glibc-2.9/build-tree/amd64-libc/csu/crti.S:25: first defined here -# .libs/pam_slurm.o: In function `_fini': -# pam_slurm.c:(.text+0xa87): multiple definition of `_fini' -# /usr/lib/gcc/x86_64-linux-gnu/4.3.3/../../../../lib/crti.o:/build/buildd/glibc-2.9/build-tree/amd64-libc/csu/crti.S:37: first defined here -# collect2: ld returned 1 exit status - -# Simple link is fine -# gcc -shared -nostdlib .libs/pam_slurm.o .libs/hostlist.o -Wl,-soname -Wl,pam_slurm.so.0 -o .libs/pam_slurm.so.0.0.0 - - diff --git a/contribs/pam/Makefile.in b/contribs/pam/Makefile.in index 3f3bd95a672..09dc4f32a3b 100644 --- a/contribs/pam/Makefile.in +++ b/contribs/pam/Makefile.in @@ -98,7 +98,6 @@ pam_slurm_la_OBJECTS = $(am_pam_slurm_la_OBJECTS) pam_slurm_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(pam_slurm_la_LDFLAGS) $(LDFLAGS) -o $@ -@HAVE_PAM_TRUE@am_pam_slurm_la_rpath = -rpath $(pkglibdir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/slurm depcomp = $(SHELL) $(top_srcdir)/auxdir/depcomp am__depfiles_maybe = depfiles @@ -300,7 +299,7 @@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/.. # Without "-module", we get error: `pam_slurm.la' is not a standard libtool library name -PLUGIN_FLAGS = -nostdlib -shared -module +PLUGIN_FLAGS = -lgcc -module -avoid-version --export-dynamic -nostdlib -shared @HAVE_PAM_FALSE@pam_lib = @HAVE_PAM_TRUE@pam_lib = pam_slurm.la pkglib_LTLIBRARIES = $(pam_lib) @@ -310,6 +309,7 @@ pkglib_LTLIBRARIES = $(pam_lib) @HAVE_PAM_TRUE@ $(top_builddir)/src/common/hostlist.h @HAVE_PAM_TRUE@pam_slurm_la_LDFLAGS = $(PLUGIN_FLAGS) +@HAVE_PAM_TRUE@am_pam_slurm_la_rpath = @HAVE_PAM_FALSE@EXTRA_pam_slurm_la_SOURCES = pam_slurm.c all: all-am -- GitLab