Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cross-platform build, maybe with Paket+FAKE? #21

Closed
rmunn opened this issue Dec 17, 2017 · 2 comments · Fixed by #38
Closed

Cross-platform build, maybe with Paket+FAKE? #21

rmunn opened this issue Dec 17, 2017 · 2 comments · Fixed by #38

Comments

@rmunn
Copy link
Contributor

rmunn commented Dec 17, 2017

Since I have some free time right now, I've been trying to test out the digit-separator branch as requested in #2 (comment), but I only have a Linux development machine, so PowerShell build scripts aren't all that easy for me to use. Result: the Windows-only build process for FParsec is currently blocking me from making any progress on helping with #2.

Would you be interested in a cross-platform build process, using Paket and FAKE instead of NuGet and PowerShell? I can't guarantee that I'd have time to work on it anytime soon, but I would be willing to put in the work if you'd find it useful — and if I can find the time (always the biggest limiting factor for me). I just don't want to invest the time in making a cross-platform build process if you wouldn't find that useful.

@cloudRoutine
Copy link

You can probably use this to build on linux, just remember not to commit the project files 😜
paketbuild.zip

@stephan-tolksdorf
Copy link
Owner

@rmunn You should be able to build FParsec with Mono using the VS11 solution files. At least that used to work.

@cloudRoutine Thank you for helping out with a Paket build!

Unfortunately, I won't have time for anything FParsec related other than critical bug fixes for a few weeks. In any case, I'd rather make the existing build work on Linux than introduce another build script and dependency.

enricosada added a commit that referenced this issue Mar 2, 2019
…#38)

create a modern package, use .net sdk, cleanup infra, add ci.

## Supported frameworks

add support for `netstandard2.0`

drop support for discontinued `net40-client` target framework.
it's not used anymore in .NET >= 4.5
ref https://docs.microsoft.com/en-us/dotnet/framework/deployment/client-profile

drop support for `netstandard1.6`, it's useful only in .NET Core v1.
replaced by `netstandard2.0`

drop support for `.NETPortable`( `portable-net45+win8+wp8+wpa81` ) target framework.
the PCL profiles are replaced by .NET Standard.
- the compiler defines `PCL` is not used anymore. The code is not yet removed
  because it's a big change, but because the compiler define is not set, the
  code is unused

## Dependencies

pin `FSharp.Core` to be >= v4.3.4 for all target framework to simplify deps

## Projects

add `global.json` to pin .net core sdk version to make build deterministic

upgrade form FSharp.NET.Sdk style (deprecated in .NET Core Sdk 1.0) to .NET Sdk fsproj

cleanup shared props and fsproj, using conventions of .NET Sdk:

- refactor common properties in an automatically imported `Directory.Build.props`
- move props near usage in projects
- remove now useless FParsec.Samples.Common.targets
- upgrade tests from netcoreapp2.0 to netcoreapp2.1

remove old VS11 projects, new projects works in VS

## Build script

update `pack.ps1` powershell script, to use `dotnet` commands instead of msbuild/nuget
nupkgs are generated in `~/bin/nupkg`

## CI

Add appveyor:
- run `pack.ps1`
- version suffix autogenerated by buildId/branch/PR. no suffix if is a tag (so just tag to generate a stable version)
- generated nupkgs are in the artifacts tab of appveyor, ready to download

Add travis:
- osx/ubuntu
- run `dotnet build` on both `Release` and `Release-LowTrust` configurations
- run tests only if `netcoreapp`. It can run also `net45` test using mono but i am too lazy to write the if in the travis script (but the matrix is there)

## Issues

fix #34 (support `netstandard` and `net` tfms)
fix #21 (just run `dotnet` commands, but replacing the powershell is easy too)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants