mirror of
https://github.com/horsicq/DIE-engine
synced 2026-08-09 12:39:07 +00:00
83 lines
2.4 KiB
Bash
83 lines
2.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
X_SOURCE_PATH=$PWD
|
|
X_BUILD_NAME=die_mac_portable
|
|
X_RELEASE_VERSION=$(cat "release_version.txt")
|
|
|
|
BUILD_DIR=$(mktemp -d)
|
|
RELEASE_DIR="$X_SOURCE_PATH/release"
|
|
|
|
cleanup() { rm -rf "$BUILD_DIR"; }
|
|
trap cleanup EXIT
|
|
|
|
mkdir -p "$RELEASE_DIR"
|
|
|
|
QT_PREFIX_PATH="${1:-${QT_PREFIX_PATH:-$HOME/Qt/5.15.2/clang_64}}"
|
|
CMAKE_ARGS=(
|
|
-S "$X_SOURCE_PATH"
|
|
-B "$BUILD_DIR"
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
-DCMAKE_PREFIX_PATH="$QT_PREFIX_PATH"
|
|
-DCMAKE_OSX_ARCHITECTURES="${CMAKE_OSX_ARCHITECTURES:-x86_64}"
|
|
)
|
|
|
|
echo "Configuring..."
|
|
cmake "${CMAKE_ARGS[@]}"
|
|
|
|
echo "Building..."
|
|
cmake --build "$BUILD_DIR" --config Release -- -j$(sysctl -n hw.logicalcpu)
|
|
|
|
APP_BUNDLE=""
|
|
for candidate in \
|
|
"$BUILD_DIR/src/gui/die.app" \
|
|
"$BUILD_DIR/src/gui/DetectItEasy.app" \
|
|
"$BUILD_DIR/src/gui/Release/die.app"
|
|
do
|
|
[ -d "$candidate" ] && APP_BUNDLE="$candidate" && break
|
|
done
|
|
|
|
if [ -z "$APP_BUNDLE" ]; then
|
|
echo "ERROR: app bundle not found under $BUILD_DIR" >&2
|
|
exit 1
|
|
fi
|
|
|
|
RESOURCES="$APP_BUNDLE/Contents/Resources"
|
|
mkdir -p "$RESOURCES/signatures"
|
|
|
|
cp -Rf "$X_SOURCE_PATH/dep/XStyles/qss" "$RESOURCES/"
|
|
cp -Rf "$X_SOURCE_PATH/dep/XInfoDB/info" "$RESOURCES/"
|
|
cp -Rf "$X_SOURCE_PATH/dep/Detect-It-Easy/db" "$RESOURCES/"
|
|
[ -d "$X_SOURCE_PATH/dep/Detect-It-Easy/db_extra" ] && cp -Rf "$X_SOURCE_PATH/dep/Detect-It-Easy/db_extra" "$RESOURCES/"
|
|
cp -Rf "$X_SOURCE_PATH/dep/XYara/yara_rules" "$RESOURCES/"
|
|
cp -Rf "$X_SOURCE_PATH/images" "$RESOURCES/"
|
|
[ -f "$X_SOURCE_PATH/dep/signatures/crypto.db" ] && cp -f "$X_SOURCE_PATH/dep/signatures/crypto.db" "$RESOURCES/signatures/"
|
|
|
|
# Copy diec into the bundle
|
|
DIEC_BIN=$(find "$BUILD_DIR/src/console" -maxdepth 2 -name "diec" -type f | head -1)
|
|
[ -n "$DIEC_BIN" ] && cp -f "$DIEC_BIN" "$APP_BUNDLE/Contents/MacOS/"
|
|
|
|
# macdeployqt (handled by cmake POST_BUILD, but run again as safety net)
|
|
MACDEPLOYQT=""
|
|
for candidate in \
|
|
"$QT_PREFIX_PATH/bin/macdeployqt" \
|
|
"$QT_PREFIX_PATH/../bin/macdeployqt"
|
|
do
|
|
[ -x "$candidate" ] && MACDEPLOYQT="$candidate" && break
|
|
done
|
|
|
|
if [ -n "$MACDEPLOYQT" ]; then
|
|
"$MACDEPLOYQT" "$APP_BUNDLE" -always-overwrite
|
|
fi
|
|
|
|
PACKAGE_DIR="$RELEASE_DIR/$X_BUILD_NAME"
|
|
rm -rf "$PACKAGE_DIR"
|
|
mkdir -p "$PACKAGE_DIR"
|
|
cp -R "$APP_BUNDLE" "$PACKAGE_DIR/"
|
|
|
|
cd "$RELEASE_DIR"
|
|
ZIP_NAME="die_${X_RELEASE_VERSION}_mac_portable.zip"
|
|
zip -r "$ZIP_NAME" "$X_BUILD_NAME"
|
|
rm -rf "$PACKAGE_DIR"
|
|
echo "Created: $RELEASE_DIR/$ZIP_NAME"
|