Opened 4 years ago

Closed 4 years ago

Last modified 4 years ago

#49046 closed defect (fixed)

rcs @5.9.4: error: '_Noreturn' keyword must precede function declarator

Reported by: inyeollee Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: ports Version: 2.3.4
Keywords: elcapitan haspatch Cc: avysk (Alexey Vyskubov), steele@…, ric@…, kurthindenburg (Kurt Hindenburg)
Port: rcs

Description

rcs-5.9.4 build failed, log attached.

Attachments (2)

main.log (144.3 KB) - added by inyeollee 4 years ago.
rcs-5.9.4._Noreturn.patch (2.4 KB) - added by inyeollee 4 years ago.
Patch against rcs-5.9.4 to fix _Noreturn issue.

Download all attachments as: .zip

Change History (11)

Changed 4 years ago by inyeollee

Attachment: main.log added

comment:1 Changed 4 years ago by ryandesign (Ryan Schmidt)

Keywords: elcapitan added
Port: rcs added; rcs-5.9.4 removed
Summary: rcs-5.9.4 build failure, Macport 2.3.4, El Capitan.rcs @5.9.4: error: '_Noreturn' keyword must precede function declarator

comment:2 Changed 4 years ago by avysk (Alexey Vyskubov)

Cc: tascafoo@… added

Cc Me!

comment:3 Changed 4 years ago by steele@…

Cc: steele@… added

Cc Me!

comment:4 Changed 4 years ago by pcollinson

Here's a workaround, it's probably against all the rules but here goes. Since Apple in its infinite wisdom has removed rcs from Xcode, I need to find another way of getting it now for 10.11.

Once you've found that things don't work, find the source of rcs.

On my system that's

/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_rcs/rcs/work/rcs-5.9.4/src

Edit (and you'll need to sudo) base.h

Find the line:

#define exiting  _Noreturn

and replace it by

#define exiting  ;

Then

sudo port install rcs

will work. It builds the system and installs it.

The _Noreturn keyword is a C11 artefact and the build can happen without it (it seems). Caveat: I really know zilch about C11. I've done some rough testing and rcs appears to work.

Last edited 4 years ago by ryandesign (Ryan Schmidt) (previous) (diff)

comment:5 Changed 4 years ago by davidfavor (David Favor)

The above fix does produce a clean build + what does appear to be a functional RCS.

This is a life saver, as RCS is such a simple way to quickly version control any random file.

Seems like this fix is so simple it could make make it into a patch.

Changed 4 years ago by inyeollee

Attachment: rcs-5.9.4._Noreturn.patch added

Patch against rcs-5.9.4 to fix _Noreturn issue.

comment:6 Changed 4 years ago by inyeollee

RCS source has syntax errors regarding _Noreturn keyward usage, now CLang is catching them. The fix is to rearrange _Noreturn keyword (exiting macro), from:

    extern void Oerror (void) exiting;

to:

    exiting extern void Oerror (void);

There are about 10 instances of this usage in base.h, b-fb.h, and b-complain.h. Patch uploaded - rcs.5.9.4_Noreturn.patch.

Last edited 4 years ago by ryandesign (Ryan Schmidt) (previous) (diff)

comment:7 Changed 4 years ago by ryandesign (Ryan Schmidt)

Cc: ric@… added
Keywords: haspatch added

Has duplicate #49304.

comment:8 Changed 4 years ago by kurthindenburg (Kurt Hindenburg)

Cc: khindenburg@… added

Cc Me!

comment:9 Changed 4 years ago by kurthindenburg (Kurt Hindenburg)

Resolution: fixed
Status: newclosed

done r141984

Note: See TracTickets for help on using tickets.