Skip to content

Commit

Permalink
fix: ensure mounted installable packages are installed as expected
Browse files Browse the repository at this point in the history
Close #1016.
  • Loading branch information
DawoudSheraz authored Mar 21, 2024
1 parent f211b98 commit 0e37449
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 27 deletions.
1 change: 1 addition & 0 deletions changelog.d/20240315_163331_dawoud.sheraz_tutor_997.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- [BugFix] Ensure mounted installable packages are installed as expected upon initialization. (by @dawoudsheraz)
2 changes: 1 addition & 1 deletion tutor/commands/jobs.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def _add_core_init_tasks() -> None:
hooks.Filters.CLI_DO_INIT_TASKS.add_item(
(
"lms",
env.read_core_template_file("jobs", "init", "mounted-edx-platform.sh"),
env.read_core_template_file("jobs", "init", "mounted-directories.sh"),
),
# If edx-platform is mounted, then we may need to perform some setup
# before other initialization scripts can be run.
Expand Down
43 changes: 43 additions & 0 deletions tutor/templates/jobs/init/mounted-directories.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# The initialization job contains various re-install operations needed to be done
# on mounted directories (edx-platform, /mnt/*xblock, /mnt/<edx-ora, search, enterprise>)
# 1. /mnt/*
# Whenever xblocks or other installable packages are mounted, during the image build, they are copied over to container
# and installed. This results in egg_info generation for the mounted directories. However, the egg_info is not carried
# over to host. When the containers are launched, the host directories without egg_info are mounted on runtime
# and disappear from pip list.
#
# 2. edx-platform
# When a new local copy of edx-platform is bind-mounted, certain build
# artifacts from the openedx image's edx-platform directory are lost.
# We regenerate them here.


for mounted_dir in /mnt/*; do
if [ -f $mounted_dir/setup.py ] && ! ls $mounted_dir/*.egg-info >/dev/null 2>&1 ; then
echo "Unable to locate egg-info in $mounted_dir"
pip install -e $mounted_dir
fi
done

if [ -f /openedx/edx-platform/bindmount-canary ] ; then
# If this file exists, then edx-platform has not been bind-mounted,
# so no build artifacts need to be regenerated.
echo "Using edx-platform from image (not bind-mount)."
echo "No extra setup is required."
exit
fi

echo "Performing additional setup for bind-mounted edx-platform."
set -x # Echo out executed lines

# Regenerate Open_edX.egg-info
pip install -e .

# Regenerate node_modules
npm clean-install

# Regenerate static assets.
openedx-assets build --env=dev

set -x
echo "Done setting up bind-mounted edx-platform."
26 changes: 0 additions & 26 deletions tutor/templates/jobs/init/mounted-edx-platform.sh

This file was deleted.

0 comments on commit 0e37449

Please sign in to comment.