Improving the Ports Collection Infrastructure (Part two)

As a SoC student, my goal is to make some enhancements and implement some new features to make the Ports Collection even better, more efficient, and easier to use.


2007. 08. 20.: This is the "pencils down" date determined by Google, thus I'm trying to summarize my work what I have done so far:

Summaryzing my progress, I can say (almost) 3 projects are done from the 6, but those 3 includes the 2 most important ones (DESTDIR,, so I consider it a productive summer at all and I will work on the minor unfinished projects later, as well.

Description of the subprojects

Rework the DESTDIR implementation

Last summer, I worked on this task, but it as more difficult as I thought before. The implementation that I wrote got so hacky and over-complicated, that it is nearly useless now. I'm working on backing this code out and remove the feature. I'd like to implement a fully chrooted solution, which is more straightforward and useful. In the best case, I can finish it before the summer, but if not, I'd like to finish it as a part of this project.

See the DESTDIR page for more info.

Status: Committed to CVS.

Cleanup of the USE_* and WITH_* variables

The WITH_* make variables should be user-settable, while USE_* is only for internal use. I would like to investigate about these ones and make them more consistent.

Status: Committed to CVS.

PORTDOCS auto install

A lot of the ports just need to install all files listed in PORTDOCS from WRKSRC to DOCSDIR. For these it can be installed automatically in the post-install stage, and for the remaining ones, the custom code can be kept.

Status: Not yet started


With new versions of GNU configure, the syntax of the command line options have been changed, this issue is described in ports/52917. Since the PR was submitted a lot of time has been elapsed, but nothing happened. I want to finally chnage this option and fix the ports that do not work with the new syntax.

Status: Committed to CVS. This was completed by rafan@.

Extract Perl code from

For the most significant features, we have an own Makefile, like for Python, for Ruby, etc., but Perl has not have such a file, all of the Perl support is implemented in This is not the best solution, since it makes the main Makefile bigger and harder to understand. The other concern is that Perl-related variable expansions and shell invocations always run for each and every port during the index build, not just for the actually affected ones. In theory, this can make the index build slower, we might gain some performance issues as well by moving the Perl code into an own Makefile.

Status: Committed to CVS.

Environment cleanup

According to ports/86106 and ports/101120, MAKE_ENV is not complete, we should add CC and CXX to it for ports to respect CFLAGS. Actually, a lot of the ports do this in the port Makefile, but why not make the life easier and do it automatically? I want to make a patch and address the upcoming issues if there are such. There are also a bunch of commonly used variables in MAKE_ENV and in CONFIGURE_ENV. We can make the life easier if we handle those in the infrastructure. The deliverables are easier porting as porters usually won't have to deal with this any more and cleaner Makefiles. Besides, we have a policy to make our ports respct CC, CXX, CFLAGS, etc, but this is not always the case. This might be one step towards that goal as well.

Status: Partly done by pav@.

GáborSoC2007 (last edited 2008-08-21T11:09:00+0000 by GáborKövesdán)