diff options
-rw-r--r-- | src/oryx/devcontainer-feature.json | 2 | ||||
-rwxr-xr-x | src/oryx/install.sh | 20 | ||||
-rw-r--r-- | src/python/devcontainer-feature.json | 2 | ||||
-rwxr-xr-x | src/python/install.sh | 2 | ||||
-rw-r--r-- | test/oryx/sample-python/requirements.txt | 2 | ||||
-rw-r--r-- | test/oryx/sample-python/src/solve.py | 12 | ||||
-rw-r--r-- | test/oryx/scenarios.json | 15 | ||||
-rw-r--r-- | test/oryx/test_python_project.sh | 32 |
8 files changed, 77 insertions, 10 deletions
diff --git a/src/oryx/devcontainer-feature.json b/src/oryx/devcontainer-feature.json index 2596bd9..5c64344 100644 --- a/src/oryx/devcontainer-feature.json +++ b/src/oryx/devcontainer-feature.json @@ -1,6 +1,6 @@ { "id": "oryx", - "version": "1.0.11", + "version": "1.0.12", "name": "Oryx", "description": "Installs the oryx CLI", "documentationURL": "https://github.com/devcontainers/features/tree/main/src/oryx", diff --git a/src/oryx/install.sh b/src/oryx/install.sh index 054983a..aa4af2c 100755 --- a/src/oryx/install.sh +++ b/src/oryx/install.sh @@ -116,9 +116,8 @@ echo "Installing Oryx..." # Ensure apt is in non-interactive to avoid prompts export DEBIAN_FRONTEND=noninteractive - # Install dependencies -check_packages git sudo curl ca-certificates apt-transport-https gnupg2 dirmngr libc-bin +check_packages git sudo curl ca-certificates apt-transport-https gnupg2 dirmngr libc-bin moreutils if ! cat /etc/group | grep -e "^oryx:" > /dev/null 2>&1; then groupadd -r oryx @@ -127,16 +126,23 @@ usermod -a -G oryx "${USERNAME}" # Required to decide if we want to clean up dotnet later. DOTNET_INSTALLATION_PACKAGE="" +DOTNET_BINARY="" + +if dotnet --version > /dev/null ; then + DOTNET_BINARY=$(which dotnet) +fi -# Install dotnet unless available -if ! dotnet --version > /dev/null ; then - echo "'dotnet' was not detected. Attempting to install the latest version of the dotnet sdk to build oryx." +# Oryx needs to be built with .NET 6 +if [[ "${DOTNET_BINARY}" = "" ]] || [[ "$(dotnet --version)" != *"6"* ]] ; then + echo "'dotnet 6' was not detected. Attempting to install .NET 6 to build oryx." install_dotnet_using_apt if ! dotnet --version > /dev/null ; then echo "(!) Please install Dotnet before installing Oryx" exit 1 fi + + DOTNET_BINARY="/usr/bin/dotnet" fi BUILD_SCRIPT_GENERATOR=/usr/local/buildscriptgen @@ -150,8 +156,8 @@ git clone --depth=1 https://github.com/microsoft/Oryx $GIT_ORYX $GIT_ORYX/build/buildSln.sh -dotnet publish -property:ValidateExecutableReferencesMatchSelfContained=false -r linux-x64 -o ${BUILD_SCRIPT_GENERATOR} -c Release $GIT_ORYX/src/BuildScriptGeneratorCli/BuildScriptGeneratorCli.csproj -dotnet publish -r linux-x64 -o ${BUILD_SCRIPT_GENERATOR} -c Release $GIT_ORYX/src/BuildServer/BuildServer.csproj +${DOTNET_BINARY} publish -property:ValidateExecutableReferencesMatchSelfContained=false -r linux-x64 -o ${BUILD_SCRIPT_GENERATOR} -c Release $GIT_ORYX/src/BuildScriptGeneratorCli/BuildScriptGeneratorCli.csproj +${DOTNET_BINARY} publish -r linux-x64 -o ${BUILD_SCRIPT_GENERATOR} -c Release $GIT_ORYX/src/BuildServer/BuildServer.csproj chmod a+x ${BUILD_SCRIPT_GENERATOR}/GenerateBuildScript diff --git a/src/python/devcontainer-feature.json b/src/python/devcontainer-feature.json index fbbf62c..b96511b 100644 --- a/src/python/devcontainer-feature.json +++ b/src/python/devcontainer-feature.json @@ -1,6 +1,6 @@ { "id": "python", - "version": "1.0.14", + "version": "1.0.15", "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 79ab7de..d823cc9 100755 --- a/src/python/install.sh +++ b/src/python/install.sh @@ -17,7 +17,7 @@ export PIPX_HOME=${PIPX_HOME:-"/usr/local/py-utils"} USERNAME=${USERNAME:-"automatic"} UPDATE_RC=${UPDATE_RC:-"true"} -USE_ORYX_IF_AVAILABLE=${USE_ORYX_IF_AVAILABLE:-"true"} +USE_ORYX_IF_AVAILABLE=${USEORYXIFAVAILABLE:-"true"} INSTALL_JUPYTERLAB=${INSTALLJUPYTERLAB:-"false"} CONFIGURE_JUPYTERLAB_ALLOW_ORIGIN=${CONFIGUREJUPYTERLABALLOWORIGIN:-""} diff --git a/test/oryx/sample-python/requirements.txt b/test/oryx/sample-python/requirements.txt new file mode 100644 index 0000000..c8a04f6 --- /dev/null +++ b/test/oryx/sample-python/requirements.txt @@ -0,0 +1,2 @@ +mpmath==1.2.1 +sympy==1.11.1 diff --git a/test/oryx/sample-python/src/solve.py b/test/oryx/sample-python/src/solve.py new file mode 100644 index 0000000..141a996 --- /dev/null +++ b/test/oryx/sample-python/src/solve.py @@ -0,0 +1,12 @@ +from sympy import Symbol, Eq, solve + +x = Symbol("x") +y = Symbol("y") + +equation_1 = Eq((x + y), 2) +equation_2 = Eq((x - y), 4) +print("Equation 1:", equation_1) +print("Equation 2:", equation_2) + +solution = solve((equation_1, equation_2), (x, y)) +print("Solution:", solution) diff --git a/test/oryx/scenarios.json b/test/oryx/scenarios.json index 4b9fa90..bbfc277 100644 --- a/test/oryx/scenarios.json +++ b/test/oryx/scenarios.json @@ -8,5 +8,20 @@ }, "oryx": {} } + }, + "test_python_project": { + "image": "ubuntu:focal", + "features": { + "python": { + "version": "3.10.4", + "additionalVersions": "3.9.7", + "useOryxIfAvailable": "false" + }, + "dotnet": { + "version": "7", + "installUsingApt": "false" + }, + "oryx": {} + } } }
\ No newline at end of file diff --git a/test/oryx/test_python_project.sh b/test/oryx/test_python_project.sh new file mode 100644 index 0000000..a0d5eef --- /dev/null +++ b/test/oryx/test_python_project.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +set -e + +# Optional: Import test library +source dev-container-features-test-lib + +cd sample-python + +# Replicates Oryx's behavior for universal image +DEBIAN_FLAVOR="focal-scm" +mkdir -p /opt/oryx && echo "vso-focal" > /opt/oryx/.imagetype +echo "DEBIAN|${DEBIAN_FLAVOR}" | tr '[a-z]' '[A-Z]' > /opt/oryx/.ostype + +ln -snf /usr/local/oryx/* /opt/oryx + +PYTHON_PATH="/home/codespace/.python/current" +mkdir -p /home/codespace/.python +ln -snf /usr/local/python/current $PYTHON_PATH +ln -snf /usr/local/python /opt/python + +export PATH="/home/codespace/.python/current/bin:${PATH}" +which python + +pythonVersion=$(python -V 2>&1 | grep -Po '(?<=Python )(.+)') +pythonSite=`python -m site --user-site` +check "oryx-build-python" oryx build --property python_version="${pythonVersion}" --property packagedir="${pythonSite}" ./ +check "oryx-build-python-installed" python3 -m pip list | grep mpmath +check "oryx-build-python-result" python3 ./src/solve.py + +# Report result +reportResults |