[GSoC 2018 Final report] PCP Windows Installer

[GSoC 2018 Final report] PCP Windows Installer

Andrii

Brief description

PCP is a system performance analysis toolkit.

This project aims to help PCP development team re-enable PCP framework on Windows platform. To get PCP working on Windows we have decided to use "Git for Windows" ecosystem. There are 2 methods we are going to use to deliver PCP to end users:

1) Mingw-w64 package
2) PCP installer

What is done

1) Both my mentors Nathan Scott and Ken McDonell made a great effort to solve some build issues. Thanks for that!
2) Created PKGBUILD and post-install files which contain build and post-install instructions respectively. Mentioned files can be found here.
3) Using shell scripts above MinGW-w64 package was created. This package is uploaded to Bintray: link.
4) Using "Git for Windows" installer and MinGW-w64 PCP package I have created PCP installer prototype. At this stage it can install PCP binaries, set up all required path lines, define PCP_DIR variable and set up Windows to run pmcd.exe automatically on system start.

Next steps

1) Solve pmcd.sh script failure.
2) Integrate pmcd.sh and pmcd.exe into Windows Services API.
3) Apply some cosmetic improvements to the installer.
4) Try to make MinGW-w64 PCP package available via pacman.
5) Automate the process of releasing installer for new PCP versions.
6) Add required qt files and libraries to the installer.

Challenges faced

While I was working on my GSoC project I faced a couple of challenges. One of them is the integration of performance metrics collector daemon (pmcd) with Windows services. The problem is Windows services works within "session 0" context and don't have permissions to start any executables. The solution I see is escalating pmcd privileges using winlogon. So pmcd would get logged on user privileges and work as a Linux daemon on Windows.

Final words

GSoC 2018 helped me make my first steps in contributing to open source projects. So there is no doubt that GSoC 2018 was an incredible experience for me. I have learned more about Msys2 and Mingw-w64 projects, Gdb debugging, Windows API and Windows services, shell scripting and Git workflow. Thanks to Nathan Scott, Ken McDonell and all Performace Co-Pilot development team for making it possible!

Report Page