On Tue, Jun 25 2019, Martin Reindl <mar...@catai.org> wrote:
> Am 22.06.2019 um 20:09 schrieb Jeremie Courreges-Anglas:
>> On Thu, Jun 06 2019, Martin Reindl <mar...@catai.org> wrote:
>>> On Sat, Jun 01, 2019 at 08:03:17PM +0100, Stuart Henderson wrote:
>>>> That needs fixing then..
>>>> --
>>>> Sent from a phone, apologies for poor formatting.
>>>>
>>>> On 1 June 2019 17:15:19 Jeremie Courreges-Anglas <j...@wxcvbn.org> wrote:
>>>>
>>>>> On Sat, Jun 01 2019, Stuart Henderson <s...@spacehopper.org> wrote:
>>>>>> Please don't do the huge bump for SHARED_LIBS, just a standard major
>>>>>> bump for the existing libraries and start the new ones at 0.0
>>>>>
>>>>> IIRC the problem is that SHARED_LIBS isn't respected.
>>>>>
>>>
>>> Here is a polished version of the diff which should pass strict inspection
>>> by the ports@ team:
>>>
>>> - respects SHARED_LIBS by using base libtool, m4 from devel/libtool and 
>>> -ltdl
>>> - c++ interface is deprecated and not enabled in contrast to 1.0.4
>>
>> Maybe this should use COMPILER_LANGS = c, then.  make
>> port-lib-depends-check complains about 'Extra:  estdc++.19' on sparc64.
>>
>>> - now uses SEPERATE-BUILD
>>> - passes make test on macppc, arm64 and amd64 and schedules jobs on virtual
>>>    amd64 mini-mpi-cluster
>>> - now uses egfortran from ports-gcc instead of f77
>>
>>> - tidy up Makefile a bit so things look more in order for me
>>
>> Well, that's a bit of churn and it still doesn't match the canonical
>> order recommended by Makefile.template.  SHARED_LIBS and MASTER_SITES
>> look completely out of place.
>>
>> Except for this point, this update looks good.  make package fails on
>> sparc64 because lib/openmpi/mca_patcher_overwrite.* are arch-specific.
>> Here's an updated diff that uses the order of Makefile.template and
>> @comments out the arch-specific files.
>>
>> Additional tweaks:
>> - use https HOMEPAGE/MASTER_SITES
>> - PERMIT_PACKAGE_CDROM -> PERMIT_PACKAGE
>> - strip "base-gcc" from COMPILER, it's not needed/useful
>> - use V=1 in MAKE_FLAGS, looks like --disable-silent-rules isn't passed
>> down to all configure scripts.
>>
>> The remaining patch is still a bit broken, comparisons like
>>
>>    "if (fsbuf.f_fstypename == MOUNT_NFS) {"
>>
>> can't yield true since MOUNT_NFS is string literal "nfs" and
>> fsbuf.f_fstypename is a char array in a struct.  I'm not sure how much
>> we care, though, at least it builds...
>>
>> What do you think?  Yay, nay?  :)
>
> Well, yes, this is an improvement, thank you for the additional work.
> Things like the NFS problem remain (but openmpi can just run with ssh
> keys).

I have committed this diff, together with a few additional whitespace
fixes noticed by portcheck(1).  Thanks for this long-needed update!

Note that what has been committed shouldn't have a problem with NFS: the
code in ad_fstype.c already properly checks for f_fstypename and uses
it.  Our patch is still bogus though, please find an additional diff
below.  ok?

> And there is a pthread_mutexattr_setpshared() (which we don't have)
> problem deep down in pmix which needs to be investigated at some point.

Is that a problem at runtime?

> What is the status with
> pthread_mutexattr_setpshared()/pthread_mutexattr_getpshared these days?

While we do implement similar pthread_*attr_[gs]etpshared() APIs, they
aren't very useful since we only implement PTHREAD_PROCESS_PRIVATE.
I guess adding pthread_mutexattr_[gs]etpshared would be trivial, even if
not very useful.



Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/openmpi/Makefile,v
retrieving revision 1.27
diff -u -p -r1.27 Makefile
--- Makefile    27 Jun 2019 13:52:00 -0000      1.27
+++ Makefile    27 Jun 2019 14:03:11 -0000
@@ -2,8 +2,9 @@
 
 COMMENT =              open source MPI-3.1 implementation
 
-V=                     4.0.1
+V =                    4.0.1
 DISTNAME =             openmpi-$V
+REVISION =             0
 
 SHARED_LIBS +=  mca_common_dstore         0.0 # 1.0
 SHARED_LIBS +=  mca_common_monitoring     0.0 # 60.0
Index: patches/patch-ompi_mca_io_romio321_romio_adio_common_ad_fstype_c
===================================================================
RCS file: 
/cvs/ports/devel/openmpi/patches/patch-ompi_mca_io_romio321_romio_adio_common_ad_fstype_c,v
retrieving revision 1.1
diff -u -p -r1.1 patch-ompi_mca_io_romio321_romio_adio_common_ad_fstype_c
--- patches/patch-ompi_mca_io_romio321_romio_adio_common_ad_fstype_c    27 Jun 
2019 13:52:00 -0000      1.1
+++ patches/patch-ompi_mca_io_romio321_romio_adio_common_ad_fstype_c    27 Jun 
2019 14:03:11 -0000
@@ -1,90 +1,33 @@
 $OpenBSD: patch-ompi_mca_io_romio321_romio_adio_common_ad_fstype_c,v 1.1 
2019/06/27 13:52:00 jca Exp $
 
+Our struct statfs doesn't have an f_type member.
+
 Index: ompi/mca/io/romio321/romio/adio/common/ad_fstype.c
 --- ompi/mca/io/romio321/romio/adio/common/ad_fstype.c.orig
 +++ ompi/mca/io/romio321/romio/adio/common/ad_fstype.c
-@@ -38,7 +38,7 @@
-  *
-  * There are three more "general" mechanisms that we use for detecting
-  * file system type:
-- * - struct statfs's f_type field
-+ * - struct statfs's f_fstypename field
-  * - struct statvfs's f_basetype field
-  * - struct stat's st_fstype field
-  *
-@@ -347,15 +347,15 @@ static void ADIO_FileSysType_fncall(const char *filena
+@@ -338,13 +338,15 @@ static void ADIO_FileSysType_fncall(const char *filena
+     /* --END ERROR HANDLING-- */
  
- 
- #ifdef ROMIO_GPFS
--    if (fsbuf.f_type == GPFS_SUPER_MAGIC) {
-+    if (fsbuf.f_fstypename == GPFS_SUPER_MAGIC) {
-       *fstype = ADIO_GPFS;
-       return;
-     }
- #endif
- 
--    /* FPRINTF(stderr, "%d\n", fsbuf.f_type);*/
-+    /* FPRINTF(stderr, "%d\n", fsbuf.f_fstypename);*/
- # ifdef NFS_SUPER_MAGIC
--    if (fsbuf.f_type == NFS_SUPER_MAGIC) {
-+    if (fsbuf.f_fstypename == NFS_SUPER_MAGIC) {
-       *fstype = ADIO_NFS;
-       return;
-     }
-@@ -365,49 +365,49 @@ static void ADIO_FileSysType_fncall(const char *filena
- # ifndef LL_SUPER_MAGIC
- #  define LL_SUPER_MAGIC 0x0BD00BD0
- # endif
--    if (fsbuf.f_type == LL_SUPER_MAGIC) {
-+    if (fsbuf.f_fstypename == LL_SUPER_MAGIC) {
-       *fstype = ADIO_LUSTRE;
-       return;
-     }
- #endif
- 
- # ifdef PAN_KERNEL_FS_CLIENT_SUPER_MAGIC
--    if (fsbuf.f_type == PAN_KERNEL_FS_CLIENT_SUPER_MAGIC) {
-+    if (fsbuf.f_fstypename == PAN_KERNEL_FS_CLIENT_SUPER_MAGIC) {
-       *fstype = ADIO_PANFS;
-       return;
-     }
- # endif
- 
- # ifdef MOUNT_NFS
--    if (fsbuf.f_type == MOUNT_NFS) {
-+    if (fsbuf.f_fstypename == MOUNT_NFS) {
+ # ifdef ROMIO_HAVE_STRUCT_STATFS_WITH_F_FSTYPENAME
+-    /* uncommon: maybe only on Darwin ? */
++    /* BSD, Darwin... */
+     if ( !strncmp("nfs",fsbuf.f_fstypename,3) ) {
        *fstype = ADIO_NFS;
        return;
      }
  # endif
  
- # ifdef MOUNT_PFS
--    if (fsbuf.f_type == MOUNT_PFS) {
-+    if (fsbuf.f_fstypename == MOUNT_PFS) {
-       *fstype = ADIO_PFS;
-       return;
-     }
- # endif
- 
- # ifdef PVFS_SUPER_MAGIC
--    if (fsbuf.f_type == PVFS_SUPER_MAGIC) {
-+    if (fsbuf.f_fstypename == PVFS_SUPER_MAGIC) {
-       *fstype = ADIO_PVFS;
-       return;
-     }
- # endif
++/* TODO: configure.ac check for f_type */
++#ifdef ROMIO_HAVE_STRUCT_STATFS_WITH_F_TYPE
  
- # ifdef PVFS2_SUPER_MAGIC
--    if (fsbuf.f_type == PVFS2_SUPER_MAGIC) {
-+    if (fsbuf.f_fstypename == PVFS2_SUPER_MAGIC) {
-       *fstype = ADIO_PVFS2;
-       return;
+ #ifdef ROMIO_GPFS
+     if (fsbuf.f_type == GPFS_SUPER_MAGIC) {
+@@ -412,6 +414,8 @@ static void ADIO_FileSysType_fncall(const char *filena
+           return;
      }
  # endif
++
++#endif /* ROMIO_HAVE_STRUCT_STATFS_WITH_F_TYPE */
  
- # ifdef XFS_SUPER_MAGIC
--    if (fsbuf.f_type == XFS_SUPER_MAGIC) {
-+    if (fsbuf.f_fstypename == XFS_SUPER_MAGIC) {
-           *fstype = ADIO_XFS;
-           return;
-     }
+ # ifdef ROMIO_UFS
+     /* if UFS support is enabled, default to that */


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

Reply via email to