Define the per-project category and difficulty at the template level,
instead of manually tagging the project pages. While doing this, prefix
the tags with "category:" and "difficulty:" to make them easier to
understand.

[[!template id=project
title="Add dependency information to binary packages"
contact="""
[tech-pkg](mailto:tech-pkg@NetBSD.org)
"""
mentors="""
[Thomas Klausner](mailto:wiz@NetBSD.org)
"""
category="pkgsrc"
difficulty="hard"
duration="3 months"
description="""
Change infrastructure so that dependency information (currently in buildlink3.mk files) is installed with a binary package and is used from there
This is not an easy project.
pkgsrc currently handles dependencies by including buildlink3.mk files spread over pkgsrc. The problem is that these files describe the current state of pkgsrc, not the current state of the installed packages.
For this reason and because most of the information in the files is templated, the buildlink3.mk files should be replaced by the relevant information in an easily parsable manner (not necessarily make syntax) that can be installed with the package.
Here the task is to come up with a definitive list of information necessary to replace all the stuff that's currently done in buildlink3.mk files (including: dependency information, lists of headers to pass through or replace by buildlink magic, conditional dependencies, ...)
The next step is to come up with a proposal how to store this information with installed packages and how to make pkgsrc use it.
Then the coding starts to adapt the pkgsrc infrastructure to do it and show with a number of trivial and non-trivial packages that this proposal works.
It would be good to provide scripts that convert from the current state to the new one, and test it with a bulk build.
Of course it's not expected that all packages be converted to the new framework in the course of this project, but the further steps should be made clear.
"""
]]
[[!tag gsoc]]