diff --git a/.github/workflows/fast_tests.yml b/.github/workflows/fast_tests.yml index ad4938970..cd34313f0 100644 --- a/.github/workflows/fast_tests.yml +++ b/.github/workflows/fast_tests.yml @@ -57,7 +57,11 @@ jobs: # It runs everytime we commit to a PR or push to main fast-pytest-tests: name: Fast Pytest Tests - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest] env: MUJOCO_GL: egl steps: @@ -67,12 +71,16 @@ jobs: lfs: true # TODO(Steven): Evaluate the need of these dependencies - - name: Install apt dependencies + - name: Install dependencies run: | - sudo apt-get update && sudo apt-get install -y build-essential git \ - curl libglib2.0-0 libegl1-mesa-dev ffmpeg \ - libusb-1.0-0-dev speech-dispatcher libgeos-dev portaudio19-dev - + if [[ "${{ matrix.os }}" == 'ubuntu-latest' ]]; then + sudo apt-get update && sudo apt-get install -y build-essential \ + git curl libglib2.0-0 libegl1-mesa-dev ffmpeg libusb-1.0-0-dev \ + speech-dispatcher libgeos-dev portaudio19-dev + elif [[ "${{ matrix.os }}" == 'macos-latest' ]]; then + brew update && brew install git geos portaudio ffmpeg@7 + echo "DYLD_LIBRARY_PATH=/opt/homebrew/opt/ffmpeg@7/lib:/opt/homebrew/lib:/usr/local/lib:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV + fi - name: Setup uv and Python uses: astral-sh/setup-uv@v6 # zizmor: ignore[unpinned-uses] with: diff --git a/.github/workflows/full_tests.yml b/.github/workflows/full_tests.yml index d16fe5e72..34c959c35 100644 --- a/.github/workflows/full_tests.yml +++ b/.github/workflows/full_tests.yml @@ -51,7 +51,11 @@ jobs: # It runs everytime a PR is approved or a push to main full-tests: name: Full Tests - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest] if: | (github.event_name == 'pull_request_review' && github.event.review.state == 'approved') || github.event_name == 'push' || @@ -64,11 +68,16 @@ jobs: lfs: true persist-credentials: false - - name: Install apt dependencies + - name: Install dependencies run: | - sudo apt-get update && sudo apt-get install -y build-essential \ - git curl libglib2.0-0 libegl1-mesa-dev ffmpeg libusb-1.0-0-dev \ - speech-dispatcher libgeos-dev portaudio19-dev + if [[ "${{ matrix.os }}" == 'ubuntu-latest' ]]; then + sudo apt-get update && sudo apt-get install -y build-essential \ + git curl libglib2.0-0 libegl1-mesa-dev ffmpeg libusb-1.0-0-dev \ + speech-dispatcher libgeos-dev portaudio19-dev + elif [[ "${{ matrix.os }}" == 'macos-latest' ]]; then + brew update && brew install git geos portaudio ffmpeg@7 + echo "DYLD_LIBRARY_PATH=/opt/homebrew/opt/ffmpeg@7/lib:/opt/homebrew/lib:/usr/local/lib:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV + fi - name: Setup uv and Python uses: astral-sh/setup-uv@v6 # zizmor: ignore[unpinned-uses] diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 67aa5186b..18de56f71 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -120,7 +120,11 @@ jobs: test-release: name: Test Release needs: [build-and-publish] - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest] permissions: contents: read env: @@ -130,11 +134,16 @@ jobs: with: lfs: true persist-credentials: false - - name: Install apt dependencies + - name: Install dependencies run: | - sudo apt-get update && sudo apt-get install -y build-essential \ - git curl libglib2.0-0 libegl1-mesa-dev ffmpeg libusb-1.0-0-dev \ - speech-dispatcher libgeos-dev portaudio19-dev + if [[ "${{ matrix.os }}" == 'ubuntu-latest' ]]; then + sudo apt-get update && sudo apt-get install -y build-essential \ + git curl libglib2.0-0 libegl1-mesa-dev ffmpeg libusb-1.0-0-dev \ + speech-dispatcher libgeos-dev portaudio19-dev + elif [[ "${{ matrix.os }}" == 'macos-latest' ]]; then + brew update && brew install git geos portaudio ffmpeg@7 + echo "DYLD_LIBRARY_PATH=/opt/homebrew/opt/ffmpeg@7/lib:/opt/homebrew/lib:/usr/local/lib:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV + fi - name: Setup uv and Python uses: astral-sh/setup-uv@v6 # zizmor: ignore[unpinned-uses] with: diff --git a/.github/workflows/unbound_deps_tests.yml b/.github/workflows/unbound_deps_tests.yml index 902074a83..990afbe6d 100644 --- a/.github/workflows/unbound_deps_tests.yml +++ b/.github/workflows/unbound_deps_tests.yml @@ -42,7 +42,11 @@ jobs: # This job runs the E2E tests + pytest with all unbound extras full-tests: name: Full Unbound Tests - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest] env: MUJOCO_GL: egl steps: @@ -51,11 +55,16 @@ jobs: lfs: true persist-credentials: false - - name: Install apt dependencies + - name: Install dependencies run: | - sudo apt-get update && sudo apt-get install -y build-essential \ - git curl libglib2.0-0 libegl1-mesa-dev ffmpeg libusb-1.0-0-dev \ - speech-dispatcher libgeos-dev portaudio19-dev + if [[ "${{ matrix.os }}" == 'ubuntu-latest' ]]; then + sudo apt-get update && sudo apt-get install -y build-essential \ + git curl libglib2.0-0 libegl1-mesa-dev ffmpeg libusb-1.0-0-dev \ + speech-dispatcher libgeos-dev portaudio19-dev + elif [[ "${{ matrix.os }}" == 'macos-latest' ]]; then + brew update && brew install git geos portaudio ffmpeg@7 + echo "DYLD_LIBRARY_PATH=/opt/homebrew/opt/ffmpeg@7/lib:/opt/homebrew/lib:/usr/local/lib:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV + fi - name: Setup uv and Python uses: astral-sh/setup-uv@v6 # zizmor: ignore[unpinned-uses] diff --git a/pyproject.toml b/pyproject.toml index c67b481f0..1dc0206e3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,6 +64,7 @@ dependencies = [ "huggingface-hub[hf-transfer,cli]>=0.34.2,<0.36.0", # Core dependencies + "setuptools>=71.0.0,<81.0.0", "cmake>=3.29.0.1,<4.2.0", "einops>=0.8.0,<0.9.0", "opencv-python-headless>=4.9.0,<4.13.0",