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.
Status
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:
- The DESTDIR project is fully finished and committed to CVS. If new issues or feature request come up, I will continue working on it.
- The Perl cleanup is almost done, I will have a mega patch for testing soon.
- The environment cleanup showed to be less useful than I thought. There are a lot of special cases, so it broke a lot of things and could not reach the tree. I spent a lot of time with investigations, though. Later, I will look into it again, and will try to do it step-by-step.
- I've fixed some ports, that use USE_* variables incorrectly, but some still remained. This is a minor cleanup project, I'm surely going to finish it.
- CONFIGURE_TARGET is ambiguous, it can do harm as the environment cleanup did, so it needs more investigations.
- The PORTDOCS auto-install project has not been started due to lack of time.
Summaryzing my progress, I can say (almost) 3 projects are done from the 6, but those 3 includes the 2 most important ones (DESTDIR, bsd.perl.mk), 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
CONFIGURE_TARGET update
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 bsd.port.mk
For the most significant features, we have an own Makefile, like bsd.python.mk for Python, bsd.ruby.mk for Ruby, etc., but Perl has not have such a file, all of the Perl support is implemented in bsd.port.mk. 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@.