Update readme
- New links due to rename - Better formatting - More details
This commit is contained in:
parent
8a6d4aef98
commit
def81cf9cc
139
README.md
139
README.md
|
@ -2,9 +2,9 @@
|
|||
|
||||
| |Ubuntu 14.04 |Windows |
|
||||
|---------|:------:|:------:|
|
||||
|master|[![Build Status](https://travis-ci.com/PowerShell/PowerShell-Linux.svg?token=31YifM4jfyVpBmEGitCm&branch=master)](https://travis-ci.com/PowerShell/PowerShell-Linux)|[![Build status](https://ci.appveyor.com/api/projects/status/wb0a0apbn4aiccp1/branch/master?svg=true)](https://ci.appveyor.com/project/PowerShell/powershell-linux/branch/master)|
|
||||
|master|[![Build Status](https://travis-ci.com/PowerShell/PowerShell.svg?token=31YifM4jfyVpBmEGitCm&branch=master)](https://travis-ci.com/PowerShell/PowerShell)|[![Build status](https://ci.appveyor.com/api/projects/status/wb0a0apbn4aiccp1/branch/master?svg=true)](https://ci.appveyor.com/project/PowerShell/powershell-linux/branch/master)|
|
||||
|
||||
## [Waffle.io scrum board](https://waffle.io/PowerShell/PowerShell-Linux)
|
||||
## [Waffle.io scrum board](https://waffle.io/PowerShell/PowerShell)
|
||||
|
||||
## Obtain the source code
|
||||
|
||||
|
@ -35,7 +35,7 @@ Clone this repository recursively, as it's the superproject with a number of
|
|||
submodules.
|
||||
|
||||
```sh
|
||||
git clone --recursive https://github.com/PowerShell/PowerShell-Linux.git
|
||||
git clone --recursive https://github.com/PowerShell/PowerShell.git
|
||||
```
|
||||
|
||||
The `src/omi` submodule requires your GitHub user to have joined the Microsoft
|
||||
|
@ -47,7 +47,7 @@ On Windows, many fewer submodules are needed, so don't use `clone --recursive`.
|
|||
Instead run:
|
||||
|
||||
```
|
||||
git clone https://github.com/PowerShell/PowerShell-Linux.git
|
||||
git clone https://github.com/PowerShell/PowerShell.git
|
||||
git submodule update --init --recursive -- src/monad src/windows-build test/Pester
|
||||
```
|
||||
|
||||
|
@ -60,7 +60,7 @@ non-Windows platforms). Install `dotnet-cli` by following their [documentation][
|
|||
version).
|
||||
|
||||
> Note that OS X dependency installation instructions are not yet documented,
|
||||
> and Windows only needs `dotnet-cli`.
|
||||
> and Core PowerShell on Windows only needs `dotnet-cli`.
|
||||
|
||||
> Previous installations of DNX or `dnvm` can cause `dotnet-cli` to fail.
|
||||
|
||||
|
@ -99,7 +99,8 @@ sudo apt-get install libpam0g-dev libssl-dev libcurl4-openssl-dev libboost-files
|
|||
**The command `dotnet restore` must be done at least once from the top directory
|
||||
to obtain all the necessary .NET packages.**
|
||||
|
||||
Build with `./build.sh` on Linux and OS X, and `./build.ps1` on Windows.
|
||||
Build with `./build.sh` on Linux and OS X, `./build.ps1` for Core PowerShell on
|
||||
Windows, and `./build.FullCLR.ps1` for Full PowerShell on Windows.
|
||||
|
||||
Specifically:
|
||||
|
||||
|
@ -107,7 +108,7 @@ Specifically:
|
|||
|
||||
In Bash:
|
||||
```sh
|
||||
cd PowerShell-Linux
|
||||
cd PowerShell
|
||||
dotnet restore
|
||||
./build.sh
|
||||
```
|
||||
|
@ -116,7 +117,7 @@ dotnet restore
|
|||
|
||||
In PowerShell:
|
||||
```powershell
|
||||
cd PowerShell-Linux
|
||||
cd PowerShell
|
||||
dotnet restore
|
||||
./build.ps1
|
||||
```
|
||||
|
@ -126,51 +127,32 @@ dotnet restore
|
|||
If you encounter any problems, see the [known issues](KNOWNISSUES.md),
|
||||
otherwise open a new issue on GitHub.
|
||||
|
||||
The local managed host has built-in documentation via `--help`.
|
||||
|
||||
### Linux / OS X
|
||||
|
||||
- launch local shell with `./bin/powershell`
|
||||
- launch local shell in LLDB with `./debug.sh`
|
||||
- run tests with `./pester.sh`
|
||||
- launch `omiserver` for PSRP (and in LLDB) with `./prsp.sh`, and connect with `Enter-PSSession` from Windows
|
||||
|
||||
### Windows
|
||||
|
||||
Launch `./bin/powershell.exe`. The console output isn't the prettiest, but the
|
||||
vast majority of Pester tests pass. Run them in the console with `Invoke-Pester
|
||||
test/powershell`.
|
||||
|
||||
- launch `./bin/powershell.exe`
|
||||
- run tests with `./bin/powershell.exe -c "Invoke-Pester test/powershell"`
|
||||
|
||||
## PowerShell Remoting Protocol
|
||||
|
||||
PSRP communication is tunneled through OMI using the `omi-provider`.
|
||||
|
||||
**These build steps are not part of the `./build.sh` script.**
|
||||
|
||||
> PSRP has been observed working on OS X, but the changes made to OMI to
|
||||
> accomplish this are not even beta-ready and need to be done correctly. They
|
||||
> exist on the `andschwa-osx` branch of the OMI repository.
|
||||
|
||||
### Build OMI
|
||||
### Building
|
||||
|
||||
```sh
|
||||
cd src/omi/Unix
|
||||
./configure --dev
|
||||
make -j
|
||||
cd ../../..
|
||||
```
|
||||
**PSRP support is not built by `./build.sh`**
|
||||
|
||||
### Build Provider
|
||||
|
||||
The provider uses CMake to build, link, and register with OMI.
|
||||
|
||||
```sh
|
||||
cd src/omi-provider
|
||||
cmake .
|
||||
make -j
|
||||
cd ../..
|
||||
```
|
||||
|
||||
The provider also maintains its own native host library to initialize the CLR,
|
||||
but there are plans to refactor .NET's packaged host as a shared library.
|
||||
Build with `./omibuild.sh`.
|
||||
|
||||
### Running
|
||||
|
||||
|
@ -182,6 +164,8 @@ winrm set winrm/config/Client @{AllowUnencrypted="true"}
|
|||
winrm set winrm/config/Client @{TrustedHosts="*"}
|
||||
```
|
||||
|
||||
> You can also set the `TrustedHosts` to include the target's IP address.
|
||||
|
||||
Then on Linux, launch `omiserver` in the debugger (after building with the
|
||||
instructions above):
|
||||
|
||||
|
@ -225,18 +209,20 @@ make -j
|
|||
|
||||
## Detailed Build Script Notes
|
||||
|
||||
> This explains `./build.sh`.
|
||||
> This sections explains the build scripts.
|
||||
|
||||
The variable `$BIN` is the output directory, `bin`.
|
||||
|
||||
### Managed
|
||||
|
||||
Builds with `dotnet-cli`. Publishes all dependencies into the `bin` directory.
|
||||
Emits its own native host as `bin/powershell`.
|
||||
Emits its own native host as `bin/powershell`. Uses a `Linux` configuration to
|
||||
add a preprocessor definition. The `CORECLR` definition is added only when
|
||||
targeting the `dnxcore50` framework.
|
||||
|
||||
```sh
|
||||
cd src/Microsoft.PowerShell.Linux.Host
|
||||
dotnet publish --framework dnxcore50 --output $BIN
|
||||
dotnet publish --framework dnxcore50 --output $BIN --configuration Linux
|
||||
# Copy files that dotnet-publish doesn't currently deploy
|
||||
cp *.ps1xml *_profile.ps1 $BIN
|
||||
```
|
||||
|
@ -271,25 +257,57 @@ make
|
|||
cp api-ms-win-core-registry-l1-1-0.dll $BIN
|
||||
```
|
||||
|
||||
### PSRP
|
||||
|
||||
#### OMI
|
||||
|
||||
Build OMI from source in developer mode:
|
||||
|
||||
```sh
|
||||
cd src/omi/Unix
|
||||
./configure --dev
|
||||
make -j
|
||||
```
|
||||
|
||||
#### Provider
|
||||
|
||||
The provider uses CMake to build, link, and register with OMI.
|
||||
|
||||
```sh
|
||||
cd src/omi-provider
|
||||
cmake .
|
||||
make -j
|
||||
```
|
||||
|
||||
The provider also maintains its own native host library to initialize the CLR,
|
||||
but there are plans to refactor .NET's packaged host as a shared library.
|
||||
|
||||
# FullCLR PowerShell
|
||||
|
||||
On windows, we also build Full PowerShell for .NET 4.5.1
|
||||
On Windows, we also build Full PowerShell for .NET 4.5.1
|
||||
|
||||
## Setup environment
|
||||
|
||||
* You need Visual Studio to compile native host `powershell.exe`.
|
||||
If you don't have any visual studio installed,
|
||||
you can use [Visual Studio 2013 Community edition](https://www.visualstudio.com/en-us/news/vs2013-community-vs.aspx).
|
||||
* You need Visual Studio to compile the native host `powershell.exe`.
|
||||
|
||||
* Add `msbuild` to PATH / create PowerShell alias to it.
|
||||
If you don't have any visual studio installed, you can use [Visual Studio 2013
|
||||
Community edition][vs].
|
||||
|
||||
* Install cmake and add it to PATH.
|
||||
You can install it from [chocolatey](https://chocolatey.org/packages/cmake.portable) or [download cmake](https://cmake.org/download/).
|
||||
* Add `msbuild` to `PATH` / create PowerShell alias to it.
|
||||
|
||||
* Install CMake and add it to `PATH.`
|
||||
|
||||
You can install it from [Chocolatey][] or [manually][].
|
||||
|
||||
```
|
||||
choco install cmake.portable
|
||||
```
|
||||
* dotnet-cli (see above for details)
|
||||
|
||||
* Install dotnet-cli via their [documentation][]
|
||||
|
||||
[vs]: https://www.visualstudio.com/en-us/news/vs2013-community-vs.aspx
|
||||
[chocolately]: https://chocolatey.org/packages/cmake.portable
|
||||
[manually]: https://cmake.org/download/
|
||||
|
||||
## Building
|
||||
|
||||
|
@ -298,29 +316,33 @@ choco install cmake.portable
|
|||
```
|
||||
|
||||
**Troubleshooting:** the build logic is relatively simple and contains following steps:
|
||||
- building managed dlls: `dotnet publish --runtime dnx451`
|
||||
- building managed DLLs: `dotnet publish --runtime dnx451`
|
||||
- generating Visual Studio project: `cmake -G "$cmakeGenerator"`
|
||||
- building powershell.exe from generated solution: `msbuild powershell.sln`
|
||||
- building `powershell.exe` from generated solution: `msbuild powershell.sln`
|
||||
|
||||
All this steps can be run separately from `.\build.FullCLR.ps1`, don't hesitate to experiment.
|
||||
All this steps can be run separately from `.\build.FullCLR.ps1`, don't hesitate
|
||||
to experiment.
|
||||
|
||||
## Running
|
||||
|
||||
Running FullCLR version is not as simple as CoreCLR version.
|
||||
|
||||
If you just run ~~`.\binFull\powershell.exe`~~, you will get powershell process,
|
||||
but all interesting dlls (i.e. System.Management.Automation.dll) would be loaded from GAC, not your `binFull` directory.
|
||||
If you just run ~~`.\binFull\powershell.exe`~~, you will get a `powershell`
|
||||
process, but all the interesting DLLs (i.e. `System.Management.Automation.dll`)
|
||||
would be loaded from the GAC, not your `binFull` build directory.
|
||||
|
||||
[@lzybkr](https://github.com/lzybkr) wrote a module to deal with it and run side-by-side
|
||||
[@lzybkr](https://github.com/lzybkr) wrote a module to deal with it and run
|
||||
side-by-side.
|
||||
|
||||
```powershell
|
||||
Import-Module .\PowerShellGithubDev.psm1
|
||||
Start-DevPSGithub -binDir $pwd\binFull
|
||||
```
|
||||
|
||||
**Troubleshooting:** default for powershell.exe that **we build** is x86.
|
||||
There is a separate execution policy regkey for x86, and it's likely that you didn't ~~bypass~~ enable it.
|
||||
From **powershell.exe (x86)** run
|
||||
**Troubleshooting:** default for `powershell.exe` that **we build** is x86.
|
||||
|
||||
There is a separate execution policy registry key for x86, and it's likely that
|
||||
you didn't ~~bypass~~ enable it. From **powershell.exe (x86)** run:
|
||||
|
||||
```
|
||||
Set-ExecutionPolicy Bypass
|
||||
|
@ -328,11 +350,12 @@ Set-ExecutionPolicy Bypass
|
|||
|
||||
## Running from CI server
|
||||
|
||||
We publish archive with fullCLR bits on every [CI build](https://ci.appveyor.com/project/PowerShell/powershell-linux).
|
||||
We publish an archive with FullCLR bits on every CI build with [AppVeyor][].
|
||||
|
||||
* Download zip package from **artifacts** tab of the particular build.
|
||||
* Unblock zip file: right-click in file explorer -> properties -> check 'Unblock' checkbox -> apply
|
||||
* Unblock zip file: right-click in file explorer -> properties -> check
|
||||
'Unblock' checkbox -> apply
|
||||
* Extract zip file to `$bin` directory
|
||||
* `Start-DevPSGithub -binDir $bin`
|
||||
|
||||
|
||||
[appveyor]: https://ci.appveyor.com/project/PowerShell/powershell-linux
|
||||
|
|
Loading…
Reference in a new issue