☠☠ backed out by 59b0072d64aa ☠ ☠ | |
author | Mike Hommey <mh+mozilla@glandium.org> |
Wed, 25 Jun 2014 08:38:28 +0900 | |
changeset 190596 | bcd694f0e95dad42f9d355c2f8c8a99715b714ad |
parent 190595 | 49cadfcde709e64b3f31476fb1370ee8d8ca1403 |
child 190597 | 5b1b527abe473a64fa9dedf7b487d453eb2e078a |
push id | 27011 |
push user | cbook@mozilla.com |
push date | Wed, 25 Jun 2014 13:30:09 +0000 |
treeherder | mozilla-central@645ad2c24114 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | gps |
bugs | 1027890 |
milestone | 33.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/Makefile.in +++ b/Makefile.in @@ -1,22 +1,20 @@ # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -ifndef .PYMAKE ifeq (,$(MAKE_VERSION)) $(error GNU Make is required) endif make_min_ver := 3.81 ifneq ($(make_min_ver),$(firstword $(sort $(make_min_ver) $(MAKE_VERSION)))) $(error GNU Make $(make_min_ver) or higher is required) endif -endif export TOPLEVEL_BUILD := 1 default:: ifdef MOZ_BUILD_APP include $(topsrcdir)/$(MOZ_BUILD_APP)/build.mk endif
--- a/b2g/gaia/Makefile.in +++ b/b2g/gaia/Makefile.in @@ -1,24 +1,17 @@ # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. GAIA_PATH := gaia/profile -ifdef .PYMAKE -# For use of GNU make in pymake builds. -GAIA_MAKE=$(GMAKE) -else -GAIA_MAKE=$(MAKE) -endif - # This is needed to avoid making run-b2g depend on mozglue WRAP_LDFLAGS := GENERATED_DIRS += $(DIST)/bin/$(GAIA_PATH) include $(topsrcdir)/config/rules.mk libs:: - +$(GAIA_MAKE) -j1 -C $(GAIADIR) clean - +$(GAIA_MAKE) -j1 -C $(GAIADIR) profile + +$(MAKE) -j1 -C $(GAIADIR) clean + +$(MAKE) -j1 -C $(GAIADIR) profile (cd $(GAIADIR)/profile && tar $(TAR_CREATE_FLAGS) - .) | (cd $(abspath $(DIST))/bin/$(GAIA_PATH) && tar -xf -)
--- a/build/autoconf/compiler-opts.m4 +++ b/build/autoconf/compiler-opts.m4 @@ -179,22 +179,16 @@ if test -n "$MOZ_DEBUG" -o -n "$MOZ_DEBU export MOZ_DEBUG_SYMBOLS fi ]) dnl A high level macro for selecting compiler options. AC_DEFUN([MOZ_COMPILER_OPTS], [ - if test "${MOZ_PSEUDO_DERECURSE-unset}" = unset; then - dnl Don't enable on pymake, because of bug 918652. Bug 912979 is an annoyance - dnl with pymake, too. - MOZ_PSEUDO_DERECURSE=no-pymake - fi - MOZ_DEBUGGING_OPTS MOZ_RTTI if test "$CLANG_CXX"; then ## We disable return-type-c-linkage because jsval is defined as a C++ type but is ## returned by C functions. This is possible because we use knowledge about the ABI ## to typedef it to a C type with the same layout when the headers are included ## from C. _WARNINGS_CXXFLAGS="${_WARNINGS_CXXFLAGS} -Wno-unknown-warning-option -Wno-return-type-c-linkage"
--- a/build/docs/slow.rst +++ b/build/docs/slow.rst @@ -83,32 +83,19 @@ the build system. **We recommend building with no less than 8 GB of system memory.** As always, the more memory you have, the better. For a bare bones machine doing nothing more than building the source tree, anything more than 16 GB is likely entering the point of diminishing returns. This cause impacts both clobber and incremental builds. -You are building with pymake -============================ - -Pymake is slower than GNU make. One reason is Python is generally slower -than C. The build system maintainers are consistently looking at -optimizing pymake. However, it is death by a thousand cuts. - -This cause impacts both clobber and incremental builds. - You are building on Windows =========================== -Builds on Windows are slow for a few reasons. First, Windows builds use -pymake, not GNU make (because of compatibility issues with GNU make). -But, there are other sources of slowness. - New processes on Windows are about a magnitude slower to spawn than on UNIX-y systems such as Linux. This is because Windows has optimized new threads while the \*NIX platforms typically optimize new processes. Anyway, the build system spawns thousands of new processes during a build. Parts of the build that rely on rapid spawning of new processes are slow on Windows as a result. This is most pronounced when running *configure*. The configure file is a giant shell script and shell scripts rely heavily on new processes. This is why configure on Windows
--- a/client.mk +++ b/client.mk @@ -139,23 +139,16 @@ endif ifeq (,$(findstring -j,$(MOZ_MAKE_FLAGS))) cores=$(shell $(PYTHON) -c 'import multiprocessing; print(multiprocessing.cpu_count())') MOZ_MAKE_FLAGS += -j$(cores) endif ifndef MOZ_OBJDIR MOZ_OBJDIR = obj-$(CONFIG_GUESS) -else -# On Windows Pymake builds check MOZ_OBJDIR doesn't start with "/" - ifneq (,$(findstring mingw,$(CONFIG_GUESS))) - ifeq (1_a,$(.PYMAKE)_$(firstword a$(subst /, ,$(MOZ_OBJDIR)))) - $(error For Windows Pymake builds, MOZ_OBJDIR must be a Windows [and not MSYS] style path.) - endif - endif endif ifdef MOZ_BUILD_PROJECTS ifdef MOZ_CURRENT_PROJECT OBJDIR = $(MOZ_OBJDIR)/$(MOZ_CURRENT_PROJECT) MOZ_MAKE = $(MAKE) $(MOZ_MAKE_FLAGS) -C $(OBJDIR) BUILD_PROJECT_ARG = MOZ_BUILD_APP=$(MOZ_CURRENT_PROJECT)
--- a/config/config.mk +++ b/config/config.mk @@ -189,26 +189,16 @@ BUILD_TOOLS = $(WIN_TOP_SRC)/build/unix else win_srcdir := $(srcdir) BUILD_TOOLS = $(topsrcdir)/build/unix endif CONFIG_TOOLS = $(MOZ_BUILD_ROOT)/config AUTOCONF_TOOLS = $(topsrcdir)/build/autoconf -# Disable MOZ_PSEUDO_DERECURSE when it contains no-pymake and we're running -# pymake. This can be removed when no-pymake is removed from the default in -# build/autoconf/compiler-opts.m4. -ifdef .PYMAKE -comma = , -ifneq (,$(filter no-pymake,$(subst $(comma), ,$(MOZ_PSEUDO_DERECURSE)))) -MOZ_PSEUDO_DERECURSE := -endif -endif - # Disable MOZ_PSEUDO_DERECURSE on PGO builds until it's fixed. ifneq (,$(MOZ_PROFILE_USE)$(MOZ_PROFILE_GENERATE)) MOZ_PSEUDO_DERECURSE := endif # # Strip off the excessively long version numbers on these platforms, # but save the version to allow multiple versions of the same base @@ -233,20 +223,16 @@ CXX_WRAPPER ?= $(call py_action,cl) endif # _MSC_VER CC := $(CC_WRAPPER) $(CC) CXX := $(CXX_WRAPPER) $(CXX) MKDIR ?= mkdir SLEEP ?= sleep TOUCH ?= touch -ifdef .PYMAKE -PYCOMMANDPATH += $(PYTHON_SITE_PACKAGES) -endif - PYTHON_PATH = $(PYTHON) $(topsrcdir)/config/pythonpath.py # determine debug-related options _DEBUG_ASFLAGS := _DEBUG_CFLAGS := _DEBUG_LDFLAGS := ifdef MOZ_DEBUG @@ -715,19 +701,16 @@ NSINSTALL = $(NSINSTALL_PY) else NSINSTALL = $(DIST)/bin/nsinstall$(HOST_BIN_SUFFIX) endif # WINNT endif # NSINSTALL_BIN ifeq (,$(CROSS_COMPILE)$(filter-out WINNT, $(OS_ARCH))) INSTALL = $(NSINSTALL) -t -ifdef .PYMAKE -install_cmd = $(NSINSTALL_NATIVECMD) -t $(1) -endif # .PYMAKE else # This isn't laid out as conditional directives so that NSDISTMODE can be # target-specific. INSTALL = $(if $(filter copy, $(NSDISTMODE)), $(NSINSTALL) -t, $(if $(filter absolute_symlink, $(NSDISTMODE)), $(NSINSTALL) -L $(PWD), $(NSINSTALL) -R)) endif # WINNT
--- a/config/makefiles/functions.mk +++ b/config/makefiles/functions.mk @@ -22,13 +22,9 @@ core_realpath = $(error core_realpath is core_winabspath = $(error core_winabspath is unsupported) # Run a named Python build action. The first argument is the name of the build # action. The second argument are the arguments to pass to the action (space # delimited arguments). e.g. # # libs:: # $(call py_action,purge_manifests,_build_manifests/purge/foo.manifest) -ifdef .PYMAKE -py_action = %mozbuild.action.$(1) main $(2) -else py_action = $(PYTHON) -m mozbuild.action.$(1) $(2) -endif
--- a/config/rules.mk +++ b/config/rules.mk @@ -30,56 +30,37 @@ endif ifndef INCLUDED_VERSION_MK include $(topsrcdir)/config/version.mk endif USE_AUTOTARGETS_MK = 1 include $(topsrcdir)/config/makefiles/makeutils.mk -# Only build with Pymake (not GNU make) on Windows. -ifeq ($(HOST_OS_ARCH),WINNT) -ifndef L10NBASEDIR -ifndef .PYMAKE -$(error Pymake is required to build on Windows. Run |./mach build| to \ -automatically use pymake or invoke pymake directly via \ -|python build/pymake/make.py|.) -endif -endif -endif - ifdef REBUILD_CHECK -ifdef .PYMAKE -REPORT_BUILD = @%rebuild_check rebuild_check $@ $^ -else REPORT_BUILD = $(info $(shell $(PYTHON) $(MOZILLA_DIR)/config/rebuild_check.py $@ $^)) -endif else REPORT_BUILD = $(info $(notdir $@)) endif EXEC = exec # Don't copy xulrunner files at install time, when using system xulrunner ifdef SYSTEM_LIBXUL SKIP_COPY_XULRUNNER=1 endif # ELOG prints out failed command when building silently (gmake -s). Pymake # prints out failed commands anyway, so ELOG just makes things worse by # forcing shell invocations. -ifndef .PYMAKE ifneq (,$(findstring s, $(filter-out --%, $(MAKEFLAGS)))) ELOG := $(EXEC) sh $(BUILD_TOOLS)/print-failed-commands.sh else ELOG := endif # -s -else - ELOG := -endif # ifndef .PYMAKE _VPATH_SRCS = $(abspath $<) ################################################################################ # Testing frameworks support ################################################################################ testxpcobjdir = $(DEPTH)/_tests/xpcshell @@ -1137,19 +1118,17 @@ endif @echo Creating Resource file: $@ ifdef GNU_CC $(RC) $(RCFLAGS) $(filter-out -U%,$(DEFINES)) $(INCLUDES:-I%=--include-dir %) $(OUTOPTION)$@ $(_VPATH_SRCS) else $(RC) $(RCFLAGS) -r $(DEFINES) $(INCLUDES) $(OUTOPTION)$@ $(_VPATH_SRCS) endif # Cancel GNU make built-in implicit rules -ifndef .PYMAKE MAKEFLAGS += -r -endif ifneq (,$(filter WINNT,$(OS_ARCH))) SEP := ; else SEP := : endif EMPTY :=
--- a/config/tests/makefiles/autodeps/Makefile.in +++ b/config/tests/makefiles/autodeps/Makefile.in @@ -17,17 +17,16 @@ include $(topsrcdir)/config/rules.mk autotgt_tests = .deps/autotargets.mk.ts tgts =\ .deps/.mkdir.done\ $(autotgt_tests) $(NULL) export MAKE -export .PYMAKE ##------------------_## ##---] TARGETS [---## ##------------------_## all:: check:: $(tgts)
--- a/intl/icu/Makefile.in +++ b/intl/icu/Makefile.in @@ -39,37 +39,29 @@ ifdef ENABLE_INTL_API endif # MOZ_SHARED_ICU endif # !MOZ_NATIVE_ICU endif # ENABLE_INTL_API include $(topsrcdir)/config/rules.mk ifdef ENABLE_INTL_API ifndef MOZ_NATIVE_ICU -ifdef .PYMAKE -ICU_MAKE = $(GMAKE) -else -ICU_MAKE = $(MAKE) -endif - default:: buildicu -# - ICU requires GNU make according to its readme.html. pymake can't be used -# because it doesn't support order only dependencies. # - Force ICU to use the standard suffix for object files because expandlibs # will discard all files with a non-standard suffix (bug 857450). # - Options for genrb: -k strict parsing; -R omit collation tailoring rules. buildicu:: # ICU's build system is full of races, so force non-parallel build. ifdef CROSS_COMPILE - +$(ICU_MAKE) -j1 -C host STATIC_O=$(OBJ_SUFFIX) GENRBOPTS='-k -R -C' + +$(MAKE) -j1 -C host STATIC_O=$(OBJ_SUFFIX) GENRBOPTS='-k -R -C' endif - +$(ICU_MAKE) -j1 -C target STATIC_O=$(OBJ_SUFFIX) GENRBOPTS='-k -R' + +$(MAKE) -j1 -C target STATIC_O=$(OBJ_SUFFIX) GENRBOPTS='-k -R' $(ICU_LIB_RENAME) distclean clean:: ifdef CROSS_COMPILE - +$(ICU_MAKE) -C host $@ STATIC_O=$(OBJ_SUFFIX) + +$(MAKE) -C host $@ STATIC_O=$(OBJ_SUFFIX) endif - +$(ICU_MAKE) -C target $@ STATIC_O=$(OBJ_SUFFIX) + +$(MAKE) -C target $@ STATIC_O=$(OBJ_SUFFIX) endif endif
--- a/js/src/Makefile.in +++ b/js/src/Makefile.in @@ -1,23 +1,21 @@ # -*- Mode: makefile -*- # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -ifndef .PYMAKE ifeq (,$(MAKE_VERSION)) $(error GNU Make is required) endif make_min_ver := 3.81 ifneq ($(make_min_ver),$(firstword $(sort $(make_min_ver) $(MAKE_VERSION)))) $(error GNU Make $(make_min_ver) or higher is required) endif -endif TOPLEVEL_BUILD := 1 run_for_side_effects := $(shell echo 'MAKE: $(MAKE)') STATIC_LIBRARY_NAME = js_static LIBS = $(NSPR_LIBS) DIST_INSTALL = 1
--- a/python/mozbuild/mozbuild/base.py +++ b/python/mozbuild/mozbuild/base.py @@ -429,19 +429,17 @@ class MozbuildObject(ProcessExecutionMix if ignore_errors: args.append('-k') if silent: args.append('-s') # Print entering/leaving directory messages. Some consumers look at - # these to measure progress. Ideally, we'd do everything with pymake - # and use hooks in its API. Unfortunately, it doesn't provide that - # feature... yet. + # these to measure progress. if print_directory: args.append('-w') if isinstance(target, list): args.extend(target) elif target: args.append(target)
--- a/security/build/Makefile.in +++ b/security/build/Makefile.in @@ -455,21 +455,16 @@ DEFAULT_GMAKE_FLAGS += $(EXTRA_GMAKE_FLA $(addprefix libs-,$(NSS_DIRS)): libs-%: # Work around NSS's export rule being racy when recursing for private_export # See bug #836220. $(addprefix export-,$(NSS_DIRS)): EXTRA_GMAKE_FLAGS = PRIVATE_EXPORTS= $(addprefix export-,$(NSS_DIRS)): export-%: private_export-% $(addprefix private_export-,$(NSS_DIRS)): EXTRA_GMAKE_FLAGS = $(addprefix private_export-,$(NSS_DIRS)): private_export-%: -# Work around bug #836228 in pymake -ifdef .PYMAKE -$(foreach p,libs export private_export,$(addprefix $(p)-,$(NSS_DIRS))): *=$(subst $(NULL) $(NULL),-,$(wordlist 2,$(words $(subst -, ,$@)),$(subst -, ,$@))) -endif - $(foreach p,libs export private_export,$(addprefix $(p)-,$(NSS_DIRS))): $(DEFAULT_GMAKE_ENV) $(MAKE) -C $(NSS_SRCDIR)/security/$* $(@:-$*=) $(DEFAULT_GMAKE_FLAGS) export:: $(addprefix export-,$(NSS_DIRS)) $(addprefix clean-,$(NSS_DIRS)): clean-%: $(MAKE) -C $(NSS_SRCDIR)/security/$* $(DEFAULT_GMAKE_FLAGS) clean