Date: Sat, 25 May 2013 18:12:14 GMT From: Garrett Cooper <yaneurabeya@gmail.com> To: freebsd-gnats-submit@FreeBSD.org Subject: conf/178978: Race in make release when make system/bootonly target with -j > 1 Message-ID: <201305251812.r4PICEci010254@oldred.FreeBSD.org> Resent-Message-ID: <201305251820.r4PIK1HB023178@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>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 <yanegomi@gmail.com> 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 <yanegomi@gmail.com> --- 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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201305251812.r4PICEci010254>