id: "qsharp" aliases: - "q" - "qs" name: "Q#" install: # Apparently, the Q# project template is hardcoded to use version # 3.x of the .NET SDK. Not sure why. prepare: &install-dotnet preface: | wget "https://packages.microsoft.com/config/ubuntu/${ubuntu_ver}/packages-microsoft-prod.deb" sudo --preserve-env=DEBIAN_FRONTEND apt-get install ./packages-microsoft-prod.deb sudo --preserve-env=DEBIAN_FRONTEND apt-get update apt: - $(grep-aptavail -wF Package "dotnet-sdk-3\.[0-9.]+" -s Package -n | sort -Vr | head -n1) <<: *install-dotnet # We should cache the .dotnet directory to avoid a .NET banner being # printed, and we should cache the main directory because there is a # generated main.csproj file that is needed by .NET. Finally we # should cache the .nuget directory as well as the build artifacts # inside main to avoid a 30s initial compile time. # # We could optimize further but I don't feel like it right now. manual: | install -d "${pkg}/opt/qsharp/skel-home" install -d "${pkg}/opt/qsharp/skel-src" dotnet new -i Microsoft.Quantum.ProjectTemplates dotnet new console -lang Q# -o main dotnet run --project main shopt -s dotglob cp -R main "${pkg}/opt/qsharp/skel-src/" cp -R "${HOME}/.dotnet" "${HOME}/.nuget" "${pkg}/opt/qsharp/skel-home/" rm "${pkg}/opt/qsharp/skel-src/main/Program.qs" chmod -R a=u,go-w "${pkg}/opt/qsharp" manualInstall: | wget "https://packages.microsoft.com/config/ubuntu/${ubuntu_ver}/packages-microsoft-prod.deb" sudo --preserve-env=DEBIAN_FRONTEND apt-get update sudo --preserve-env=DEBIAN_FRONTEND apt-get install ./packages-microsoft-prod.deb setup: | shopt -s dotglob cp -R /opt/qsharp/skel-src/* ./ cp -R /opt/qsharp/skel-home/* "${HOME}/" main: "main/Main.qs" template: | namespace main { open Microsoft.Quantum.Canon; open Microsoft.Quantum.Intrinsic; @EntryPoint() operation Main() : Unit { Message("Hello, world!"); } } run: | dotnet run --project main