On Tue, Jun 25 2019, Martin Reindl <[email protected]> wrote:
> Am 22.06.2019 um 20:09 schrieb Jeremie Courreges-Anglas:
>> On Thu, Jun 06 2019, Martin Reindl <[email protected]> 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 <[email protected]> wrote:
>>>>
>>>>> On Sat, Jun 01 2019, Stuart Henderson <[email protected]> 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