forked from openkylin/platform_build
Add USE_FILESLIST_GO to switch to fileslist.go
fileslist.go is still disabled by default. To enable, use:
USE_FILESLIST_GO=true m -j
Bug: 36274890
Test: Manual, with m -j
Change-Id: I722e17fa7fb6ba91e2b2c44cd7524d974cbe4a56
(cherry picked from commit 9fe97e231b
)
This commit is contained in:
parent
deb26ad395
commit
517d32d4da
|
@ -1257,11 +1257,11 @@ FULL_SYSTEMIMAGE_DEPS := $(INTERNAL_SYSTEMIMAGE_FILES) $(INTERNAL_USERIMAGES_DEP
|
||||||
# so that we can get the size stat even if the build fails due to too large
|
# so that we can get the size stat even if the build fails due to too large
|
||||||
# system image.
|
# system image.
|
||||||
INSTALLED_FILES_FILE := $(PRODUCT_OUT)/installed-files.txt
|
INSTALLED_FILES_FILE := $(PRODUCT_OUT)/installed-files.txt
|
||||||
$(INSTALLED_FILES_FILE): $(FULL_SYSTEMIMAGE_DEPS)
|
$(INSTALLED_FILES_FILE): $(FULL_SYSTEMIMAGE_DEPS) $(FILESLIST)
|
||||||
@echo Installed file list: $@
|
@echo Installed file list: $@
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
@rm -f $@
|
@rm -f $@
|
||||||
$(hide) build/tools/fileslist.py $(TARGET_OUT) > $(@:.txt=.json)
|
$(hide) $(FILESLIST) $(TARGET_OUT) > $(@:.txt=.json)
|
||||||
$(hide) build/tools/fileslist_util.py -c $(@:.txt=.json) > $@
|
$(hide) build/tools/fileslist_util.py -c $(@:.txt=.json) > $@
|
||||||
|
|
||||||
.PHONY: installed-file-list
|
.PHONY: installed-file-list
|
||||||
|
@ -1704,11 +1704,11 @@ INTERNAL_SYSTEMOTHERIMAGE_FILES := \
|
||||||
$(ALL_PDK_FUSION_FILES))
|
$(ALL_PDK_FUSION_FILES))
|
||||||
|
|
||||||
INSTALLED_FILES_FILE_SYSTEMOTHER := $(PRODUCT_OUT)/installed-files-system-other.txt
|
INSTALLED_FILES_FILE_SYSTEMOTHER := $(PRODUCT_OUT)/installed-files-system-other.txt
|
||||||
$(INSTALLED_FILES_FILE_SYSTEMOTHER) : $(INTERNAL_SYSTEMOTHERIMAGE_FILES)
|
$(INSTALLED_FILES_FILE_SYSTEMOTHER) : $(INTERNAL_SYSTEMOTHERIMAGE_FILES) $(FILESLIST)
|
||||||
@echo Installed file list: $@
|
@echo Installed file list: $@
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
@rm -f $@
|
@rm -f $@
|
||||||
$(hide) build/tools/fileslist.py $(TARGET_OUT_SYSTEM_OTHER) > $(@:.txt=.json)
|
$(hide) $(FILESLIST) $(TARGET_OUT_SYSTEM_OTHER) > $(@:.txt=.json)
|
||||||
$(hide) build/tools/fileslist_util.py -c $(@:.txt=.json) > $@
|
$(hide) build/tools/fileslist_util.py -c $(@:.txt=.json) > $@
|
||||||
|
|
||||||
systemotherimage_intermediates := \
|
systemotherimage_intermediates := \
|
||||||
|
@ -1751,11 +1751,11 @@ INTERNAL_VENDORIMAGE_FILES := \
|
||||||
$(INSTALLED_PLATFORM_ZIP) : $(INTERNAL_VENDORIMAGE_FILES)
|
$(INSTALLED_PLATFORM_ZIP) : $(INTERNAL_VENDORIMAGE_FILES)
|
||||||
|
|
||||||
INSTALLED_FILES_FILE_VENDOR := $(PRODUCT_OUT)/installed-files-vendor.txt
|
INSTALLED_FILES_FILE_VENDOR := $(PRODUCT_OUT)/installed-files-vendor.txt
|
||||||
$(INSTALLED_FILES_FILE_VENDOR) : $(INTERNAL_VENDORIMAGE_FILES)
|
$(INSTALLED_FILES_FILE_VENDOR) : $(INTERNAL_VENDORIMAGE_FILES) $(FILESLIST)
|
||||||
@echo Installed file list: $@
|
@echo Installed file list: $@
|
||||||
@mkdir -p $(dir $@)
|
@mkdir -p $(dir $@)
|
||||||
@rm -f $@
|
@rm -f $@
|
||||||
$(hide) build/tools/fileslist.py $(TARGET_OUT_VENDOR) > $(@:.txt=.json)
|
$(hide) $(FILESLIST) $(TARGET_OUT_VENDOR) > $(@:.txt=.json)
|
||||||
$(hide) build/tools/fileslist_util.py -c $(@:.txt=.json) > $@
|
$(hide) build/tools/fileslist_util.py -c $(@:.txt=.json) > $@
|
||||||
|
|
||||||
vendorimage_intermediates := \
|
vendorimage_intermediates := \
|
||||||
|
|
|
@ -497,6 +497,7 @@ MAINDEXCLASSES := $(HOST_OUT_EXECUTABLES)/mainDexClasses
|
||||||
|
|
||||||
SOONG_ZIP := $(SOONG_HOST_OUT_EXECUTABLES)/soong_zip
|
SOONG_ZIP := $(SOONG_HOST_OUT_EXECUTABLES)/soong_zip
|
||||||
ZIP2ZIP := $(SOONG_HOST_OUT_EXECUTABLES)/zip2zip
|
ZIP2ZIP := $(SOONG_HOST_OUT_EXECUTABLES)/zip2zip
|
||||||
|
FILESLIST := $(SOONG_HOST_OUT_EXECUTABLES)/fileslist
|
||||||
|
|
||||||
JAVAC_FILTER := $(SOONG_HOST_OUT_EXECUTABLES)/soong_javac_filter
|
JAVAC_FILTER := $(SOONG_HOST_OUT_EXECUTABLES)/soong_javac_filter
|
||||||
|
|
||||||
|
|
|
@ -1,58 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
#
|
|
||||||
# Copyright (C) 2009 The Android Open Source Project
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the 'License');
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an 'AS IS' BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
|
|
||||||
import json, hashlib, operator, os, sys
|
|
||||||
|
|
||||||
def get_file_size(path):
|
|
||||||
st = os.lstat(path)
|
|
||||||
return st.st_size;
|
|
||||||
|
|
||||||
def get_file_digest(path):
|
|
||||||
if os.path.isfile(path) == False:
|
|
||||||
return "----------------------------------------------------------------"
|
|
||||||
digest = hashlib.sha256()
|
|
||||||
with open(path, 'rb') as f:
|
|
||||||
while True:
|
|
||||||
buf = f.read(1024*1024)
|
|
||||||
if not buf:
|
|
||||||
break
|
|
||||||
digest.update(buf)
|
|
||||||
return digest.hexdigest();
|
|
||||||
|
|
||||||
def main(argv):
|
|
||||||
output = []
|
|
||||||
roots = argv[1:]
|
|
||||||
for root in roots:
|
|
||||||
base = len(root[:root.rfind(os.path.sep)])
|
|
||||||
for dir, dirs, files in os.walk(root):
|
|
||||||
relative = dir[base:]
|
|
||||||
for f in files:
|
|
||||||
try:
|
|
||||||
path = os.path.sep.join((dir, f))
|
|
||||||
row = {
|
|
||||||
"Size": get_file_size(path),
|
|
||||||
"Name": os.path.sep.join((relative, f)),
|
|
||||||
"SHA256": get_file_digest(path),
|
|
||||||
}
|
|
||||||
output.append(row)
|
|
||||||
except os.error:
|
|
||||||
pass
|
|
||||||
output.sort(key=operator.itemgetter("Size", "Name"), reverse=True)
|
|
||||||
print json.dumps(output, indent=2, separators=(',',': '))
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main(sys.argv)
|
|
Loading…
Reference in New Issue