diff --git a/.gitea/workflows/unreal-build.yml b/.gitea/workflows/unreal-build.yml index 369a646a..a02f809e 100644 --- a/.gitea/workflows/unreal-build.yml +++ b/.gitea/workflows/unreal-build.yml @@ -55,176 +55,73 @@ jobs: lfs: true fetch-depth: 0 - - name: Setup Unreal Engine - timeout-minutes: 5 # Add timeout to prevent hanging - run: | - # Set environment variable with the correct Engine path - UE_PATH="/Users/Shared/Epic Games/UE_5.5" - echo "UE_ROOT=$UE_PATH/Engine" >> $GITHUB_ENV - - echo "UE_PATH=$UE_PATH" >> $GITHUB_ENV - source $GITHUB_ENV - - echo "Unreal Engine paths:" - echo "UE_ROOT=$UE_ROOT" - echo "UE_PATH=$UE_PATH" - - # Set up MuJoCo library - MUJOCO_LIB_DIR="Plugins/LuckyMujoco/Source/ThirdParty/Mujoco/lib" - mkdir -p "$MUJOCO_LIB_DIR" - - # Try to find mujoco.dylib in the repository - if [ -f "Plugins/UEMujoco.rar" ]; then - echo "Found UEMujoco.rar, attempting to extract..." - mkdir -p /tmp/mujoco_extract - unrar x "Plugins/UEMujoco.rar" /tmp/mujoco_extract || echo "Failed to extract UEMujoco.rar" + - name: Setup Unreal Engine + run: | + # Use the correct path where Unreal Engine is installed + UE_PATH="/Users/Shared/Epic Games/UE_5.5" - # Look for mujoco.dylib in extracted files - DYLIB_PATH=$(find /tmp/mujoco_extract -name "mujoco.dylib" | head -1) - if [ -n "$DYLIB_PATH" ]; then - echo "Found mujoco.dylib at $DYLIB_PATH" - cp "$DYLIB_PATH" "$MUJOCO_LIB_DIR/" - else - echo "Could not find mujoco.dylib in extracted files" - fi - fi - - # If still no dylib, try to download it - if [ ! -f "$MUJOCO_LIB_DIR/mujoco.dylib" ]; then - echo "Attempting to download mujoco.dylib..." - curl -L -o "$MUJOCO_LIB_DIR/mujoco.dylib" "https://github.com/deepmind/mujoco/releases/download/2.3.7/mujoco-2.3.7-macos-universal2.dmg" - fi - - # Verify the library exists - if [ ! -f "$MUJOCO_LIB_DIR/mujoco.dylib" ]; then - echo "ERROR: Failed to set up mujoco.dylib" - exit 1 - fi - - # Make sure the library is executable - chmod +x "$MUJOCO_LIB_DIR/mujoco.dylib" - - # Try multiple locations for the mujoco library - # 1. Create directory in Engine/Source - mkdir -p "$UE_ROOT/Source" - echo "Created directory: $UE_ROOT/Source" - - # 2. Copy the library directly (don't rely on symlinks) - cp "$(pwd)/$MUJOCO_LIB_DIR/mujoco.dylib" "$UE_ROOT/Source/" - echo "Copied library to: $UE_ROOT/Source/mujoco.dylib" - - # 3. Also copy to Binaries/Mac directory - mkdir -p "$UE_ROOT/Binaries/Mac" - cp "$(pwd)/$MUJOCO_LIB_DIR/mujoco.dylib" "$UE_ROOT/Binaries/Mac/" - echo "Copied library to: $UE_ROOT/Binaries/Mac/mujoco.dylib" - - # 4. Add a fallback into /usr/local/lib - sudo mkdir -p /usr/local/lib - sudo cp "$(pwd)/$MUJOCO_LIB_DIR/mujoco.dylib" /usr/local/lib/ - echo "Copied library to: /usr/local/lib/mujoco.dylib" - - # Verify library files exist - echo "Verifying library placements:" - ls -la "$(pwd)/$MUJOCO_LIB_DIR" - ls -la "$UE_ROOT/Source" || echo "Failed to list Source directory" - ls -la "$UE_ROOT/Binaries/Mac" || echo "Failed to list Binaries/Mac directory" - ls -la /usr/local/lib/mujoco.dylib || echo "Failed to list library in /usr/local/lib" - - # Set up environment for the build - export DYLD_LIBRARY_PATH="$(pwd)/Plugins/LuckyMujoco/Source/ThirdParty/Mujoco/lib:$UE_ROOT/Source:$UE_ROOT/Binaries/Mac:/usr/local/lib:$DYLD_LIBRARY_PATH" - export DYLD_FRAMEWORK_PATH="$UE_ROOT/Binaries/Mac:$DYLD_FRAMEWORK_PATH" - export DYLD_FALLBACK_LIBRARY_PATH="$UE_ROOT/Binaries/Mac:$UE_ROOT/Source:/usr/local/lib:$DYLD_FALLBACK_LIBRARY_PATH" - - echo "Build environment:" - echo "DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH" - echo "DYLD_FRAMEWORK_PATH=$DYLD_FRAMEWORK_PATH" - echo "DYLD_FALLBACK_LIBRARY_PATH=$DYLD_FALLBACK_LIBRARY_PATH" - - - - name: Build Unreal Project - run: | - # Debug information - echo "=== Environment Information ===" - echo "macOS Version:" - sw_vers - echo "Current working directory: $(pwd)" - echo "DYLD_LIBRARY_PATH: $DYLD_LIBRARY_PATH" - echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH" - - # Find the project file - UPROJECT_PATH=$(find . -name "*.uproject" -type f | head -1) - if [ -z "$UPROJECT_PATH" ]; then - echo "Error: Could not find .uproject file" - exit 1 - fi - - # Get absolute path - UPROJECT_ABSOLUTE_PATH=$(realpath "$UPROJECT_PATH") - echo "Project path: $UPROJECT_ABSOLUTE_PATH" - - # Ensure the MuJoCo library is in place - PROJECT_MUJOCO_DIR="Plugins/LuckyMujoco/Source/ThirdParty/Mujoco/lib" - PROJECT_MUJOCO_PATH="$PROJECT_MUJOCO_DIR/mujoco.dylib" - - if [ ! -f "$PROJECT_MUJOCO_PATH" ]; then - echo "Recreating library in project directory..." - mkdir -p "$PROJECT_MUJOCO_DIR" - echo "/* Dummy MuJoCo library */" > "$PROJECT_MUJOCO_PATH" - chmod +x "$PROJECT_MUJOCO_PATH" - fi - - echo "Available libraries:" - ls -la "$PROJECT_MUJOCO_DIR" - ls -la /tmp/mujoco.dylib 2>/dev/null || echo "No library in /tmp" - - # Set up environment explicitly for this command - export DYLD_LIBRARY_PATH="/tmp:$(pwd)/$PROJECT_MUJOCO_DIR:$DYLD_LIBRARY_PATH" - export LD_LIBRARY_PATH="/tmp:$(pwd)/$PROJECT_MUJOCO_DIR:$LD_LIBRARY_PATH" - - - # Run the build using absolute paths - chmod +x "$UE_ROOT/Build/BatchFiles/RunUAT.sh" - - # Source environment variables again to ensure they are properly set - source $GITHUB_ENV - - # Set up runtime environment for the build - export DYLD_LIBRARY_PATH="$(pwd)/Plugins/LuckyMujoco/Source/ThirdParty/Mujoco/lib:$UE_ROOT/Source:$UE_ROOT/Binaries/Mac:/usr/local/lib:$DYLD_LIBRARY_PATH" - export DYLD_FRAMEWORK_PATH="$UE_ROOT/Binaries/Mac:$DYLD_FRAMEWORK_PATH" - export DYLD_FALLBACK_LIBRARY_PATH="$UE_ROOT/Binaries/Mac:$UE_ROOT/Source:/usr/local/lib:$DYLD_FALLBACK_LIBRARY_PATH" - - echo "Final build environment:" - echo "UE_ROOT=$UE_ROOT" - echo "UE_PATH=$UE_PATH" - echo "DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH" - - echo "Checking for mujoco.dylib in key locations:" - ls -l "$UE_ROOT/Source/mujoco.dylib" || echo "Library not found in $UE_ROOT/Source" - ls -l "$UE_ROOT/Binaries/Mac/mujoco.dylib" || echo "Library not found in $UE_ROOT/Binaries/Mac" - ls -l "/usr/local/lib/mujoco.dylib" || echo "Library not found in /usr/local/lib" - - # Run the build with additional debug output - echo "Running build command..." - - - "$UE_ROOT/Build/BatchFiles/RunUAT.sh" BuildCookRun \ - -project="$UPROJECT_ABSOLUTE_PATH" \ - -noP4 \ - -platform=Mac \ - -clientconfig=Development \ - -cook -build -stage -pak -archive \ - -archivedirectory="$(pwd)/Build" || { - echo "Build failed with status: $?" - echo "=== Error details ===" - if [ -f "/Users/m1/Library/Logs/Unreal Engine/LocalBuildLogs/UBA-LuckyrobotsEditor-Mac-Development.txt" ]; then - tail -n 100 "/Users/m1/Library/Logs/Unreal Engine/LocalBuildLogs/UBA-LuckyrobotsEditor-Mac-Development.txt" - fi + if [ ! -d "$UE_PATH" ]; then + echo "Error: Unreal Engine is not installed in the expected location" + echo "Please ensure Unreal Engine is installed at $UE_PATH" exit 1 - } - - - name: Upload build artifacts - uses: actions/upload-artifact@v3 - with: - name: macos-build - path: Build/ - retention-days: 7 + fi + + # Set environment variable with the correct Engine path + echo "UE_ROOT=$UE_PATH/Engine" >> $GITHUB_ENV + echo "Using Unreal Engine 5.5" + + - name: Build Unreal Project + run: | + # Debug information + echo "=== Environment Information ===" + echo "macOS Version:" + sw_vers + echo "Current working directory: $(pwd)" + ls -la # List all files in current directory + + echo "=== Unreal Engine Information ===" + ls -la "$UE_ROOT/Build/BatchFiles" + + echo "=== Project Information ===" + # Detailed search for the project file + echo "Searching for .uproject files:" + find . -name "*.uproject" -type f + + # Get the absolute path of the project file + UPROJECT_PATH=$(find . -name "*.uproject" -type f | head -1) + if [ -z "$UPROJECT_PATH" ]; then + echo "Error: Could not find .uproject file" + exit 1 + fi + + # Convert to absolute path and verify file exists + UPROJECT_ABSOLUTE_PATH=$(realpath "$UPROJECT_PATH") + echo "Project absolute path: $UPROJECT_ABSOLUTE_PATH" + + if [ ! -f "$UPROJECT_ABSOLUTE_PATH" ]; then + echo "Error: Project file does not exist at: $UPROJECT_ABSOLUTE_PATH" + exit 1 + fi + + echo "Using Unreal Engine at: $UE_ROOT" + + # Make the project file readable and executable + chmod 755 "$UPROJECT_ABSOLUTE_PATH" + + # Run the build using absolute paths + chmod +x "$UE_ROOT/Build/BatchFiles/RunUAT.sh" + "$UE_ROOT/Build/BatchFiles/RunUAT.sh" BuildCookRun \ + -project="$UPROJECT_ABSOLUTE_PATH" \ + -noP4 \ + -platform=Mac \ + -clientconfig=Development \ + -serverconfig=Shipping \ + -cook -build -stage -pak -archive \ + -archivedirectory="$(pwd)/Builds" + + - name: Upload build artifacts + uses: actions/upload-artifact@v3 + with: + name: macos-build + path: Builds/ + retention-days: 7