wiki:SummerOfCode/2019

This page is dedicated to the projects accepted into GSoC 2019.

This year we are trying to test a real-time chat-like option for quick communication and avoid spamming mailing lists for silly questions. Please feel free to join us on Gitter and experiment around: https://gitter.im/macports-gsoc/gsoc-2019. You can ping @umeshksingla if you'd like a separate room for your project or create one on your own.

Phase Out Xcode Dependency

Description

Currently, a full Xcode installation is needed to install MacPorts. In reality this is overkill, as most of the packages on the MacPort do not need the full installation. To phase out this dependency, several things should be done:

  • Xcode dependency flag: implement a flag for package maintainers to indicate Xcode dependency
  • Xcode dependency detection: implement a way to detect Xcode dependency when building packages using sandbox tracing
  • Force build without Xcode: blacklist Xcode compilers when Xcode is not needed by hacking libxcselect

This will lay the groundwork to eventually phase out Xcode dependency for MacPorts as a whole. All contributions are made onto the macports-base repository, touching various areas of the codebase and overall adding features to the Tcl-based command line tool. details

Student

Mentors

Automating Packaging for Macports

Description

While creating a Portfile for MacPorts one has to manually write the file or depending on the upstream use tools such as pypi2port, cpan2port, etc. So as to not deal with different tools for each type of package, Universal Packaging Tool (UPT) can be used. Main aim of this project would be to bring macports support to upt and adding features to UPT such as recursive packaging and updation.

Student

Mentors

Links

Web App (with API) to Collect PortIndex, Build History and Installation Statistics

Description

The website would have a dynamic page for each port which would display:

  • Port Information: Name, Description, Version, Maintainers (github and email), Dependencies, Long Description, Homepage, Installed Files etc.
  • Installations Statistics: Number of installations, Installations vs Month, Installations vs Version for last 12 months, number of updates vs month.
  • Build Data: Table of all builds(latest), Status of last build for all OS Versions, Build Reproducibility.

The API would make the collection of data more powerful by extending its use beyond the web-app.

Although these will be the main components of the app, yet there will be many other accessibility features like maintainer’s page, customisable table of all builds etc.

Student

Mentors

Links

Macports Custom Views Plugin for Buildbot

Description

MacPorts currently uses a legacy version of Buildbot (0.8) as its continuous integration framework and hasn't upgraded due to certain drawbacks in the Waterfall view of the newer versions. However, the currently deployed version is outdated and fails in several aspects due to the absence of some key features such as:

  • The ability to write custom JavaScript views (UI components).
  • Triggering a build whenever a pull request is made. Currently, a build can be started only when patches are committed to the master branch.

This has led to some major setbacks with respect to developer productivity. MacPorts also needs some custom views in buildbot to be able to better analyze build history, commits, etc. The legacy version doesn't allow us to write such custom views. This project will involve upgrading the Macports Buildbot infrastructure to the latest version, developing a plugin for buildbot and writing custom views.

Student

Mentors

Links

Last modified 2 months ago Last modified on Jul 11, 2019, 8:39:46 PM