Opened 2 months ago

Last modified 6 hours ago

#54993 reopened defect

Processing of port openmpi-gcc7 failed

Reported by: ogourgue (Olivier Gourgue) Owned by: seanfarley (Sean Farley)
Priority: Normal Milestone:
Component: ports Version: 2.4.1
Keywords: highsierra Cc: aivazis (Michael Aivazis), astroboylrx (Rixin Li), rieder (Steven Rieder), majoc-at-astro (majoc-at-astro), p-bro, MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Port: openmpi-gcc7

Description

I reinstall macports for high sierra, and I'm reinstalling ports one by one. It works fine for most of them, but not for openmpi. I tried with openmpi-gcc7 and openmpi-gcc6, and the same issue arises.

Attachments (2)

main.log (297.5 KB) - added by ogourgue (Olivier Gourgue) 2 months ago.
log file
syslog.h (9.1 KB) - added by aivazis (Michael Aivazis) 7 weeks ago.
corrected /usr/include/sys/syslog.h

Download all attachments as: .zip

Change History (21)

Changed 2 months ago by ogourgue (Olivier Gourgue)

log file

comment:1 Changed 2 months ago by mf2k (Frank Schima)

  • Owner set to seanfarley
  • Status changed from new to assigned

In the future, please Cc the port maintainers (port info --maintainers openmpi-gcc7), if any.

comment:2 Changed 2 months ago by aivazis (Michael Aivazis)

the problem is caused by an incorrectly configured access to syslog.

syslog.h fails to compile during configuration, leaving HAVE_SYSLOG set to 1, without HAVE_SYSLOG_H, which causes LOG_PRI and its sisters to be undefined.

the following fails to compile with gcc(6|7) on high sierra:

// include the problem
#include <syslog.h>

// entry point
int main() {
    // all done
    return 0;
}

comment:3 Changed 2 months ago by aivazis (Michael Aivazis)

Looking further, it looks like an APPLE problem: the decoration of the syslog function in </usr/include/sys/syslog.h> places the attribute decorations BEFORE the asm specification, which gcc does not support; see

https://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html

comment:4 Changed 2 months ago by aivazis (Michael Aivazis)

  • Cc aivazis added

comment:5 Changed 2 months ago by aivazis (Michael Aivazis)

Further verified that after repairing the syslog() declaration in /usr/include/sys/syslog.def, the port compiles and installs correctly. Fixing this will have to wait for an update to the command line compiler tools from APPLE. Submitted bug report 34872007

comment:6 Changed 2 months ago by astroboylrx (Rixin Li)

  • Cc astroboylrx added

comment:7 Changed 8 weeks ago by rieder (Steven Rieder)

  • Cc rieder added

comment:8 Changed 7 weeks ago by tdouilletgrellier

I am having the same problem. Is is possible to explain a bit more how to "repair the syslog() declaration" so I can make it work while waiting for Apple to update the command line compiler tools ? Thanks.

Changed 7 weeks ago by aivazis (Michael Aivazis)

corrected /usr/include/sys/syslog.h

comment:9 Changed 7 weeks ago by aivazis (Michael Aivazis)

I have attached the repaired “/usr/include/sys/syslog.h”

The relevant section is the declaration of void syslog(…) near the bottom, where the decorations that follow the function signature appear in the corrected order. You want to diff it with yours to verify that you have identified the correct portion of the file.

“Repairing” is somewhat tricky: the /usr filesystem is mounted read-only and cannot be modified while the machine is in multi-user mode. You have to reboot, and hold command-r to enter rescue mode, open a terminal, and navigate to /Volumes/xxx/usr/include/sys where this file lives. Don’t confuse it with /usr/include/syslog.h: this is /usr/include/sys/syslog.h. What I did is edit the file by hand; it seems to be the best option. Save and reboot normally. You should be good to go.

comment:10 Changed 7 weeks ago by tdouilletgrellier

It worked perfectly (and it fixes also the same issue for the port openmpi-gcc5).

Thank you again.

comment:11 Changed 6 weeks ago by majoc-at-astro (majoc-at-astro)

  • Cc majoc-at-astro added

comment:12 Changed 4 weeks ago by p-bro

  • Cc p-bro added

comment:13 Changed 3 weeks ago by SigneRiemer (Signe Riemer-Sørensen)

I cannot navigate to /Volumes/xxx/usr/include/sys in rescue mode. No problem in normal mode, but then of course syslog.h is read-only. In rescue mode the only option under /Volumes/ is OS X Base System for which the usr directory doesn't have any include or sys subdirectories... Any suggestions?

comment:14 Changed 2 weeks ago by aivazis (Michael Aivazis)

on my system and in rescue mode, /Volumes has two folders: "OS X Base System" and "osx", the latter being what I have renamed the volume with the running version of the system. could you please run "ls -la" in /Volumes when in rescue mode and show me what you get?

comment:15 Changed 14 hours ago by rieder (Steven Rieder)

As of the most recent update (macOS 10.13.2 and corresponding Xcode / Command Line Tools 9.2 updates), this remains unfixed... Any update from Apple?

comment:16 Changed 12 hours ago by seanfarley (Sean Farley)

  • Resolution set to fixed
  • Status changed from assigned to closed

Damn, I just verified this. Is there a radar for this yet?

comment:17 Changed 12 hours ago by rieder (Steven Rieder)

How is this resolved as 'fixed'? It is definitely still broken on my system...

comment:18 Changed 12 hours ago by seanfarley (Sean Farley)

  • Resolution fixed deleted
  • Status changed from closed to reopened

Oops! I accidentally changed the status when trying to reply.

comment:19 Changed 6 hours ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

  • Cc MarcusCalhoun-Lopez added
Note: See TracTickets for help on using tickets.