From owner-freebsd-bugs@FreeBSD.ORG Sat May 25 18:20:02 2013 Return-Path: Delivered-To: freebsd-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 28780998 for ; Sat, 25 May 2013 18:20:02 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id 0F426E1C for ; Sat, 25 May 2013 18:20:02 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id r4PIK1RR023179 for ; Sat, 25 May 2013 18:20:01 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id r4PIK1HB023178; Sat, 25 May 2013 18:20:01 GMT (envelope-from gnats) Resent-Date: Sat, 25 May 2013 18:20:01 GMT Resent-Message-Id: <201305251820.r4PIK1HB023178@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Garrett Cooper Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 4A430782 for ; Sat, 25 May 2013 18:12:15 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from oldred.FreeBSD.org (oldred.freebsd.org [8.8.178.121]) by mx1.freebsd.org (Postfix) with ESMTP id 3C433DDA for ; Sat, 25 May 2013 18:12:15 +0000 (UTC) Received: from oldred.FreeBSD.org ([127.0.1.6]) by oldred.FreeBSD.org (8.14.5/8.14.5) with ESMTP id r4PICEJW010261 for ; Sat, 25 May 2013 18:12:14 GMT (envelope-from nobody@oldred.FreeBSD.org) Received: (from nobody@localhost) by oldred.FreeBSD.org (8.14.5/8.14.5/Submit) id r4PICEci010254; Sat, 25 May 2013 18:12:14 GMT (envelope-from nobody) Message-Id: <201305251812.r4PICEci010254@oldred.FreeBSD.org> Date: Sat, 25 May 2013 18:12:14 GMT From: Garrett Cooper To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Subject: conf/178978: Race in make release when make system/bootonly target with -j > 1 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 May 2013 18:20:02 -0000 >Number: 178978 >Category: conf >Synopsis: Race in make release when make system/bootonly target with -j > 1 >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sat May 25 18:20:01 UTC 2013 >Closed-Date: >Last-Modified: >Originator: Garrett Cooper >Release: 10-CURRENT >Organization: EMC Isilon >Environment: FreeBSD fuji-current.local 10.0-CURRENT FreeBSD 10.0-CURRENT #1 r+4f99885-dirty: Thu May 16 15:52:49 PDT 2013 root@fuji-current.local:/usr/obj/usr/src/sys/FUJI-NOCOMPAT i386 >Description: make distribution can fail with -j > 1 if installworld/make hierarchy hasn't completed because multiple targets are being executed in parallel with -j > 1. The error I ran into was the following: install: target directory `/rel//etc' does not exist usage: install [-bCcpSsUv] [-f flags] [-g group] [-m mode] [-o owner] [-M log] [-D dest] [-h hash] [-T tags] [-B suffix] [-l linkflags] [-N dbdir] file1 file2 install [-bCcpSsUv] [-f flags] [-g group] [-m mode] [-o owner] [-M log] [-D dest] [-h hash] [-T tags] [-B suffix] [-l linkflags] [-N dbdir] file1 ... fileN directory install -dU [-vU] [-g group] [-m mode] [-N dbdir] [-o owner] [-M log] [-D dest] [-h hash] [-T tags] directory ... cap_mkdb: /rel//etc/login.conf.db: No such file or directory install: target directory `/rel//etc' does not exist usage: install [-bCcpSsUv] [-f flags] [-g group] [-m mode] [-o owner] [-M log] [-D dest] [-h hash] [-T tags] [-B suffix] [-l linkflags] [-N dbdir] file1 file2 install [-bCcpSsUv] [-f flags] [-g group] [-m mode] [-o owner] [-M log] [-D dest] [-h hash] [-T tags] [-B suffix] [-l linkflags] [-N dbdir] file1 ... fileN directory install -dU [-vU] [-g group] [-m mode] [-N dbdir] [-o owner] [-M log] [-D dest] [-h hash] [-T tags] directory ... install: target directory `/rel//etc' does not exist usage: install [-bCcpSsUv] [-f flags] [-g group] [-m mode] [-o owner] [-M log] [-D dest] [-h hash] [-T tags] [-B suffix] [-l linkflags] [-N dbdir] file1 file2 install [-bCcpSsUv] [-f flags] [-g group] [-m mode] [-o owner] [-M log] [-D dest] [-h hash] [-T tags] [-B suffix] [-l linkflags] [-N dbdir] file1 ... fileN directory install -dU [-vU] [-g group] [-m mode] [-N dbdir] [-o owner] [-M log] [-D dest] [-h hash] [-T tags] directory ... *** [distribution] Error code 64 make: stopped in /rel/usr/src/etc 1 error make: stopped in /rel/usr/src/etc *** [distribution] Error code 2 make: stopped in /rel/usr/src 1 error make: stopped in /rel/usr/src *** [distribution] Error code 2 make: stopped in /rel/usr/src --- installworld --- >How-To-Repeat: cd /usr/src/release; env MAKE_FLAGS=-j16 sh generate-release.sh head /rel/ >Fix: Patch attached with submission follows: >From c001d588658a8cd6327afbdf52b7bdc982992292 Mon Sep 17 00:00:00 2001 From: Garrett Cooper Date: Sat, 25 May 2013 11:05:21 -0700 Subject: [PATCH] Fix a race condition between make distribution and installworld installworld must finish before distribution can complete. Signed-off-by: Garrett Cooper --- release/Makefile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/release/Makefile b/release/Makefile index 975f70e..6932166 100644 --- a/release/Makefile +++ b/release/Makefile @@ -138,8 +138,10 @@ tests.txz: system: packagesystem # Install system mkdir -p release - cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \ +.for t in installkernel installworld distribution + cd ${WORLDDIR} && ${IMAKE} $t \ DESTDIR=${.OBJDIR}/release WITHOUT_RESCUE=1 WITHOUT_KERNEL_SYMBOLS=1 +.endfor # Copy distfiles mkdir -p release/usr/freebsd-dist cp *.txz MANIFEST release/usr/freebsd-dist @@ -157,7 +159,8 @@ system: packagesystem bootonly: packagesystem # Install system mkdir -p bootonly - cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \ +.for t in installkernel installworld distribution + cd ${WORLDDIR} && ${IMAKE} $t \ DESTDIR=${.OBJDIR}/bootonly WITHOUT_AMD=1 WITHOUT_AT=1 \ WITHOUT_BIND_DNSSEC=1 WITHOUT_BIND_ETC=1 WITHOUT_BIND_MTREE=1 \ WITHOUT_BIND_NAMED=1 WITHOUT_GAMES=1 WITHOUT_GROFF=1 \ @@ -165,6 +168,7 @@ bootonly: packagesystem WITHOUT_NCP=1 WITHOUT_TOOLCHAIN=1 WITHOUT_PROFILE=1 \ WITHOUT_INSTALLIB=1 WITHOUT_RESCUE=1 WITHOUT_DICT=1 \ WITHOUT_KERNEL_SYMBOLS=1 +.endfor # Copy manifest only (no distfiles) to get checksums mkdir -p bootonly/usr/freebsd-dist cp MANIFEST bootonly/usr/freebsd-dist -- 1.8.2.3 >Release-Note: >Audit-Trail: >Unformatted: