Dev Launch on Macbook M4 Fails

Hi all,

I tried to setup tutor dev environment on my new Macbook M4 which uses the latest m4 ARM based chip.

I am facing this issue during the setup

the setup is stuck on run npm webpack

=> CACHED \[production 31/37\] RUN npm run compile-sass – --skip-themes                                             0.0s
=> \[production 32/37\] RUN npm run webpack                                                                       1118.7s
=> => #  \[webpack.Progress\] 91% sealing module assets processing
=> => #  \[webpack.Progress\] 91% sealing module assets processing
=> => #  \[webpack.Progress\] 91% sealing chunk assets processing
=> => #  \[webpack.Progress\] 91% sealing chunk assets processing
=> => #  \[webpack.Progress\] 92% sealing asset processing
=> => #  \[webpack.Progress\] 92% sealing asset processing TerserPlugin

entire log

=> CACHED \[code 3/4\] ADD --keep-git-dir=true https://github.com/openedx/edx-platform.git#release/ulmo.1 .          0.0s
=> CACHED \[code 4/4\] RUN git config --global user.email “tutor@overhang.io”   && git config --global user.name "T  0.0s
=> CACHED \[edx-platform 1/1\] COPY --from=code /openedx/edx-platform /                                              0.0s
=> CACHED \[python 1/4\] RUN --mount=type=cache,target=/var/cache/apt,sharing=locked     --mount=type=cache,target=  0.0s
=> CACHED \[python 2/4\] RUN git clone https://github.com/pyenv/pyenv /opt/pyenv --branch v2.3.36 --depth 1          0.0s
=> CACHED \[python 3/4\] RUN /opt/pyenv/bin/pyenv install 3.11.8                                                     0.0s
=> CACHED \[python 4/4\] RUN /opt/pyenv/versions/3.11.8/bin/python -m venv /openedx/venv                             0.0s
=> CACHED \[python-requirements 1/6\] RUN --mount=type=cache,target=/var/cache/apt,sharing=locked     --mount=type=  0.0s
=> CACHED \[python-requirements 2/6\] RUN --mount=type=cache,target=/openedx/.cache/pip,sharing=shared     uv pip i  0.0s
=> CACHED \[python-requirements 3/6\] RUN --mount=type=bind,from=edx-platform,source=/requirements/edx/base.txt,tar  0.0s
=> CACHED \[python-requirements 4/6\] RUN --mount=type=cache,target=/openedx/.cache/pip,sharing=shared     uv pip i  0.0s
=> CACHED \[python-requirements 5/6\] RUN --mount=type=cache,target=/openedx/.cache/pip,sharing=shared     UWSGI_PR  0.0s
=> CACHED \[python-requirements 6/6\] RUN uv pip install “openedx-scorm-xblock>=19.0.0,<20.0.0”                      0.0s
=> CACHED \[nodejs-requirements 1/4\] RUN uv pip install nodeenv==1.9.1                                              0.0s
=> CACHED \[nodejs-requirements 2/4\] RUN nodeenv /openedx/nodeenv --node=24.12.0 --prebuilt                         0.0s
=> CACHED \[nodejs-requirements 3/4\] WORKDIR /openedx/edx-platform                                                  0.0s
=> CACHED \[nodejs-requirements 4/4\] RUN --mount=type=bind,from=edx-platform,source=/package.json,target=/openedx/  0.0s
=> CACHED \[production 11/37\] RUN ln -s /openedx/node_modules /openedx/edx-platform/node_modules                    0.0s
=> CACHED \[production 12/37\] WORKDIR /openedx/edx-platform                                                         0.0s
=> CACHED \[production 13/37\] RUN uv pip install -e .                                                               0.0s
=> CACHED \[production 14/37\] RUN mkdir -p /openedx/config ./lms/envs/tutor ./cms/envs/tutor                        0.0s
=> CACHED \[production 15/37\] COPY --chown=app:app revisions.yml /openedx/config/                                   0.0s
=> CACHED \[production 16/37\] COPY --chown=app:app settings/lms/*.py ./lms/envs/tutor/                              0.0s
=> CACHED \[production 17/37\] COPY --chown=app:app settings/cms/*.py ./cms/envs/tutor/                              0.0s
=> CACHED \[production 18/37\] RUN make clean_translations                                                           0.0s
=> CACHED \[production 19/37\] RUN ./manage.py lms --settings=tutor.i18n pull_plugin_translations --verbose --repos  0.0s
=> CACHED \[production 20/37\] RUN ./manage.py lms --settings=tutor.i18n pull_xblock_translations --repository='ope  0.0s
=> CACHED \[production 21/37\] RUN atlas pull --repository=‘openedx/openedx-translations’ --revision='release/ulmo.  0.0s
=> CACHED \[production 22/37\] RUN ./manage.py lms --settings=tutor.i18n compile_xblock_translations                 0.0s
=> CACHED \[production 23/37\] RUN ./manage.py cms --settings=tutor.i18n compile_xblock_translations                 0.0s
=> CACHED \[production 24/37\] RUN ./manage.py lms --settings=tutor.i18n compile_plugin_translations                 0.0s
=> CACHED \[production 25/37\] RUN ./manage.py lms --settings=tutor.i18n compilemessages -v1                         0.0s
=> CACHED \[production 26/37\] RUN ./manage.py lms --settings=tutor.i18n compilejsi18n                               0.0s
=> CACHED \[production 27/37\] RUN ./manage.py cms --settings=tutor.i18n compilejsi18n                               0.0s
=> CACHED \[production 28/37\] COPY --chown=app:app ./bin /openedx/bin                                               0.0s
=> CACHED \[production 29/37\] RUN chmod a+x /openedx/bin/\*                                                          0.0s
=> CACHED \[production 30/37\] RUN npm run postinstall  # Postinstall artifacts are stuck in nodejs-requirements la  0.0s
=> CACHED \[production 31/37\] RUN npm run compile-sass – --skip-themes                                             0.0s
=> \[production 32/37\] RUN npm run webpack                                                                        779.3s
=> => #  ~~\[webpack.Progress\] 91% sealing module assets processing
=> => #  \[webpack.Progress\] 91% sealing module assets processing
=> => #  \[webpack.Progress\] 91% sealing chunk assets processing
=> => #  \[webpack.Progress\] 91% sealing chunk assets processing
=> => #  \[webpack.Progress\] 92% sealing asset processing
=> => #  \[webpack.Progress\] 92% sealing asset processing TerserPlugin
=> CACHED \[production  4/37\] COPY --link --from=docker.io/powerman/dockerize:0.19.0 /usr/local/bin/dockerize /usr  0.0s
=> CACHED \[production  5/37\] COPY --link --chown=505:505 --from=edx-platform / /openedx/edx-platform               0.0s
=> CACHED \[production  6/37\] COPY --link --chown=505:505 --from=python /opt/pyenv /opt/pyenv                       0.0s
=> CACHED \[production  7/37\] COPY --link --chown=505:505 --from=python-requirements /openedx/venv /openedx/venv    0.0s
=> CACHED \[production  8/37\] COPY --link --chown=505:505 --from=python-requirements /mnt /mnt                      0.0s
=> CACHED \[production  9/37\] COPY --link --chown=505:505 --from=nodejs-requirements /openedx/nodeenv /openedx/nod  0.0s
=> CACHED \[production 10/37\] COPY --link --chown=505:505 --from=nodejs-requirements /openedx/edx-platform/node_mo  0.0s~~

Did anyone face the same issue? Could anyone help me to fix this issue please?

@duraiganesh0 I run the tutor devstack on M4 and have not faced this issue, can you please elaborate on the steps you followed and provide the complete error log?

Hi @farhaanbukhsh,

These are the steps I tried

mkdir devstack_ulmo
cd devstack_ulmo/
python3.12 -m venv tutor-venv
source tutor-venv/bin/activate
pip install “tutor[full]”
tutor --version
export TUTOR_ROOT=/Users/ganesh/tutor
export DOCKER_DEFAULT_PLATFORM=linux/amd64
tutor dev launch

How much RAM have you given to docker? You can check this in your docker dashboard. You can try increasing the RAM there and try again.

I have given 24GB out of 48. Isn’t it enough?

Can you try just building openedx-dev image using tutor images build openedx-dev

ok. Trying tutor images build openedx-dev now

Still the same issue. Its stuck there

 => CACHED [production 31/37] RUN npm run compile-sass -- --skip-themes                                             0.0s
 => [production 32/37] RUN npm run webpack                                                                        602.2s
 => => # <s> [webpack.Progress] 91% sealing module assets processing
 => => # <s> [webpack.Progress] 91% sealing module assets processing
 => => # <s> [webpack.Progress] 91% sealing chunk assets processing
 => => # <s> [webpack.Progress] 91% sealing chunk assets processing
 => => # <s> [webpack.Progress] 92% sealing asset processing
 => => # <s> [webpack.Progress] 92% sealing asset processing TerserPlugin

When you say stuck, how long is it frozen there? I have see that particular step take a while to complete. So, if it’s under 5mins, maybe wait 10-15mins to see if the stage completes.

However, it says CACHED, so I am a little confused. Try tutor images build openedx-dev --no-cache and see if that completes.

I dont know what changed but its working now. Just ran that again and it worked. Thanks everyone for your replies.

1 Like