Closed Gillibald closed 5 years ago
You don't seem to use xml comments how do I add documentation for added features?
For docs, we run a task and then that will generate the files in the docs folder. Then we hand edit.
The docs task is a fairly complex process and requires that all platforms be built and present - it then processes all the assemblies at once and generates the correct API docs, diffs and other variations. I wouldn't worry about that at the moment as I usually run it periodically. If you really need to generate docs, then just let me know.
whitelist
Looking at the project file changes and wondering why Microsoft doesn't support wildcards everywhere... Then we are going to get to all those xcode projects :)
Thats fine for me. We can add documentation later when this is finished feature wise.
I added you to the whitelist, so you should be able to see results as you go along. One thing that you may want to change is the fact that if one build fails, it cancels all the others. Since you probably are going to work one platform at a time, you may want to flip this switch: https://github.com/mono/SkiaSharp/blob/master/scripts/pipeline.groovy#L71
That will allow CI to build what it can, and then stop at the end of the process. If there are any platforms that you can't build for some reason, let me know and I can either help you set up, or make the changes - so you don't have to spend all your time tinkering with some obscure platform SDK.
Will fix all non-apple platforms first on a virtual machine. And will then commit everything to reduce noise. Someone with XCode needs to update all related files. The XCode file format is just too much of a pain to edit it by hand. Linux and Windows build should now work. On Linux, I had to add some required packages to the build task.
Will re-enable fastFail again to also reduce noise. I just learned I should keep my commits to a minimum.
It's those darn docs tooling - "we're gonna build", "we're building", "were done building!" Massive. Comment. Needed. lol
I must talk to our release engineering to find if there is a way to temporarily disable the docs builds...
Not sure why CI isn't building Windows and UWP. Both should work. Had no time to install Android Environment on my VM in theory that should work too. Hope I get the XCode projects updated soon. That's a real pain.
Maybe it is possible to just use a Makefile for mac
I'll have a look and see what is happening with CI.
build
I think CI was undergoing maintenance and the builds were being canceled... I think SkiaSharp needs more bots... Anyway, I kicked it off again and will have a look and see what it spits out.
@Gillibald You might be able to use the CMake bits... At the time I added harfbuzz to the build, there was no support, but you might be able to get things to work without having to use Xcode projects. We can then delete those. Chances are that might work for Windows and Linux too - not sure about the tvOS/watchOS. That is going to be a pain - I wish I never added those platforms - there is probably 1 user out there :)
Will try to utilize CMake on most platforms. That way we can hopefully reduce the need to edit build files manually.
Looking at the build results, things are looking up! Linux, Tizen (on all platforms) and Win32 are all green. It is just the macOS/iOS variants and the Android - both of which you haven't started yet.
UWP has an interesting error in the code...
error C4146: unary minus operator applied to unsigned type, result still unsigned
I'll have a closer look - hopefully this is just a warning gone error.
@mattleibow I have already fixed that warning just haven't pushed that change.
I am currently trying to use https://github.com/harfbuzz/harfbuzz/blob/master/CMakeLists.txt to generate build files for each platform.
UWP :
cmake
-G "Visual Studio 15 2017"
-DCMAKE_SYSTEM_NAME=WindowsStore
-DCMAKE_SYSTEM_VERSION="10.0"
-DBUILD_SHARED_LIBS=ON
Linux:
cmake
-G "Unix Makefiles"
-DBUILD_SHARED_LIBS=ON
OPS Build status updates of commit c8d22ef:
:clock10: Preparing: average preparing time is 1 min(s) 59 sec(s)
OPS Build status updates of commit c8d22ef:
:clock10: Incremental building: average incremental building time is 20 sec(s)
OPS Build status updates of commit c8d22ef:
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.
How is CMake going? I hope it is actually going to be less work - all these tools and libraries just to draw a fancy square 😉
For UWP, are you using the official build, or the one that comes with VS?
I have just played a bit with CMake to understand how that could work out but haven't used it anywhere yet. The challenge is to produce the same results as the custom scripts do. For Windows and Linux that seems to work. For Android I had issues linking everything to a small dynamic library. In the end it isn't that easy. Using CMake is a good idea in general but probably a too big change for now. Only Mac is missing now and I will just hand edit the existing projects as I did with the rest. In terms of build tools nothing changed.
My current plan is to update the XCode projects by hand to finish the native builds. After that I will work on unit tests.
OPS Build status updates of commit 1efbf07:
:clock10: Preparing: average preparing time is 1 min(s) 59 sec(s)
OPS Build status updates of commit 1efbf07:
:clock10: Incremental building: average incremental building time is 20 sec(s)
OPS Build status updates of commit 1efbf07:
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.
OPS Build status updates of commit f86d99d:
:clock10: Preparing: average preparing time is 1 min(s) 59 sec(s)
OPS Build status updates of commit f86d99d:
:clock10: Incremental building: average incremental building time is 20 sec(s)
OPS Build status updates of commit f86d99d:
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.
OPS Build status updates of commit 8d8e043:
:clock10: Preparing: average preparing time is 2 min(s)
OPS Build status updates of commit 8d8e043:
:clock10: Incremental building: average incremental building time is 20 sec(s)
OPS Build status updates of commit 8d8e043:
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.
The build is now failing because you disabled some of the builds. But, at least we are now past the xcode builds - and we know that android/linux/windows are good. so... I am thinking GREEN soon 🛩
OPS Build status updates of commit e15c1f3:
:clock10: Preparing: average preparing time is 2 min(s)
OPS Build status updates of commit e15c1f3:
:clock10: Incremental building: average incremental building time is 19 sec(s)
OPS Build status updates of commit e15c1f3:
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.
Next step would be writing some unit tests for the HarfBuzzSharp component. Is CI producing Nuget packages for debug purposes? Don't know why the build passes without building anything. Probably have to start it manually.
If you don't want these HarfBuzzSharp changes let me know.
Have to figure out what is wrong with Xamarain tooling for watchOS etc. System.Memory is causing some issues on these platforms.
build
I think our release team was fixing things on the bots. Started the build.
How do I update the C# compiler for CI builds? Looks like C# 7.3 isn't supported. Maybe I should drop ReadOnlySpan
oops, looks like our bot is out of date. We haven't yet switched this project over to Azure, still using local Jenkins bots. Let me ask our RE to update.
We know the native build works, so yay for that.
OPS Build status updates of commit ec5e186:
:clock10: Preparing: average preparing time is 2 min(s)
OPS Build status updates of commit ec5e186:
:clock10: Preparing: average preparing time is 2 min(s)
OPS Build status updates of commit ec5e186:
:clock10: Incremental building: average incremental building time is 19 sec(s)
OPS Build status updates of commit ec5e186:
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.
OPS Build status updates of commit dd88bc6:
:clock10: Preparing: average preparing time is 2 min(s)
OPS Build status updates of commit dd88bc6:
:clock10: Preparing: average preparing time is 2 min(s)
OPS Build status updates of commit dd88bc6:
:clock10: Incremental building: average incremental building time is 19 sec(s)
OPS Build status updates of commit dd88bc6:
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.
MTOUCH : error MT0091: This version of Xamarin.iOS requires the tvOS 12.0 SDK (shipped with Xcode 10.0). Either upgrade Xcode to get the required header files or set the managed linker behaviour to Link Framework SDKs Only (to try to avoid the new APIs). [/Users/builder/jenkins/workspace/SkiaSharp/pr/169/managed-macos/samples/Basic/tvOS/SkiaSharpSample/SkiaSharpSample.csproj]
This is the initial work to bring HarfBuzz to the current version and making it easier to update in the future. The library will no longer be downloaded as a zip file and instead was added as a submodule to the repository. The build process is almost the same and just the download part is removed.
HarfBuzz itself is no on the current release version 2.3.1
HarfBuzzSharp got some substantial additions but also has some breaking signature changes. The goal was to support more of the API and make it easier to integrate HarfBuzz into an existing application.