NetBSD Problem Report #59967

From www@netbsd.org  Sat Feb  7 01:09:52 2026
Return-Path: <www@netbsd.org>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (2048 bits)
	 client-signature RSA-PSS (2048 bits))
	(Client CN "mail.netbsd.org", Issuer "R13" (verified OK))
	by mollari.NetBSD.org (Postfix) with ESMTPS id AB8CB1A923D
	for <gnats-bugs@gnats.NetBSD.org>; Sat,  7 Feb 2026 01:09:52 +0000 (UTC)
Message-Id: <20260207010951.705411A923E@mollari.NetBSD.org>
Date: Sat,  7 Feb 2026 01:09:51 +0000 (UTC)
From: campbell+netbsd@mumble.net
Reply-To: campbell+netbsd@mumble.net
To: gnats-bugs@NetBSD.org
Subject: heimdal: broken .et/.asn1 rules
X-Send-Pr-Version: www-1.0
X-From4GNATS: "campbell+netbsd@mumble.net via gnats" <gnats-admin@NetBSD.org>

>Number:         59967
>Category:       toolchain
>Synopsis:       heimdal: broken .et/.asn1 rules
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    toolchain-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Feb 07 01:10:00 +0000 2026
>Last-Modified:  Sat Feb 07 17:35:01 +0000 2026
>Originator:     Taylor R Campbell
>Release:        current, 11, 10, 9, ...
>Organization:
The NetKRB5 Machination, Inc.
>Environment:
>Description:

	1. The procedure to generate .c and .h files from .et (error
	   table) files is to run compile_et to generate both at the
	   same time.  The rule for this is:

${et_src:.et=.c} ${et_src:.et=.h}: ${et_src} ${TOOL_COMPILE_ET}
	${_MKTARGET_CREATE}
	${TOOL_COMPILE_ET} ${.ALLSRC:[1]}

	   This is equivalent to two rules for the .c and the .h files
	   independently; nothing prevents a parallel make(1) from
	   trying to run two compile_et instances in parallel jobs,
	   potentially clobbering each other's output.

	2. The procedure to generate, e.g., krb5_asn1.h from krb5.asn1
	   goes through several stages, the first of which is to
	   simultaneously generate

		krb5.ts
		krb5_asn1-priv.hx
		krb5.hx
		krb5_asn1_files

	   from krb5.asn1 and krb5.opt by this rule:

${src:.asn1=.ts}: ${src} ${src:.asn1=.opt} ${TOOL_ASN1_COMPILE}
	${_MKTARGET_CREATE}
	@touch $@
	${TOOL_ASN1_COMPILE}			\
		${ASN1_OPTS.${src}}		\
		--option-file=${.ALLSRC:[2]}	\
		${.ALLSRC:[1]} ${src:.asn1=_asn1}

	   The next stage is to generate krb5_asn1.h and
	   krb5_asn1-priv.h from krb5_asn1.hx and krb5_asn1-priv.hx,
	   but the rules to do these don't mention the .hx file, so if
	   it gets deleted then the build just fails:

${src:.asn1=_asn1.h}: ${src:.asn1=.ts}
	${_MKTARGET_CREATE}
	@${TOOL_SED} -E 						\
	    -e 's,#include <(.*)_asn1\.h>,#include <krb5/\1_asn1.h>,'	\
	    2> /dev/null < ${src:.asn1=_asn1.hx} > ${src:.asn1=_asn1.h}

${src:.asn1=_asn1-priv.h}: ${src:.asn1=.ts}
	${_MKTARGET_CREATE}
	@cmp -s ${src:.asn1=_asn1-priv.hx} ${src:.asn1=_asn1-priv.h}	\
	    2> /dev/null ||						\
	    cp ${src:.asn1=_asn1-priv.hx} ${src:.asn1=_asn1-priv.h}

	3. Same deal as (1) for slc .in -> .c/.h files:

${slc_src:.in=.c} ${slc_src:.in=.h}: ${slc_src}
	${_MKTARGET_CREATE}
	${TOOL_SLC} ${.ALLSRC}

>How-To-Repeat:

	1. run a highly parallel build, probably
	2. delete the .hx and .h files and rebuild
	3. run a highly parallel build, probably

>Fix:

	1. .ORDER: ${et_src:.et=.c} ${et_src:.et=.h}
	2. add intermediate .hx targets
	3. .ORDER: ${slc_src:.et=.c} ${slc_src:.et=.h}

>Audit-Trail:
From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/59967 CVS commit: src/crypto/external/bsd/heimdal
Date: Sat, 7 Feb 2026 03:12:04 +0000

 Module Name:	src
 Committed By:	riastradh
 Date:		Sat Feb  7 03:12:04 UTC 2026

 Modified Files:
 	src/crypto/external/bsd/heimdal: Makefile.rules.inc

 Log Message:
 heimdal: Fix .asn1 and .et rules, again.

 PR toolchain/59967: heimdal: broken .et/.asn1 rules


 To generate a diff of this commit:
 cvs rdiff -u -r1.11 -r1.12 src/crypto/external/bsd/heimdal/Makefile.rules.inc

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Robert Elz" <kre@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/59967 CVS commit: src/crypto/external/bsd/heimdal
Date: Sat, 7 Feb 2026 08:53:28 +0000

 Module Name:	src
 Committed By:	kre
 Date:		Sat Feb  7 08:53:28 UTC 2026

 Modified Files:
 	src/crypto/external/bsd/heimdal: Makefile.rules.inc

 Log Message:
 PR toolchain/59967: Revert previous, it breaks the builds, all 75 of them.


 To generate a diff of this commit:
 cvs rdiff -u -r1.12 -r1.13 src/crypto/external/bsd/heimdal/Makefile.rules.inc

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Taylor R Campbell" <riastradh@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/59967 CVS commit: src/crypto/external/bsd/heimdal
Date: Sat, 7 Feb 2026 17:34:25 +0000

 Module Name:	src
 Committed By:	riastradh
 Date:		Sat Feb  7 17:34:25 UTC 2026

 Modified Files:
 	src/crypto/external/bsd/heimdal: Makefile.rules.inc

 Log Message:
 heimdal: Fix .asn1 and .et rules, again.

 And write .in as needed, not .et, oops.

 PR toolchain/59967: heimdal: broken .et/.asn1 rules


 To generate a diff of this commit:
 cvs rdiff -u -r1.13 -r1.14 src/crypto/external/bsd/heimdal/Makefile.rules.inc

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.47 2022/09/11 19:34:41 kim Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2026 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.