[Bug 277994] lang/sbcl: fails to build after SHUT_RD and friend were changed to enum

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 27 Mar 2024 18:37:43 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277994

            Bug ID: 277994
           Summary: lang/sbcl: fails to build after SHUT_RD and friend
                    were changed to enum
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: krion@FreeBSD.org
          Reporter: dim@FreeBSD.org
          Assignee: krion@FreeBSD.org
             Flags: maintainer-feedback?(krion@FreeBSD.org)

In https://cgit.freebsd.org/src/commit/?id=c3276e02beab8, the SHUT_RD, SHUT_WR
and SHUT_RDWR constants were changed from #defines to enum values.

This breaks lang/sbcl:

gmake[2]: Entering directory
'/wrkdirs/share/dim/ports/lang/sbcl/work/sbcl-2.4.0/contrib/sb-bsd-sockets'
../..//src/runtime/sbcl --noinform --core ../..//output/sbcl.core
--lose-on-corruption --disable-debugger --no-sysinit --no-userinit    --load
../make-contrib.lisp "sb-bsd-sockets"  </dev/null
; Note: Building "sb-bsd-sockets"
Compile-File "module-setup"
Compile-File "defpackage"
Compile-File "generated-constants"
STYLE-WARNING: Couldn't grovel for SHUT_RD (unknown to the C compiler).
STYLE-WARNING: Couldn't grovel for SHUT_WR (unknown to the C compiler).
STYLE-WARNING: Couldn't grovel for SHUT_RDWR (unknown to the C compiler).
Compile-File "util"
...
; file: SYS:CONTRIB;SB-BSD-SOCKETS;SOCKETS.LISP.NEWEST
; in: DEFMETHOD SB-BSD-SOCKETS:SOCKET-SHUTDOWN (SB-BSD-SOCKETS:SOCKET)
;     (ECASE SB-BSD-SOCKETS::DIRECTION
;       (:INPUT SB-BSD-SOCKETS-INTERNAL::SHUT_RD)
;       (:OUTPUT SB-BSD-SOCKETS-INTERNAL::SHUT_WR)
;       (:IO SB-BSD-SOCKETS-INTERNAL::SHUT_RDWR))
; --> COND IF
; ==>
;   (PROGN NIL SB-BSD-SOCKETS-INTERNAL::SHUT_RD)
;
; caught WARNING:
;   undefined variable: SB-BSD-SOCKETS-INTERNAL::SHUT_RD

; --> COND IF IF IF
; ==>
;   (PROGN NIL SB-BSD-SOCKETS-INTERNAL::SHUT_RDWR)
;
; caught WARNING:
;   undefined variable: SB-BSD-SOCKETS-INTERNAL::SHUT_RDWR

; --> COND IF IF
; ==>
;   (PROGN NIL SB-BSD-SOCKETS-INTERNAL::SHUT_WR)
;
; caught WARNING:
;   undefined variable: SB-BSD-SOCKETS-INTERNAL::SHUT_WR
;
; compilation unit finished
;   Undefined variables:
;     SB-BSD-SOCKETS-INTERNAL::SHUT_RD SB-BSD-SOCKETS-INTERNAL::SHUT_RDWR
SB-BSD-SOCKETS-INTERNAL::SHUT_WR
;   caught 3 WARNING conditions
gmake[2]: *** [../asdf-module.mk:41:
../..//obj/sbcl-home/contrib/sb-bsd-sockets.fasl] Error 1

This is because
/wrkdirs/share/dim/ports/lang/sbcl/work/sbcl-2.4.0/obj/from-self/contrib/sb-bsd-sockets/runme.c
checks for the existence of #define'd macros, not enum values:

#ifdef SHUT_RD
    fprintf(out, "(cl:defconstant SHUT_RD %ld)\n", CAST_SIGNED(SHUT_RD));
#else
    fprintf(out, "(sb-int:style-warn \"Couldn't grovel for ~A (unknown to the C
compiler).\" \"SHUT_RD\")\n");
#endif
#ifdef SHUT_WR
    fprintf(out, "(cl:defconstant SHUT_WR %ld)\n", CAST_SIGNED(SHUT_WR));
#else
    fprintf(out, "(sb-int:style-warn \"Couldn't grovel for ~A (unknown to the C
compiler).\" \"SHUT_WR\")\n");
#endif
#ifdef SHUT_RDWR
    fprintf(out, "(cl:defconstant SHUT_RDWR %ld)\n", CAST_SIGNED(SHUT_RDWR));
#else
    fprintf(out, "(sb-int:style-warn \"Couldn't grovel for ~A (unknown to the C
compiler).\" \"SHUT_RDWR\")\n");
#endif

Since this runme.c file seems to be generated from lisp, I have no good idea
how to fix it.

-- 
You are receiving this mail because:
You are the assignee for the bug.