replicant-vendor_replicant/build/core/http_prebuilt.mk
David Marble 84cfb7f0d1 http_prebuilt: Improve retrieval of artifacts from archive
The current version always redownloads the artifact.
Kali does not like the nested md5sum command and ignores it
leaving file checksum value blank so the test always fails.
A temporary variable is used to get around this limitation
of kali.

The echo "Downloading..." command has been modified to actually
print and has been moved so it only does so when downloading
the artifact.

Change-Id: I115860a87e55399a652d6548fe50f6204337f854
(cherry picked from commit 20c06fd75e09f3910ec699bdc54eec08f6bb4594)
2017-01-12 18:33:30 +00:00

90 lines
3.1 KiB
Makefile

# Copyright (C) 2015 The CyanogenMod Project
# (C) 2017 The LineageOS 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.
ifeq ($(strip $(LOCAL_HTTP_PATH)),)
$(error LOCAL_HTTP_PATH not defined.)
endif
ifeq ($(strip $(LOCAL_HTTP_FILENAME)),)
$(error LOCAL_HTTP_FILENAME not defined.)
endif
ifeq ($(strip $(LOCAL_HTTP_MD5SUM)),)
$(error LOCAL_HTTP_MD5SUM not defined.)
endif
PREBUILT_MODULE_ARCHIVE := vendor/cm/prebuilt/archive/$(LOCAL_MODULE)
PREBUILT_MODULE_FILE := $(PREBUILT_MODULE_ARCHIVE)/$(LOCAL_HTTP_FILENAME)
PREBUILT_MODULE_MD5SUM := $(PREBUILT_MODULE_ARCHIVE)/md5sum
HTTP_FILE_URL := $(LOCAL_HTTP_PATH)/$(LOCAL_HTTP_FILENAME)
HTTP_FILE_MD5_URL := $(LOCAL_HTTP_PATH)/$(LOCAL_HTTP_MD5SUM)
LOCAL_PREBUILT_MODULE_FILE := $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_MODULE),,COMMON)/$(LOCAL_HTTP_FILENAME)
$(LOCAL_PREBUILT_MODULE_FILE): filename := $(LOCAL_HTTP_FILENAME)
$(LOCAL_PREBUILT_MODULE_FILE): checksum := $(PREBUILT_MODULE_MD5SUM)
$(LOCAL_PREBUILT_MODULE_FILE): filepath := $(PREBUILT_MODULE_FILE)
$(LOCAL_PREBUILT_MODULE_FILE): version := $(LOCAL_HTTP_FILE_VERSION)
define curl-checksum
@echo "Pulling comparison md5sum for $(filename)"
$(call download-prebuilt-module, $(HTTP_FILE_MD5_URL),$(checksum))
endef
define audit-checksum
$(hide) if [ ! -f $(filepath) ]; then \
echo "Downloading: $(filename) (version $(version)) -> $(filepath)"; \
$(call download-prebuilt-module, $(HTTP_FILE_URL),$(filepath)) \
else \
temp_checksum=$(shell md5sum $(filepath) | cut -d ' ' -f1); \
if [ "$$temp_checksum" != "$(shell cat $(checksum) | cut -d ' ' -f1)" ]; then \
echo "Downloading: $(filename) (version $(version)) -> $(filepath)"; \
rm -rf $(filepath); \
$(call download-prebuilt-module, $(HTTP_FILE_URL),$(filepath)) \
fi; \
fi; \
rm -f $(checksum);
endef
# $(1) url
# $(2) file output
define download-prebuilt-module
./vendor/cm/build/tasks/http_curl_prebuilt.sh $(1) $(2);
endef
define cleanup
@echo "Copying: $(filename) -> $(dir $@)"
$(hide) mkdir -p $(dir $@)
$(hide) cp $(filepath) $(dir $@)/$(filename)
endef
$(LOCAL_PREBUILT_MODULE_FILE):
$(call curl-checksum)
$(call audit-checksum)
$(call cleanup)
include $(BUILD_PREBUILT)
# the "fetchprebuilts" target will go through and pre-download all of the maven dependencies in the tree
fetchprebuilts: $(LOCAL_PREBUILT_MODULE_FILE)
# the "nukeprebuilts" target will evict all archived artifacts
nukeprebuilts:
@echo "Removing artifact for $(LOCAL_HTTP_FILENAME)"
$(hide) rm -rf $(PREBUILT_MODULE_ARCHIVE)