| 153 | ==== Speed up trace mode ==== #tracemode |
| 154 | |
| 155 | Trace mode is a library preloading-based sandbox used to hide files that a port does not depend on or that are not part of a standard system's installation (such as `/usr/local`). This can avoid problems due to incompatible user-installed software and avoid "automagic" dependencies and increase the reproducibility of builds. |
| 156 | |
| 157 | Unfortunately, enabling trace mode adds a significant performance penalty to the build process. However, the trace mode code can certainly be optimized using appropriate cache data structures, such as a modified [http://en.wikipedia.org/wiki/Trie Trie]. Your task would be to identify the performance bottlenecks, draft appropriate caching data structures and implement them. |
| 158 | |
| 159 | * Difficulty: Medium to Hard |
| 160 | * Programming languages: Tcl, C |
| 161 | * Potential mentors: cal |
| 162 | |
| 163 | ==== Auto-detection of build dependencies ==== #dependencies-gen |
| 164 | |
| 165 | When creating a new portfile one of the problems is always the specification of the complete (and preferably minimal) list of build dependencies, especially when one starts with a complete install where most dependencies are already available. |
| 166 | |
| 167 | It is possible to invert the trace mode logic so that it detects all files a configure and/or build process accesses, in ${prefix} but outside of the port's build directory. This information can then be used to generate a dependency tree and information from the registry can then be used to simplify that tree so that it only lists direct dependencies. Can be combined with the above project. Consult mentor. |
| 168 | |
| 169 | * Difficulty: Medium to Easy |
| 170 | * Programming languages: Tcl, C |
| 171 | * Potential mentors: cal |
| 172 | |
169 | | ==== Speed up trace mode ==== #tracemode |
170 | | |
171 | | Trace mode is a library preloading-based sandbox used to hide files that a port does not depend on or that are not part of a standard system's installation (such as `/usr/local`). This can avoid problems due to incompatible user-installed software and avoid "automagic" dependencies and increase the reproducibility of builds. |
172 | | |
173 | | Unfortunately, enabling trace mode adds a significant performance penalty to the build process. However, the trace mode code can certainly be optimized using appropriate cache data structures, such as a modified [http://en.wikipedia.org/wiki/Trie Trie]. Your task would be to identify the performance bottlenecks, draft appropriate caching data structures and implement them. |
174 | | |
175 | | * Difficulty: Medium to Hard |
176 | | * Programming languages: Tcl, C |
177 | | * Potential mentors: cal |
178 | | |
179 | | ==== Auto-detection of build dependencies ==== #dependencies-gen |
180 | | |
181 | | When creating a new portfile one of the problems is always the specification of the complete (and preferably minimal) list of build dependencies, especially when one starts with a complete install where most dependencies are already available. |
182 | | |
183 | | It is possible to invert the trace mode logic so that it detects all files a configure and/or build process accesses, in ${prefix} but outside of the port's build directory. This information can then be used to generate a dependency tree and information from the registry can then be used to simplify that tree so that it only lists direct dependencies. Can be combined with the above project. Consult mentor. |
184 | | |
185 | | * Difficulty: Medium to Easy |
186 | | * Programming languages: Tcl, C |
187 | | * Potential mentors: cal |
188 | | |