Re: [FIX] devel/openmpi: Make main API symbols non-local (Re: devel/openmpi Can't link example program, symbols local in libmpi.so.0.1?)

2019-01-21 Thread Jeremie Courreges-Anglas
On Mon, Jan 21 2019, Andreas Kusalananda Kähäri  wrote:
> Ping on this.  It makes the _ancient_ version of OpenMPI that we have
> usable.  Currently, the API's symbols are not exported in the library, so
> the port is virtually unusable.  This simple patch fixes that.

I've just committed a tweaked version (the workaround is not needed on
gcc archs).  Thanks, and sorry for the delay.

I'm working on an update to openmpi-4.0.0, not sure when it'll be ready
though.

-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE



Re: [FIX] devel/openmpi: Make main API symbols non-local (Re: devel/openmpi Can't link example program, symbols local in libmpi.so.0.1?)

2019-01-21 Thread Andreas Kusalananda Kähäri

Ping on this.  It makes the _ancient_ version of OpenMPI that we have
usable.  Currently, the API's symbols are not exported in the library, so
the port is virtually unusable.  This simple patch fixes that.

Cheers,
Andreas

On Mon, Jan 14, 2019 at 10:52:43AM +0100, Andreas Kusalananda Kähäri wrote:
> On Mon, Jan 14, 2019 at 07:38:34AM +0100, Andreas Kusalananda Kähäri wrote:
> > On Sun, Jan 13, 2019 at 04:37:23PM +0100, Thomas L. wrote:
> > > Hi,
> > > 
> > > I tried compiling a MPI example program 
> > > (https://raw.githubusercontent.com/wesleykendall/mpitutorial/gh-pages/tutorials/mpi-hello-world/code/mpi_hello_world.c)
> > >  with openmpi on -current and it fails linking:
> > > $ mpicc -v Downloads/mpi_hello_world.c 
> > > OpenBSD clang version 6.0.0 (tags/RELEASE_600/final) (based on LLVM 6.0.0)
> > > Target: amd64-unknown-openbsd6.4
> > > Thread model: posix
> > > InstalledDir: /usr/bin
> > >  "/usr/bin/cc" -cc1 -triple amd64-unknown-openbsd6.4 -emit-obj 
> > > -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names 
> > > -main-file-name mpi_hello_world.c -mrelocation-model pic -pic-level 1 
> > > -pic-is-pie -mthread-model posix -mdisable-fp-elim -relaxed-aliasing 
> > > -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 
> > > -dwarf-column-info -debugger-tuning=gdb -v -resource-dir 
> > > /usr/lib/clang/6.0.0 -I /usr/local/include -fdebug-compilation-dir 
> > > /home/tom -ferror-limit 19 -fmessage-length 224 -femulated-tls -fwrapv 
> > > -pthread -stack-protector 2 -D_RET_PROTECTOR -ret-protector 
> > > -fobjc-runtime=gnustep -fdiagnostics-show-option -fno-builtin-malloc 
> > > -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-valloc 
> > > -fno-builtin-free -fno-builtin-strdup -fno-builtin-strndup -o 
> > > /tmp/mpi_hello_world-a9e376.o -x c Downloads/mpi_hello_world.c
> > > clang -cc1 version 6.0.0 based upon LLVM 6.0.0 default target 
> > > amd64-unknown-openbsd6.4
> > > #include "..." search starts here:
> > > #include <...> search starts here:
> > >  /usr/local/include
> > >  /usr/lib/clang/6.0.0/include
> > >  /usr/include
> > > End of search list.
> > >  "/usr/bin/ld" -e __start --eh-frame-hdr -Bdynamic -dynamic-linker 
> > > /usr/libexec/ld.so -o a.out /usr/bin/../lib/crt0.o 
> > > /usr/bin/../lib/crtbegin.o -L/usr/local/lib -L/usr/bin/../lib -L/usr/lib 
> > > /tmp/mpi_hello_world-a9e376.o -lmpi -lopen-rte -lopen-pal -E -lutil -lm 
> > > -lcompiler_rt -lpthread -lc -lcompiler_rt /usr/bin/../lib/crtend.o
> > > /usr/bin/ld: error: undefined symbol: MPI_Init
> > > >>> referenced by mpi_hello_world.c
> > > >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> > > 
> > > /usr/bin/ld: error: undefined symbol: MPI_Comm_size
> > > >>> referenced by mpi_hello_world.c
> > > >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> > > 
> > > /usr/bin/ld: error: undefined symbol: MPI_Comm_rank
> > > >>> referenced by mpi_hello_world.c
> > > >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> > > 
> > > /usr/bin/ld: error: undefined symbol: MPI_Get_processor_name
> > > >>> referenced by mpi_hello_world.c
> > > >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> > > 
> > > /usr/bin/ld: error: undefined symbol: MPI_Finalize
> > > >>> referenced by mpi_hello_world.c
> > > >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> > > cc: error: linker command failed with exit code 1 (use -v to see 
> > > invocation)
> > > 
> > > The reason seems to be, that the relevant symbols in libmpi.so.0.1 are 
> > > local:
> > > $ nm /usr/local/lib/libmpi.so.0.1  | grep MPI_Init
> > > 00070330 t MPI_Init
> > > 000704f0 t MPI_Init_thread
> > > 000706b0 t MPI_Initialized
> > > 00070330 T PMPI_Init
> > > 000704f0 T PMPI_Init_thread
> > > 000706b0 T PMPI_Initialized
> > > 
> > > Unfortunately, I have no idea why this happens.
> > > 
> > > Kind regards,
> > > 
> > > Thomas
> > 
> > Yes, I also noticed this in June last year [1].  Only the profiling
> > version of each API function is non-local.  Unfortunately, I was in a
> > hurry to get something working so I simply moved my development and
> > testing to another operating system rather than digging into why this
> > was so.  I might try to look into this later if time permits.
> > 
> > [1] https://marc.info/?l=openbsd-ports=152929789302360=2
> > 
> > 
> > Regards,
> > 
> > -- 
> > Andreas Kusalananda Kähäri,
> > National Bioinformatics Infrastructure Sweden (NBIS),
> > Uppsala University, Sweden.
> 
> 
> Ok, so it seems OpenMPI has to be configured with --disable-visibility.
> This would make the symbols show up as "W" ("weak") instead of as local.
> A simple test program compiles.
> 
> A patch for the devel/openmpi port is attached, although the port we
> have is marked as "ancient" on the OpenMPI web pages [1], and the latest
> release is 4.0.0.
> 
> [1] https://www.open-mpi.org/
> 
> Regards,
> 
> -- 
> Andreas Kusalananda Kähäri,
> National Bioinformatics Infrastructure Sweden (NBIS),
> 

[FIX] devel/openmpi: Make main API symbols non-local (Re: devel/openmpi Can't link example program, symbols local in libmpi.so.0.1?)

2019-01-14 Thread Andreas Kusalananda Kähäri
On Mon, Jan 14, 2019 at 07:38:34AM +0100, Andreas Kusalananda Kähäri wrote:
> On Sun, Jan 13, 2019 at 04:37:23PM +0100, Thomas L. wrote:
> > Hi,
> > 
> > I tried compiling a MPI example program 
> > (https://raw.githubusercontent.com/wesleykendall/mpitutorial/gh-pages/tutorials/mpi-hello-world/code/mpi_hello_world.c)
> >  with openmpi on -current and it fails linking:
> > $ mpicc -v Downloads/mpi_hello_world.c 
> > OpenBSD clang version 6.0.0 (tags/RELEASE_600/final) (based on LLVM 6.0.0)
> > Target: amd64-unknown-openbsd6.4
> > Thread model: posix
> > InstalledDir: /usr/bin
> >  "/usr/bin/cc" -cc1 -triple amd64-unknown-openbsd6.4 -emit-obj -mrelax-all 
> > -disable-free -disable-llvm-verifier -discard-value-names -main-file-name 
> > mpi_hello_world.c -mrelocation-model pic -pic-level 1 -pic-is-pie 
> > -mthread-model posix -mdisable-fp-elim -relaxed-aliasing -masm-verbose 
> > -mconstructor-aliases -munwind-tables -target-cpu x86-64 -dwarf-column-info 
> > -debugger-tuning=gdb -v -resource-dir /usr/lib/clang/6.0.0 -I 
> > /usr/local/include -fdebug-compilation-dir /home/tom -ferror-limit 19 
> > -fmessage-length 224 -femulated-tls -fwrapv -pthread -stack-protector 2 
> > -D_RET_PROTECTOR -ret-protector -fobjc-runtime=gnustep 
> > -fdiagnostics-show-option -fno-builtin-malloc -fno-builtin-calloc 
> > -fno-builtin-realloc -fno-builtin-valloc -fno-builtin-free 
> > -fno-builtin-strdup -fno-builtin-strndup -o /tmp/mpi_hello_world-a9e376.o 
> > -x c Downloads/mpi_hello_world.c
> > clang -cc1 version 6.0.0 based upon LLVM 6.0.0 default target 
> > amd64-unknown-openbsd6.4
> > #include "..." search starts here:
> > #include <...> search starts here:
> >  /usr/local/include
> >  /usr/lib/clang/6.0.0/include
> >  /usr/include
> > End of search list.
> >  "/usr/bin/ld" -e __start --eh-frame-hdr -Bdynamic -dynamic-linker 
> > /usr/libexec/ld.so -o a.out /usr/bin/../lib/crt0.o 
> > /usr/bin/../lib/crtbegin.o -L/usr/local/lib -L/usr/bin/../lib -L/usr/lib 
> > /tmp/mpi_hello_world-a9e376.o -lmpi -lopen-rte -lopen-pal -E -lutil -lm 
> > -lcompiler_rt -lpthread -lc -lcompiler_rt /usr/bin/../lib/crtend.o
> > /usr/bin/ld: error: undefined symbol: MPI_Init
> > >>> referenced by mpi_hello_world.c
> > >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> > 
> > /usr/bin/ld: error: undefined symbol: MPI_Comm_size
> > >>> referenced by mpi_hello_world.c
> > >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> > 
> > /usr/bin/ld: error: undefined symbol: MPI_Comm_rank
> > >>> referenced by mpi_hello_world.c
> > >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> > 
> > /usr/bin/ld: error: undefined symbol: MPI_Get_processor_name
> > >>> referenced by mpi_hello_world.c
> > >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> > 
> > /usr/bin/ld: error: undefined symbol: MPI_Finalize
> > >>> referenced by mpi_hello_world.c
> > >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> > cc: error: linker command failed with exit code 1 (use -v to see invocation)
> > 
> > The reason seems to be, that the relevant symbols in libmpi.so.0.1 are 
> > local:
> > $ nm /usr/local/lib/libmpi.so.0.1  | grep MPI_Init
> > 00070330 t MPI_Init
> > 000704f0 t MPI_Init_thread
> > 000706b0 t MPI_Initialized
> > 00070330 T PMPI_Init
> > 000704f0 T PMPI_Init_thread
> > 000706b0 T PMPI_Initialized
> > 
> > Unfortunately, I have no idea why this happens.
> > 
> > Kind regards,
> > 
> > Thomas
> 
> Yes, I also noticed this in June last year [1].  Only the profiling
> version of each API function is non-local.  Unfortunately, I was in a
> hurry to get something working so I simply moved my development and
> testing to another operating system rather than digging into why this
> was so.  I might try to look into this later if time permits.
> 
> [1] https://marc.info/?l=openbsd-ports=152929789302360=2
> 
> 
> Regards,
> 
> -- 
> Andreas Kusalananda Kähäri,
> National Bioinformatics Infrastructure Sweden (NBIS),
> Uppsala University, Sweden.


Ok, so it seems OpenMPI has to be configured with --disable-visibility.
This would make the symbols show up as "W" ("weak") instead of as local.
A simple test program compiles.

A patch for the devel/openmpi port is attached, although the port we
have is marked as "ancient" on the OpenMPI web pages [1], and the latest
release is 4.0.0.

[1] https://www.open-mpi.org/

Regards,

-- 
Andreas Kusalananda Kähäri,
National Bioinformatics Infrastructure Sweden (NBIS),
Uppsala University, Sweden.
Index: Makefile
===
RCS file: /extra/cvs/ports/devel/openmpi/Makefile,v
retrieving revision 1.25
diff -u -p -r1.25 Makefile
--- Makefile24 Oct 2018 14:28:00 -  1.25
+++ Makefile14 Jan 2019 08:35:11 -
@@ -7,7 +7,7 @@ COMMENT =   open source MPI-2 implementat
 
 V= 1.4.1
 DISTNAME = openmpi-$V
-REVISION = 7
+REVISION = 8
 
 SHARED_LIBS =  

Re: devel/openmpi Can't link example program, symbols local in libmpi.so.0.1?

2019-01-13 Thread Andreas Kusalananda Kähäri
On Sun, Jan 13, 2019 at 04:37:23PM +0100, Thomas L. wrote:
> Hi,
> 
> I tried compiling a MPI example program 
> (https://raw.githubusercontent.com/wesleykendall/mpitutorial/gh-pages/tutorials/mpi-hello-world/code/mpi_hello_world.c)
>  with openmpi on -current and it fails linking:
> $ mpicc -v Downloads/mpi_hello_world.c 
> OpenBSD clang version 6.0.0 (tags/RELEASE_600/final) (based on LLVM 6.0.0)
> Target: amd64-unknown-openbsd6.4
> Thread model: posix
> InstalledDir: /usr/bin
>  "/usr/bin/cc" -cc1 -triple amd64-unknown-openbsd6.4 -emit-obj -mrelax-all 
> -disable-free -disable-llvm-verifier -discard-value-names -main-file-name 
> mpi_hello_world.c -mrelocation-model pic -pic-level 1 -pic-is-pie 
> -mthread-model posix -mdisable-fp-elim -relaxed-aliasing -masm-verbose 
> -mconstructor-aliases -munwind-tables -target-cpu x86-64 -dwarf-column-info 
> -debugger-tuning=gdb -v -resource-dir /usr/lib/clang/6.0.0 -I 
> /usr/local/include -fdebug-compilation-dir /home/tom -ferror-limit 19 
> -fmessage-length 224 -femulated-tls -fwrapv -pthread -stack-protector 2 
> -D_RET_PROTECTOR -ret-protector -fobjc-runtime=gnustep 
> -fdiagnostics-show-option -fno-builtin-malloc -fno-builtin-calloc 
> -fno-builtin-realloc -fno-builtin-valloc -fno-builtin-free 
> -fno-builtin-strdup -fno-builtin-strndup -o /tmp/mpi_hello_world-a9e376.o -x 
> c Downloads/mpi_hello_world.c
> clang -cc1 version 6.0.0 based upon LLVM 6.0.0 default target 
> amd64-unknown-openbsd6.4
> #include "..." search starts here:
> #include <...> search starts here:
>  /usr/local/include
>  /usr/lib/clang/6.0.0/include
>  /usr/include
> End of search list.
>  "/usr/bin/ld" -e __start --eh-frame-hdr -Bdynamic -dynamic-linker 
> /usr/libexec/ld.so -o a.out /usr/bin/../lib/crt0.o /usr/bin/../lib/crtbegin.o 
> -L/usr/local/lib -L/usr/bin/../lib -L/usr/lib /tmp/mpi_hello_world-a9e376.o 
> -lmpi -lopen-rte -lopen-pal -E -lutil -lm -lcompiler_rt -lpthread -lc 
> -lcompiler_rt /usr/bin/../lib/crtend.o
> /usr/bin/ld: error: undefined symbol: MPI_Init
> >>> referenced by mpi_hello_world.c
> >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> 
> /usr/bin/ld: error: undefined symbol: MPI_Comm_size
> >>> referenced by mpi_hello_world.c
> >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> 
> /usr/bin/ld: error: undefined symbol: MPI_Comm_rank
> >>> referenced by mpi_hello_world.c
> >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> 
> /usr/bin/ld: error: undefined symbol: MPI_Get_processor_name
> >>> referenced by mpi_hello_world.c
> >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> 
> /usr/bin/ld: error: undefined symbol: MPI_Finalize
> >>> referenced by mpi_hello_world.c
> >>>   /tmp/mpi_hello_world-a9e376.o:(main)
> cc: error: linker command failed with exit code 1 (use -v to see invocation)
> 
> The reason seems to be, that the relevant symbols in libmpi.so.0.1 are local:
> $ nm /usr/local/lib/libmpi.so.0.1  | grep MPI_Init
> 00070330 t MPI_Init
> 000704f0 t MPI_Init_thread
> 000706b0 t MPI_Initialized
> 00070330 T PMPI_Init
> 000704f0 T PMPI_Init_thread
> 000706b0 T PMPI_Initialized
> 
> Unfortunately, I have no idea why this happens.
> 
> Kind regards,
> 
> Thomas

Yes, I also noticed this in June last year [1].  Only the profiling
version of each API function is non-local.  Unfortunately, I was in a
hurry to get something working so I simply moved my development and
testing to another operating system rather than digging into why this
was so.  I might try to look into this later if time permits.

[1] https://marc.info/?l=openbsd-ports=152929789302360=2


Regards,

-- 
Andreas Kusalananda Kähäri,
National Bioinformatics Infrastructure Sweden (NBIS),
Uppsala University, Sweden.