DocsReleasesCommunityGuidesBlog

Packaging Pre-built Micro-libraries for Faster and More Secure Builds

Progress on my GSoC'23 project.

About Me#

I am Zeyu Li, a second-year master at Guizhou University in China.

This is my first time being involved in the open source project, and I am very glad to be able to join this friendly and enthusiastic community.

Motivation#

Currently, libraries in KraftKit are accessed from source, either from a remote tarball or Git repository. To speed up builds, pre-built libraries can be made and delivered before the main build process to speed up the overall build of the unikernel.

Summary of Objectives#

The goal of the project is to add a kraft pkg implementation. When this project is complete, the specific order of use when building the application will be:

kraft pkg update -> kraft pkg -> kraft build

The purpose of the kraft pkg is to pre-package the micro-libraries required by the application.

Here is an example. kraft.yaml is used to find out which libraries are required. Take app-nginx as an example; all I need to do is pull the required versions of the musl, lwip and nginx micro-libraries, check and manipulate them, configure them according to kraft.yaml, and then package them into a tarball as a micro-library. To speed up builds, pre-built libraries can be made and delivered before the main build process to speed up the overall build of the unikernel.

Progress#

What I've done so far is getting gradually familiar with the whole project when solving issue #479.

The purpose of this issue is to modify all the error print formats by adding error tracing function. When finishing this issue, all the errors can be located exactly, including error line numbers and error information.

When solving this issue, I've overcome two difficulties:

  • I got accustomed to the GitHub collaborative workflow.
  • I improved my familiarity with the whole project.

Problems#

While working on the issue, I had a lot of support from Alexander Jung (my mentor). He helped me with printing debug information better and doing tests for the code update. This took more time than I expected.

I am very thankful for Alex's support. He provided me with tutorials about how to use Git and the GitHub interface and workflow. I'm now better accustomed to Git and GitHub, but solving conflicts is still a problem for me. I will work on improving my skills in solving conflicts.

Next Steps#

In the future I plan to:

  • Complete issue #479.
  • Discuss with Alex about the project details and do actual work in the project.
Edit this page on GitHub

Connect with the community

Feel free to ask questions, report issues, and meet new people.

Join us on Discord!
®

Getting Started

What is a unikernel?Install CLI companion toolUnikraft InternalsRoadmap

© 2024  The Unikraft Authors. All rights reserved. Documentation distributed under CC BY-NC 4.0.