| 146 | ==== Configuration and environment selftest ==== |
| 147 | |
| 148 | Add a command to check current setup for common pitfalls (e.g. stuff |
| 149 | in /usr/local), inspired by 'brew doctor' from Homebrew. |
| 150 | |
| 151 | Classification: easy[[BR]] |
| 152 | Programming languages: Tcl[[BR]] |
| 153 | Potential mentor: TBD |
| 154 | |
| 155 | |
| 156 | ==== Improve startupitem code ==== #startupitem |
| 157 | |
| 158 | MacPorts has the ability to automatically generate startup items for the current platform. For Mac OS X, these are plist files for launchd which will be installed as `/Library/LaunchDaemons/org.macports.*.plist`. The current code would need a little care and could make use of options which have been added in recent releases of launchd. |
| 159 | |
| 160 | Classification: easy[[BR]] |
| 161 | Programming languages: Tcl, C[[BR]] |
| 162 | Potential mentor: TBD |
| 163 | |
| 164 | ==== Dependency calculation during upgrade ==== #depcalc |
| 165 | |
| 166 | Revamp the upgrade code to figure out (and optionally report) what |
| 167 | it's going to do and detect conflicts etc. before it actually changes |
| 168 | anything, and maybe even roll back to the original state if there's a |
| 169 | failure |
| 170 | |
| 171 | Classification: medium[[BR]] |
| 172 | Programming languages: Tcl, C[[BR]] |
| 173 | Potential mentor: TBD |
| 174 | |
| 175 | ==== Reclaim disk space ==== #reclaim |
| 176 | |
| 177 | Improve 'port clean' to be able to delete distfiles for a specified |
| 178 | version, and all distfiles not needed by currently installed versions of |
| 179 | ports. |
| 180 | |
| 181 | In general, add an action for reclaiming disk space, which would delete old |
| 182 | distfiles and archives and uninstall inactive ports (and anything else |
| 183 | that would help) |
| 184 | |
| 185 | Classification: easy[[BR]] |
| 186 | Programming languages: Tcl, C[[BR]] |
| 187 | Potential mentor: TBD |
| 188 | |
| 189 | ==== Parallel execution ==== #parallel |
| 190 | |
| 191 | When an action will run targets on multiple ports, run them in |
| 192 | parallel when possible and sensible (requires tracking dependencies |
| 193 | between both targets and ports and figuring out the maximum reasonable |
| 194 | parallelism, e.g. several ports can fetch at once on a fast connection |
| 195 | but you only want one 'make -j8' at a time) |
| 196 | |
| 197 | Classification: very challenging[[BR]] |
| 198 | Programming languages: Tcl, C[[BR]] |
| 199 | Potential mentor: TBD |
| 200 | |
| 201 | ==== Trace mode ==== #tracemode |
| 202 | |
| 203 | Improve trace mode to the point where developers (and the build |
| 204 | server) could run with it always turned on. |
| 205 | |
| 206 | Classification: medium[[BR]] |
| 207 | Programming languages: Tcl, C[[BR]] |
| 208 | Potential mentor: TBD |
| 209 | |
| 210 | ==== Migrate muniversal into base (lipo merging) ==== #muniversal |
| 211 | |
| 212 | Integrate muniversal into base. Not just a direct copy-and-paste, but |
| 213 | in a way that makes sense and preserves the way portfiles are expected |
| 214 | to behave (which the current portgroup doesn't). |
| 215 | |
| 216 | Classification: medium[[BR]] |
| 217 | Programming languages: Tcl, C[[BR]] |
| 218 | Potential mentor: TBD |
| 219 | |
| 220 | ==== Fetching from version control ==== #fetchtypes |
| 221 | |
| 222 | Make cvs/svn/git/hg/bzr fetch types checkout into the distfiles dir |
| 223 | and then export into the work dir, to avoid having to re-fetch after |
| 224 | cleaning the work dir. |
| 225 | |
| 226 | Classification: easy[[BR]] |
| 227 | Programming languages: Tcl, C[[BR]] |
| 228 | Potential mentor: TBD |
| 229 | |
| 230 | ==== Interactive port command ==== #interactive |
| 231 | |
| 232 | Write an interactive command-line tool that can be used instead of the |
| 233 | non-interactive port(1) |
| 234 | |
| 235 | Classification: medium[[BR]] |
| 236 | Programming languages: Tcl, C[[BR]] |
| 237 | Potential mentor: TBD |
| 238 | |