Changes between Version 293 and Version 294 of SummerOfCode


Ignore:
Timestamp:
Jan 30, 2018, 7:22:19 AM (7 years ago)
Author:
umeshksingla (Umesh Singla)
Comment:

moving trace optimization project up

Legend:

Unmodified
Added
Removed
Modified
  • SummerOfCode

    v293 v294  
    151151* Contact: raimue, l2dy
    152152
     153==== Speed up trace mode ==== #tracemode
     154
     155Trace 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
     157Unfortunately, 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
     165When 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
     167It 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
    153173==== Improve startupitem code ==== #startupitem
    154174
     
    167187* Potential mentors: larryv, pixilla
    168188
    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 
    189189==== Improve fetching from version control ==== #fetchtypes
    190190