[Makefile]: Make AltBackup.ipa generation more robust

This commit is contained in:
Magesh K
2024-12-14 18:14:14 +05:30
parent f7efb6569e
commit 7d2a6a9189
2 changed files with 46 additions and 21 deletions

View File

@@ -2534,7 +2534,7 @@
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "#!/bin/sh\n\necho \"Build directory: $BUILD_DIR\"\necho \"Configuration build directory: $CONFIGURATION_BUILD_DIR\"\n\necho \">>>>>>>>> Xcode-Derived-Data <<<<<<<<<<\"\nfind \"$BUILD_DIR\" -maxdepth 7 -exec ls -ld {} + || true # List contents if directory exists \n# ls -la ~/Library/Developer/Xcode/DerivedData || true # List contents if directory exists \necho \"\"\n\n# diagnostics\n# exit 0\n\n# Define the path to your Makefile\nMAKEFILE_PATH=\"${PROJECT_DIR}/\"\n\n# Navigate to the directory containing the Makefile\ncd \"$MAKEFILE_PATH\" || exit 1\n\n# Run the make target 'ipa-altbackup'\nmake -B ipa-altbackup\n\n# Ensure that the ipa-altbackup process finishes before continuing\nif [ $? -ne 0 ]; then\n echo \"Error: ipa-altbackup failed\"\n exit 1\nelse\n echo \"ipa-altbackup completed successfully\"\nfi\n# Type a script or drag a script file from your workspace to insert its path.\n"; shellScript = "#!/bin/sh\n\necho \"Build directory: $BUILD_DIR\"\necho \"Configuration build directory: $CONFIGURATION_BUILD_DIR\"\n\n# diagnostics\n# echo \">>>>>>>>> Xcode-Derived-Data <<<<<<<<<<\"\n# find \"$BUILD_DIR\" -maxdepth 7 -exec ls -ld {} + || true # List contents if directory exists \n# # ls -la ~/Library/Developer/Xcode/DerivedData || true # List contents if directory exists \n# echo \"\"\n\n# diagnostics\n# exit 0\n\n# Define the path to your Makefile\nMAKEFILE_PATH=\"${PROJECT_DIR}/\"\n\n# Navigate to the directory containing the Makefile\ncd \"$MAKEFILE_PATH\" || exit 1\n\n# Run the make target 'ipa-altbackup'\nmake -B copy-altbackup ipa-altbackup\n\n# Ensure that the ipa-altbackup process finishes before continuing\nif [ $? -ne 0 ]; then\n echo \"Error: ipa-altbackup failed\"\n exit 1\nelse\n echo \"ipa-altbackup completed successfully\"\nfi\n# Type a script or drag a script file from your workspace to insert its path.\n";
}; };
AEDB4E9409D2CEE1EA126980 /* [CP] Check Pods Manifest.lock */ = { AEDB4E9409D2CEE1EA126980 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;

View File

@@ -182,11 +182,15 @@ ipa:
# Global Variables # Global Variables
# Ensure this is set by the environment or passed as an argument # Ensure this is set by the environment or passed as an argument
CONFIGURATION_BUILD_DIR ?= # this is the path to your main app (possibly in derived-data unless changed manually)
CODESIGNING_FOLDER_PATH ?= # this is the path to your main app (possibly in derived-data unless changed manually) CODESIGNING_FOLDER_PATH ?= # this is the path to your main app (possibly in derived-data unless changed manually)
APP_PATH := "$(CODESIGNING_FOLDER_PATH)" # CONFIGURATION_BUILD_DIR = # this is the path to your main app (possibly in derived-data unless changed manually)
APP_PATH := $(if $(APP_PATH),$(APP_PATH),$(CONFIGURATION_BUILD_DIR)) # CODESIGNING_FOLDER_PATH = # this is the path to your main app (possibly in derived-data unless changed manually)
VAR_USED := $(if $(CODESIGNING_FOLDER_PATH),"CODESIGNING_FOLDER_PATH","CONFIGURATION_BUILD_DIR")
ROOT_DIR := $(CONFIGURATION_BUILD_DIR)
ROOT_DIR := $(if $(ROOT_DIR),$(ROOT_DIR),$(CODESIGNING_FOLDER_PATH)/..)
VAR_USED := $(if $(CONFIGURATION_BUILD_DIR),"CONFIGURATION_BUILD_DIR","CODESIGNING_FOLDER_PATH")
TARGET_BUILD_DIR := build TARGET_BUILD_DIR := build
TARGET_ARCHIVE_DIR := altbackup.xcarchive TARGET_ARCHIVE_DIR := altbackup.xcarchive
@@ -195,17 +199,33 @@ TARGET_DSYM_NAME := AltBackup.app.dSYM
TARGET_IPA_NAME := AltBackup.ipa TARGET_IPA_NAME := AltBackup.ipa
ALT_APP_SRC_PARENT := $(shell readlink -f "$(APP_PATH)/..") ALT_APP_SRC_PARENT := $(shell readlink -f "$(ROOT_DIR)")
ALT_APP_SRC := $(shell readlink -f "$(ALT_APP_SRC_PARENT)/$(TARGET_NAME)") ALT_APP_SRC := $(ALT_APP_SRC_PARENT)/$(TARGET_NAME)
ALT_APP_DSYM_SRC := $(shell readlink -f "$(ALT_APP_SRC_PARENT)/$(TARGET_DSYM_NAME)") ALT_APP_DSYM_SRC := $(ALT_APP_SRC_PARENT)/$(TARGET_DSYM_NAME)
ALT_APP_DST_ARCHIVE := "$(TARGET_BUILD_DIR)/$(TARGET_ARCHIVE_DIR)" ALT_APP_DST_ARCHIVE := "$(TARGET_BUILD_DIR)/$(TARGET_ARCHIVE_DIR)"
ALT_APP_DST := "$(ALT_APP_DST_ARCHIVE)/Products/Applications/$(TARGET_NAME)" ALT_APP_DST := "$(ALT_APP_DST_ARCHIVE)/Products/Applications/$(TARGET_NAME)"
ALT_APP_DSYM_DST := "$(ALT_APP_DST_ARCHIVE)/dSYMs/$(TARGET_DSYM_NAME)" ALT_APP_DSYM_DST := "$(ALT_APP_DST_ARCHIVE)/dSYMs/$(TARGET_DSYM_NAME)"
ALT_APP_PAYLOAD_DST := "$(ALT_APP_DST_ARCHIVE)/Payload" ALT_APP_PAYLOAD_DST := "$(ALT_APP_DST_ARCHIVE)/Payload"
ALT_APP_IPA_DST := "$(TARGET_BUILD_DIR)/$(TARGET_IPA_NAME)" ALT_APP_IPA_DST := "$(TARGET_BUILD_DIR)/$(TARGET_IPA_NAME)"
copy-altbackup: checkPaths:
@# @echo " Copying archive data from '$(ALT_APP_SRC_PARENT)'" @# Check if ALT_APP_SRC_PARENT is empty, abort if true
@if [ -z "$(ALT_APP_SRC_PARENT)" ]; then \
echo "Error: ALT_APP_SRC_PARENT is empty!"; \
echo " Environment variable $$VAR_USED = $$APP_PATH"; \
echo " Please set it to a valid build artifacts directory"; \
echo ""; \
exit 1; \
fi
copy-altbackup: checkPaths
@echo ''
@echo " CONFIGURATION_BUILD_DIR = '$(CONFIGURATION_BUILD_DIR)'"
@echo " CODESIGNING_FOLDER_PATH = '$(CODESIGNING_FOLDER_PATH)'"
@echo " Copying archive data from ALT_APP_SRC_PARENT = '$(ALT_APP_SRC_PARENT)'"
@echo ''
@bash -c '\ @bash -c '\
SOURCES=("$(ALT_APP_SRC)" "$(ALT_APP_DSYM_SRC)"); \ SOURCES=("$(ALT_APP_SRC)" "$(ALT_APP_DSYM_SRC)"); \
TARGETS=("$(ALT_APP_DST)" "$(ALT_APP_DSYM_DST)"); \ TARGETS=("$(ALT_APP_DST)" "$(ALT_APP_DSYM_DST)"); \
@@ -218,16 +238,20 @@ copy-altbackup:
\ \
echo " Copying $$TGT_NAME from \"$$SRC\""; \ echo " Copying $$TGT_NAME from \"$$SRC\""; \
if [ ! -d "$$SRC" ]; then \ if [ ! -d "$$SRC" ]; then \
echo "Error: $$TGT_NAME not found in \"$$SRC\""; \ echo "SRC=$$SRC ALT_APP_DSYM_SRC=$(ALT_APP_DSYM_SRC)"; \
echo " Environment variable $(VAR_USED) = $(APP_PATH)"; \ if [ "$$SRC" == "$(ALT_APP_DSYM_SRC)" ]; then \
echo " Please set it to a valid build artifacts directory"; \ echo "Warning: $$TGT_NAME not found in \"$$SRC\" - IGNORED"; \
echo ""; \ echo ""; \
exit 1; \ else \
echo "Error: $$TGT_NAME not found in \"$$SRC\""; \
echo ""; \
exit 1; \
fi \
else \ else \
echo " Copied $$TGT_NAME into TARGET = $$TGT"; \
rm -rf "$$TGT"; \ rm -rf "$$TGT"; \
mkdir -p "$$TGT"; \ mkdir -p "$$TGT"; \
cp -R "$(ALT_APP_SRC_PARENT)/$$TGT_NAME" "$${TGT%/*}"; \ cp -R "$(ALT_APP_SRC_PARENT)/$(TGT_NAME)" "$$TGT"; \
echo " Copied $$TGT_NAME into TARGET = $$TGT"; \
echo ""; \ echo ""; \
fi; \ fi; \
done \ done \
@@ -242,13 +266,14 @@ copy-altbackup:
# @echo " fakesign completed" # @echo " fakesign completed"
# @echo "" # @echo ""
# ipa-altbackup: fakesign-altbackup # ipa-altbackup:
ipa-altbackup: copy-altbackup ipa-altbackup: checkPaths copy-altbackup
# ipa-altbackup: checkPaths copy-altbackup fakesign-altbackup
@echo " Creating IPA for AltBackup" @echo " Creating IPA for AltBackup"
@rm -rf "$(ALT_APP_PAYLOAD_DST)" @rm -rf "$(ALT_APP_PAYLOAD_DST)"
@mkdir -p "$(ALT_APP_PAYLOAD_DST)/$(TARGET_NAME)" @mkdir -p "$(ALT_APP_PAYLOAD_DST)/$(TARGET_NAME)"
@#### @chmod -R 777 "$(ALT_APP_PAYLOAD_DST)" || true @echo " Copying from $(ALT_APP_SRC) into $(ALT_APP_PAYLOAD_DST)"
@cp -R "$(ALT_APP_SRC)" "$(ALT_APP_PAYLOAD_DST)" @cp -R -f "$(ALT_APP_SRC)/" "$(ALT_APP_PAYLOAD_DST)/$(TARGET_NAME)"
@pushd "$(ALT_APP_DST_ARCHIVE)" && zip -r "../../$(ALT_APP_IPA_DST)" Payload && popd @pushd "$(ALT_APP_DST_ARCHIVE)" && zip -r "../../$(ALT_APP_IPA_DST)" Payload && popd
@cp "$(ALT_APP_IPA_DST)" AltStore/Resources @cp -f "$(ALT_APP_IPA_DST)" AltStore/Resources
@echo " IPA created: AltStore/Resources/AltBackup.ipa" @echo " IPA created: AltStore/Resources/AltBackup.ipa"