summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFranklinDM <mrmineshafter17@gmail.com>2022-08-05 12:38:10 +0800
committerFranklinDM <mrmineshafter17@gmail.com>2022-12-24 12:57:52 +0800
commit7ff4b0d120eb61cceaa0b54d1a686bb39f33ade1 (patch)
treea25a613027434ecf292c62e38bc88f74b6d67863
parent13e658a2009bb1b0e2f15a5713af3fca12189b48 (diff)
downloaduxp-7ff4b0d120eb61cceaa0b54d1a686bb39f33ade1.tar.gz
Issue #2065 - Part 3: Process install manifests with --track in the recursive make backend
This excludes parts that remove support for building the Mozilla SDK. Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1390916
-rw-r--r--Makefile.in20
-rw-r--r--js/src/Makefile.in2
-rw-r--r--python/mozbuild/mozbuild/action/process_install_manifest.py62
-rw-r--r--xpcom/xpidl/Makefile.in2
4 files changed, 34 insertions, 52 deletions
diff --git a/Makefile.in b/Makefile.in
index 365dbd4a8a..acfe5d9e1e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -160,18 +160,9 @@ endif
.PHONY: install-manifests
install-manifests: $(addprefix install-,$(install_manifests))
-# process_install_manifest needs to be invoked with --no-remove when building
-# js as standalone because automated builds are building nspr separately and
-# that would remove the resulting files.
-# Eventually, a standalone js build would just be able to build nspr itself,
-# removing the need for the former.
-ifdef JS_STANDALONE
-NO_REMOVE=1
-endif
-
-.PHONY: $(addprefix install-,$(subst /,_,$(install_manifests)))
+.PHONY: $(addprefix install-,$(install_manifests))
$(addprefix install-,$(install_manifests)): install-%: $(install_manifest_depends)
- $(addprefix $(call py_action,process_install_manifest,$(if $(NO_REMOVE),--no-remove )$*) ,$(wildcard _build_manifests/install/$(subst /,_,$*)))
+ $(addprefix $(call py_action,process_install_manifest,--track install_$(subst /,_,$*).track $*) ,$(wildcard _build_manifests/install/$(subst /,_,$*)))
# Dummy wrapper rule to allow the faster backend to piggy back
$(addprefix install-,$(subst /,_,$(filter dist/%,$(install_manifests)))): install-dist_%: install-dist/% ;
@@ -184,10 +175,9 @@ install-tests: install-test-files
.PHONY: run-tests-deps
run-tests-deps: $(install_manifest_depends)
-# Force --no-remove, because $objdir/_tests is handled by multiple manifests.
.PHONY: install-test-files
install-test-files:
- $(call py_action,process_install_manifest,--no-remove _tests _build_manifests/install/_test_files)
+ $(call py_action,process_install_manifest,--track install__test_files.track _tests _build_manifests/install/_test_files)
include $(topsrcdir)/build/moz-automation.mk
@@ -207,13 +197,13 @@ ifndef NO_PROFILE_GUIDED_OPTIMIZE
ifneq ($(OS_ARCH)_$(GNU_CC), WINNT_)
recurse_pre-export:: install-manifests
binaries::
- @$(MAKE) install-manifests NO_REMOVE=1 install_manifests=dist/include
+ @$(MAKE) install-manifests install_manifests=dist/include
endif
endif
else # !MOZ_PROFILE_USE (normal build)
recurse_pre-export:: install-manifests
binaries::
- @$(MAKE) install-manifests NO_REMOVE=1 install_manifests=dist/include
+ @$(MAKE) install-manifests install_manifests=dist/include
endif
# For historical reasons that are unknown, $(DIST)/sdk is always blown away
diff --git a/js/src/Makefile.in b/js/src/Makefile.in
index bc99e62b5d..a8b685ef02 100644
--- a/js/src/Makefile.in
+++ b/js/src/Makefile.in
@@ -185,7 +185,7 @@ install:: js-config.h
#
install::
- $(call py_action,process_install_manifest,--no-remove --no-symlinks $(DESTDIR)$(includedir) $(DEPTH)/_build_manifests/install/dist_include)
+ $(call py_action,process_install_manifest,--track install_dist_include.track --no-symlinks $(DESTDIR)$(includedir) $(DEPTH)/_build_manifests/install/dist_include)
#
# END SpiderMonkey header installation
diff --git a/python/mozbuild/mozbuild/action/process_install_manifest.py b/python/mozbuild/mozbuild/action/process_install_manifest.py
index 47b7aef5ba..a97a72cc6e 100644
--- a/python/mozbuild/mozbuild/action/process_install_manifest.py
+++ b/python/mozbuild/mozbuild/action/process_install_manifest.py
@@ -29,33 +29,31 @@ COMPLETE = 'Elapsed: {elapsed:.2f}s; From {dest}: Kept {existing} existing; ' \
'Removed {rm_files} files and {rm_dirs} directories.'
-def process_manifest(destdir, paths, track=None,
- remove_unaccounted=True,
- remove_all_directory_symlinks=True,
- remove_empty_directories=True,
+def process_manifest(destdir, paths, track,
no_symlinks=False,
defines={}):
- if track:
- if os.path.exists(track):
- # We use the same format as install manifests for the tracking
- # data.
- manifest = InstallManifest(path=track)
- remove_unaccounted = FileRegistry()
- dummy_file = BaseFile()
-
- finder = FileFinder(destdir, find_executables=False,
- find_dotfiles=True)
- for dest in manifest._dests:
- for p, f in finder.find(dest):
- remove_unaccounted.add(p, dummy_file)
-
- else:
- # If tracking is enabled and there is no file, we don't want to
- # be removing anything.
- remove_unaccounted=False
- remove_empty_directories=False
- remove_all_directory_symlinks=False
+ if os.path.exists(track):
+ # We use the same format as install manifests for the tracking
+ # data.
+ manifest = InstallManifest(path=track)
+ remove_unaccounted = FileRegistry()
+ dummy_file = BaseFile()
+
+ finder = FileFinder(destdir, find_executables=False,
+ find_dotfiles=True)
+ for dest in manifest._dests:
+ for p, f in finder.find(dest):
+ remove_unaccounted.add(p, dummy_file)
+
+ remove_empty_directories=True
+ remove_all_directory_symlinks=True
+ else:
+ # If tracking is enabled and there is no file, we don't want to
+ # be removing anything.
+ remove_unaccounted=False
+ remove_empty_directories=False
+ remove_all_directory_symlinks=False
manifest_cls = InstallManifestNoSymlinks if no_symlinks else InstallManifest
manifest = manifest_cls()
@@ -83,15 +81,9 @@ def main(argv):
parser.add_argument('destdir', help='Destination directory.')
parser.add_argument('manifests', nargs='+', help='Path to manifest file(s).')
- parser.add_argument('--no-remove', action='store_true',
- help='Do not remove unaccounted files from destination.')
- parser.add_argument('--no-remove-all-directory-symlinks', action='store_true',
- help='Do not remove all directory symlinks from destination.')
- parser.add_argument('--no-remove-empty-directories', action='store_true',
- help='Do not remove empty directories from destination.')
parser.add_argument('--no-symlinks', action='store_true',
help='Do not install symbolic links. Always copy files')
- parser.add_argument('--track', metavar="PATH",
+ parser.add_argument('--track', metavar="PATH", required=True,
help='Use installed files tracking information from the given path.')
parser.add_argument('-D', action=DefinesAction,
dest='defines', metavar="VAR[=VAL]",
@@ -101,11 +93,11 @@ def main(argv):
start = time.time()
- result = process_manifest(args.destdir, args.manifests,
- track=args.track, remove_unaccounted=not args.no_remove,
- remove_all_directory_symlinks=not args.no_remove_all_directory_symlinks,
- remove_empty_directories=not args.no_remove_empty_directories,
+ result = process_manifest(
+ args.destdir,
+ args.manifests,
no_symlinks=args.no_symlinks,
+ track=args.track,
defines=args.defines)
elapsed = time.time() - start
diff --git a/xpcom/xpidl/Makefile.in b/xpcom/xpidl/Makefile.in
index b58ad48664..dff31a2bab 100644
--- a/xpcom/xpidl/Makefile.in
+++ b/xpcom/xpidl/Makefile.in
@@ -3,7 +3,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
export::
- $(call py_action,process_install_manifest,$(DIST)/idl $(DEPTH)/_build_manifests/install/dist_idl)
+ $(call py_action,process_install_manifest,--track install-xpidl.track $(DIST)/idl $(DEPTH)/_build_manifests/install/dist_idl)
$(call SUBMAKE,xpidl,$(DEPTH)/config/makefiles/xpidl)
clean clobber realclean clobber_all distclean::