Last Comment Bug 776523 - Builds are oranging out on make check with "TEST-UNEXPECTED-FAIL | check-sync-dirs.py | build file copies are not in sync"
: Builds are oranging out on make check with "TEST-UNEXPECTED-FAIL | check-sync...
Status: RESOLVED FIXED
:
Product: Thunderbird
Classification: Client Software
Component: Build Config (show other bugs)
: Trunk
: x86 All
: -- normal (vote)
: Thunderbird 17.0
Assigned To: Nobody; OK to take it and work on it
:
:
Mentors:
Depends on:
Blocks: 775539
  Show dependency treegraph
 
Reported: 2012-07-23 06:58 PDT by Mike Conley (:mconley)
Modified: 2013-03-13 07:09 PDT (History)
3 users (show)
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---


Attachments

Description Mike Conley (:mconley) 2012-07-23 06:58:55 PDT
Showed up over the weekend,

make -C testing/mozbase check
make[2]: Entering directory `/builds/slave/tb-c-cen-lnx/build/objdir-tb/mozilla/testing/mozbase'
make[2]: Nothing to be done for `check'.
make[2]: Leaving directory `/builds/slave/tb-c-cen-lnx/build/objdir-tb/mozilla/testing/mozbase'
make[1]: Leaving directory `/builds/slave/tb-c-cen-lnx/build/objdir-tb/mozilla'
TEST-UNEXPECTED-FAIL | check-sync-dirs.py | build file copies are not in sync

From https://tbpl.mozilla.org/php/getParsedLog.php?id=13755026&tree=Thunderbird-Trunk&full=1
Comment 1 Joshua Cranmer [:jcranmer] 2012-07-23 07:00:58 PDT
Looks like we need to add ac_add_options --enable-ccache to that file
Comment 2 Joshua Cranmer [:jcranmer] 2012-07-23 09:31:37 PDT
https://hg.mozilla.org/comm-central/rev/3e83ef9a5b9b
Comment 3 ISHIKAWA, Chiaki 2013-03-13 07:09:11 PDT
Hi,

I noticed something very similar on TB Tryserver yesterday (12 March).
I have no idea how to fix it, but am reporting the problem for the people in the know. Maybe the files need updating on the TB tryserver (?)
[This bug entry fits the bill very well, but should I
file a new bug entry?


Quoting from the log:
https://tbpl.mozilla.org/php/getParsedLog.php?id=20597550&tree=Thunderbird-Try

make[1]: Leaving directory `/builds/slave/tb-try-c-cen-lx-00000000000000/build/objdir-tb/mozilla'
TEST-PASS | check-sync-dirs.py | /builds/slave/tb-try-c-cen-lx-00000000000000/build/build <= /builds/slave/tb-try-c-cen-lx-00000000000000/build/mozilla/build
TEST-UNEXPECTED-FAIL | check-sync-dirs.py | build file copies are not in sync
TEST-INFO | check-sync-dirs.py | file(s) found in:               /builds/slave/tb-try-c-cen-lx-00000000000000/build/config/makefiles
TEST-INFO | check-sync-dirs.py | differ from their originals in: /builds/slave/tb-try-c-cen-lx-00000000000000/build/mozilla/config/makefiles
TEST-INFO | check-sync-dirs.py | differing file:                 ./autotargets.mk
In general, the files in '/builds/slave/tb-try-c-cen-
lx-00000000000000/build/config/makefiles' should always be exact copies of
originals in '/builds/slave/tb-try-c-cen-
lx-00000000000000/build/mozilla/config/makefiles'.  A change made to one
should also be made to the other.  See 'check-sync-dirs.py' for more
details.
make: *** [check-sync-dirs] Error 1
make: Target `check' not remade because of errors.
DEBUG: shell: unmounting all filesystems
 [ ...]

The following shows three autotargets.mk files. If they need to be in sync,
I am afraid that one of them is not.
http://mxr.mozilla.org/comm-central/find?text=&string=autotargets.mk

The local copy of comm-central which I checked out a couple of days ago
show the following diff between the problematic files:

--- config/makefiles/autotargets.mk	2013-03-12 00:00:26.603047916 +0900
+++ mozilla/config/makefiles/autotargets.mk	2013-03-12 00:10:24.071056608 +0900
@@ -43,27 +43,18 @@
     $(subst <--[**]-->,$(space),\
 	$(call _slashSqueeze,\
     $(subst $(space),<--[**]-->,$(1))\
   )))
 
 # Extract directory path from a dependency file.
 mkdir_stem =$(foreach val,$(getargv),$(subst /.mkdir.done,$(NULL),$(val)))
 
-# Function can be called by other functions to expand un-expanded make vars.
-# := functionality in call(able) function form
-expand = $(eval func-expand-$(1) := $($(1)))$(func-expand-$(1))
-
 ## Generate timestamp file for threadsafe directory creation
-mkdir_deps = \
-  $(strip \
-  $(foreach var,$(getargv),\
-  $(foreach dir,$(call expand,var),\
-  $(call slash_strip,$(call expand,dir)/.mkdir.done) \
-  )))
+mkdir_deps =$(foreach dir,$(getargv),$(call slash_strip,$(dir)/.mkdir.done))
 
 #######################
 ##---]  TARGETS  [---##
 #######################
 
 %/.mkdir.done: # mkdir -p -p => mkdir -p
 	$(subst $(space)-p,$(null),$(MKDIR)) -p "$(dir $@)"
 # Make the timestamp old enough for not being a problem with symbolic links
@@ -77,29 +68,27 @@
 .mkdir.done:
 	@echo "WARNING: $(MKDIR) -dot- requested by $(MAKE) -C $(CURDIR) $(MAKECMDGOALS)"
 	@$(TOUCH) -t 198001030000 "$@"
 
 INCLUDED_AUTOTARGETS_MK = 1
 endif #}
 
 
-###########################################################################
-## GENERATED_DIR(_\S+)? directory deps
-## GENERATED_DIRS_{export,lib,tools} = foo   # target specific deps
-###########################################################################
-GENERATED_DIRS += $(foreach tgt,$(MAKECMDGOALS),$(value GENERATED_DIRS_$(tgt)))
-GENERATED_DIRS := $(call expand,GENERATED_DIRS)
-GENERATED_DIRS := $(strip $(sort $(GENERATED_DIRS)))
-GARBAGE_DIRS   += $(GENERATED_DIRS)
-
-# directory deps are timestamp based to only create when needed
-AUTO_DEPS += $(if $(value GENERATED_DIRS),$(call mkdir_deps,GENERATED_DIRS))
+## Accumulate deps and cleanup
+ifneq (,$(GENERATED_DIRS))
+  GENERATED_DIRS := $(strip $(sort $(GENERATED_DIRS)))
+  tmpauto :=$(call mkdir_deps,GENERATED_DIRS)
+  GENERATED_DIRS_DEPS +=$(tmpauto)
+  GARBAGE_DIRS        +=$(GENERATED_DIRS)
+endif
 
 #################################################################
 # One ring/dep to rule them all:
 #   config/rules.mk::all target is available by default
 #   Add $(AUTO_DEPS) as an explicit target dependency when needed.
 #################################################################
+
+AUTO_DEPS +=$(GENERATED_DIRS_DEPS)
 AUTO_DEPS := $(strip $(sort $(AUTO_DEPS)))
 
 # Complain loudly if deps have not loaded so getargv != $(NULL)
 $(call requiredfunction,getargv)

Note You need to log in before you can comment on or make changes to this bug.