b2e3a1e2e3
The use of the function in RegistryProvider cannot be tested without a mock of a PowerShell cmdlet context. |
||
---|---|---|
ext-src | ||
scripts | ||
src | ||
.gitignore | ||
.gitmodules | ||
README.md |
PowerShell for Linux
Getting started
These instructions assume Ubuntu 14.04 LTS, the same as our dependency, CoreCLR. Fortunately you do not have to build CoreCLR, as we bundle the dependencies in submodules.
Installing dependencies
Setup the Mono package repository because Ubuntu's Mono packages are out of date.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
Install necessary packages.
- Git, the version control system
- Mono, the C# compiler for Linux
- Nuget, the C# package manager
- libunwind8, used to determine the call-chain
- GCC and G++, for compiling C and C++ native code
- GNU Make, for building
monad-linux
- CMake, for building
src/monad-native
- Node.js, to run the Visual Studio Online mshttps Git remote helper
- smbclient, to obtain mshttps
- ntpdate, to update the system time
sudo apt-get install git mono-devel nuget libunwind8 gcc g++ make cmake nodejs nodejs-legacy smbclient ntpdate
Obtaining sources
The user name and email must be set to do just about anything with Git. The URL mapping (and mshttps itself) is needed for the two factor authentication that internal VSO imposes.
git config --global user.name "First Last"
git config --global user.email "alias@microsoft.com"
git config --global url.mshttps://msostc.visualstudio.com/.insteadof https://msostc.visualstudio.com/
git config --global url.mshttps://microsoft.visualstudio.com/.insteadof https://microsoft.visualstudio.com/
Install VSO's Git mshttps remote helper, and update the system time (necessary for authentication with VSO).
smbclient --user=domain\\username --directory=drops\\RemoteHelper.NodeJS\\latest \\\\gitdrop\\ProjectJ -c "get git-remote-mshttps.tar.gz"
sudo tar -xvf git-remote-mshttps.tar.gz -C /usr/local/bin
sudo chmod +x /usr/local/bin/git-remote-mshttps
sudo ntpdate time.nist.gov
If the file transfer fails with
tree connect failed: NT_STATUS_DUPLICATE_NAME
, usenslookup gitdrop
to obtain its canonical name (currentlyosgbldarcfs02.redmond.corp.microsoft.com
) and use it instead.
Clone our monad-linux source from Visual Studio Online. We use the develop
branch, and several submodules, necessitating the arguments.
git clone -b develop --recursive https://msostc.visualstudio.com/DefaultCollection/PS/_git/monad-linux
Building
cd scripts
since it contains theMakefile
make prepare
will use Nuget to download several dependenciesmake all
will build PowerShell for Linuxmake run
will execute a demo,"a","b","c","a","a" | Select-Object -Unique
make run-interactive
will open an interactive PowerShell consolemake test
will execute the unit testsmake clean
will remove the built objectsmake cleanall
will also remove the Nuget packages