b91fbf3f8e
* ci: Fix improper copying of macOS artifacts. * ci: Resign universal macOS app after combining.
51 lines
1.7 KiB
Bash
Executable file
51 lines
1.7 KiB
Bash
Executable file
#!/bin/bash -ex
|
|
|
|
. .ci/common/pre-upload.sh
|
|
|
|
REV_NAME="citra-osx-${GITDATE}-${GITREV}"
|
|
ARCHIVE_NAME="${REV_NAME}.tar.gz"
|
|
COMPRESSION_FLAGS="-czvf"
|
|
|
|
ARTIFACTS_LIST=($ARTIFACTS)
|
|
|
|
# Set up the base artifact to combine into.
|
|
BASE_ARTIFACT=${ARTIFACTS_LIST[0]}
|
|
BASE_ARTIFACT_ARCH="${BASE_ARTIFACT##*-}"
|
|
tar xf $BASE_ARTIFACT/$REV_NAME.tar.gz -C $BASE_ARTIFACT
|
|
mv $BASE_ARTIFACT/$REV_NAME $REV_NAME
|
|
|
|
# Executable binary paths that need to be combined.
|
|
BIN_PATHS=(citra citra-room citra-qt.app/Contents/MacOS/citra-qt)
|
|
|
|
# Dylib paths that need to be combined.
|
|
IFS=$'\n'
|
|
DYLIB_PATHS=($(cd $REV_NAME && find . -name '*.dylib'))
|
|
unset IFS
|
|
|
|
# Combine all of the executable binaries and dylibs.
|
|
for OTHER_ARTIFACT in "${ARTIFACTS_LIST[@]:1}"; do
|
|
OTHER_ARTIFACT_ARCH="${OTHER_ARTIFACT##*-}"
|
|
|
|
tar xf $OTHER_ARTIFACT/$REV_NAME.tar.gz -C $OTHER_ARTIFACT
|
|
|
|
for BIN_PATH in "${BIN_PATHS[@]}"; do
|
|
lipo -create -output $REV_NAME/$BIN_PATH $REV_NAME/$BIN_PATH $OTHER_ARTIFACT/$REV_NAME/$BIN_PATH
|
|
done
|
|
|
|
for DYLIB_PATH in "${DYLIB_PATHS[@]}"; do
|
|
# Only merge if the libraries do not have conflicting arches, otherwise it will fail.
|
|
DYLIB_INFO=`file $REV_NAME/$DYLIB_PATH`
|
|
OTHER_DYLIB_INFO=`file $OTHER_ARTIFACT/$REV_NAME/$DYLIB_PATH`
|
|
if ! [[ "$DYLIB_INFO" =~ "$OTHER_ARTIFACT_ARCH" ]] && ! [[ "$OTHER_DYLIB_INFO" =~ "$BASE_ARTIFACT_ARCH" ]]; then
|
|
lipo -create -output $REV_NAME/$DYLIB_PATH $REV_NAME/$DYLIB_PATH $OTHER_ARTIFACT/$REV_NAME/$DYLIB_PATH
|
|
fi
|
|
done
|
|
done
|
|
|
|
# Re-sign executables and bundles after combining.
|
|
APP_PATHS=(citra citra-room citra-qt.app)
|
|
for APP_PATH in "${APP_PATHS[@]}"; do
|
|
codesign --deep -fs - $REV_NAME/$APP_PATH
|
|
done
|
|
|
|
. .ci/common/post-upload.sh
|