aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/oryx/devcontainer-feature.json2
-rwxr-xr-xsrc/oryx/install.sh20
-rw-r--r--src/python/devcontainer-feature.json2
-rwxr-xr-xsrc/python/install.sh2
-rw-r--r--test/oryx/sample-python/requirements.txt2
-rw-r--r--test/oryx/sample-python/src/solve.py12
-rw-r--r--test/oryx/scenarios.json15
-rw-r--r--test/oryx/test_python_project.sh32
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