aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/python/devcontainer-feature.json2
-rwxr-xr-xsrc/python/install.sh39
-rwxr-xr-xtest/python/install_additional_jupyterlab.sh2
-rwxr-xr-xtest/python/install_jupyterlab.sh2
-rw-r--r--test/python/install_jupyterlab_debian.sh22
-rw-r--r--test/python/install_jupyterlab_ubuntu.sh22
-rw-r--r--test/python/scenarios.json22
7 files changed, 97 insertions, 14 deletions
diff --git a/src/python/devcontainer-feature.json b/src/python/devcontainer-feature.json
index b4aa21e..638fa60 100644
--- a/src/python/devcontainer-feature.json
+++ b/src/python/devcontainer-feature.json
@@ -1,6 +1,6 @@
{
"id": "python",
- "version": "1.1.0",
+ "version": "1.2.0",
"name": "Python",
"documentationURL": "https://github.com/devcontainers/features/tree/main/src/python",
"description": "Installs the provided version of Python, as well as PIPX, and other common Python utilities. JupyterLab is conditionally installed with the python feature. Note: May require source code compilation.",
diff --git a/src/python/install.sh b/src/python/install.sh
index 0e2b125..7be5eea 100755
--- a/src/python/install.sh
+++ b/src/python/install.sh
@@ -304,25 +304,31 @@ sudo_if() {
if [ "$(id -u)" -eq 0 ] && [ "$USERNAME" != "root" ]; then
su - "$USERNAME" -c "$COMMAND"
else
- "$COMMAND"
+ $COMMAND
fi
}
install_user_package() {
- PACKAGE="$1"
- sudo_if "${PYTHON_SRC}" -m pip install --user --upgrade --no-cache-dir "$PACKAGE"
+ INSTALL_UNDER_ROOT="$1"
+ PACKAGE="$2"
+
+ if [ "$INSTALL_UNDER_ROOT" = true ]; then
+ sudo_if "${PYTHON_SRC}" -m pip install --upgrade --no-cache-dir "$PACKAGE"
+ else
+ sudo_if "${PYTHON_SRC}" -m pip install --user --upgrade --no-cache-dir "$PACKAGE"
+ fi
}
add_user_jupyter_config() {
- CONFIG_DIR="/home/$USERNAME/.jupyter"
- CONFIG_FILE="$CONFIG_DIR/jupyter_server_config.py"
+ CONFIG_DIR="$1"
+ CONFIG_FILE="$2"
# Make sure the config file exists or create it with proper permissions
test -d "$CONFIG_DIR" || sudo_if mkdir "$CONFIG_DIR"
test -f "$CONFIG_FILE" || sudo_if touch "$CONFIG_FILE"
# Don't write the same config more than once
- grep -q "$1" "$CONFIG_FILE" || echo "$1" >> "$CONFIG_FILE"
+ grep -q "$3" "$CONFIG_FILE" || echo "$3" >> "$CONFIG_FILE"
}
install_python() {
@@ -461,13 +467,26 @@ if [ "${INSTALL_JUPYTERLAB}" = "true" ]; then
exit 1
fi
- install_user_package jupyterlab
- install_user_package jupyterlab-git
+ INSTALL_UNDER_ROOT=true
+ if [ "$(id -u)" -eq 0 ] && [ "$USERNAME" != "root" ]; then
+ INSTALL_UNDER_ROOT=false
+ fi
+
+ install_user_package $INSTALL_UNDER_ROOT jupyterlab
+ install_user_package $INSTALL_UNDER_ROOT jupyterlab-git
# Configure JupyterLab if needed
if [ -n "${CONFIGURE_JUPYTERLAB_ALLOW_ORIGIN}" ]; then
- add_user_jupyter_config "c.ServerApp.allow_origin = '${CONFIGURE_JUPYTERLAB_ALLOW_ORIGIN}'"
- add_user_jupyter_config "c.NotebookApp.allow_origin = '${CONFIGURE_JUPYTERLAB_ALLOW_ORIGIN}'"
+ # Resolve config directory
+ CONFIG_DIR="/root/.jupyter"
+ if [ "$INSTALL_UNDER_ROOT" = false ]; then
+ CONFIG_DIR="/home/$USERNAME/.jupyter"
+ fi
+
+ CONFIG_FILE="$CONFIG_DIR/jupyter_server_config.py"
+
+ add_user_jupyter_config $CONFIG_DIR $CONFIG_FILE "c.ServerApp.allow_origin = '${CONFIGURE_JUPYTERLAB_ALLOW_ORIGIN}'"
+ add_user_jupyter_config $CONFIG_DIR $CONFIG_FILE "c.NotebookApp.allow_origin = '${CONFIGURE_JUPYTERLAB_ALLOW_ORIGIN}'"
fi
fi
diff --git a/test/python/install_additional_jupyterlab.sh b/test/python/install_additional_jupyterlab.sh
index a5658f0..58c4f7f 100755
--- a/test/python/install_additional_jupyterlab.sh
+++ b/test/python/install_additional_jupyterlab.sh
@@ -17,7 +17,7 @@ packages="$(python3 -m pip list)"
check "location" grep jupyter <<< "$packages"
# Check for git extension
-check "jupyterlab-git" grep jupyterlab-git <<< "$packages"
+check "jupyterlab_git" grep jupyterlab_git <<< "$packages"
# Check for correct JupyterLab configuration
check "config" grep ".*.allow_origin = '*'" /home/vscode/.jupyter/jupyter_server_config.py
diff --git a/test/python/install_jupyterlab.sh b/test/python/install_jupyterlab.sh
index a5658f0..58c4f7f 100755
--- a/test/python/install_jupyterlab.sh
+++ b/test/python/install_jupyterlab.sh
@@ -17,7 +17,7 @@ packages="$(python3 -m pip list)"
check "location" grep jupyter <<< "$packages"
# Check for git extension
-check "jupyterlab-git" grep jupyterlab-git <<< "$packages"
+check "jupyterlab_git" grep jupyterlab_git <<< "$packages"
# Check for correct JupyterLab configuration
check "config" grep ".*.allow_origin = '*'" /home/vscode/.jupyter/jupyter_server_config.py
diff --git a/test/python/install_jupyterlab_debian.sh b/test/python/install_jupyterlab_debian.sh
new file mode 100644
index 0000000..3db7fd4
--- /dev/null
+++ b/test/python/install_jupyterlab_debian.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+set -e
+
+# Optional: Import test library
+source dev-container-features-test-lib
+
+# Check for an installation of JupyterLab
+check "version" jupyter lab --version
+
+# Check location of JupyterLab installation
+packages="$(python3 -m pip list)"
+check "location" grep jupyter <<< "$packages"
+
+# Check for git extension
+check "jupyterlab_git" grep jupyterlab_git <<< "$packages"
+
+# Check for correct JupyterLab configuration
+check "config" grep ".*.allow_origin = '*'" /root/.jupyter/jupyter_server_config.py
+
+# Report result
+reportResults
diff --git a/test/python/install_jupyterlab_ubuntu.sh b/test/python/install_jupyterlab_ubuntu.sh
new file mode 100644
index 0000000..3db7fd4
--- /dev/null
+++ b/test/python/install_jupyterlab_ubuntu.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+set -e
+
+# Optional: Import test library
+source dev-container-features-test-lib
+
+# Check for an installation of JupyterLab
+check "version" jupyter lab --version
+
+# Check location of JupyterLab installation
+packages="$(python3 -m pip list)"
+check "location" grep jupyter <<< "$packages"
+
+# Check for git extension
+check "jupyterlab_git" grep jupyterlab_git <<< "$packages"
+
+# Check for correct JupyterLab configuration
+check "config" grep ".*.allow_origin = '*'" /root/.jupyter/jupyter_server_config.py
+
+# Report result
+reportResults
diff --git a/test/python/scenarios.json b/test/python/scenarios.json
index c3c1a82..c3c55d5 100644
--- a/test/python/scenarios.json
+++ b/test/python/scenarios.json
@@ -53,5 +53,25 @@
"features": {
"python": "3.10"
}
+ },
+ "install_jupyterlab_debian": {
+ "image": "debian:bullseye-slim",
+ "features": {
+ "python": {
+ "version": "3.11",
+ "installJupyterlab": true,
+ "configureJupyterlabAllowOrigin": "*"
+ }
+ }
+ },
+ "install_jupyterlab_ubuntu": {
+ "image": "ubuntu:focal",
+ "features": {
+ "python": {
+ "version": "3.11",
+ "installJupyterlab": true,
+ "configureJupyterlabAllowOrigin": "*"
+ }
+ }
}
-} \ No newline at end of file
+}