Hi, As you all know, GSoC 2015 final evaluation and code submission is almost near I would like to share my experience working with the MacPorts community and share details about my work.
My project is to upgrade dependency calculation using SAT Solver. We initially started by testing which solver works better CUDF or libsolv and then depending on the results we chose libsolv as SAT Solver to be used to integrate with MacPorts. Branch link: https://trac.macports.org/browser/branches/gsoc15-dependency Installation: Just clone the branch and run the normal ./configure and make, make install commands. We have made installing libsolv branch easier and efficient by converting libsolv build to autoconf build and added it as a subproject. (No more manual set up of libsolv :)) For making things easier, I have tried to write a shell script: https://raw.githubusercontent.com/JacksonIsaac/macports-libsolv/master/mplibsolv.sh Here's a brief summary of our project. Work Done: -> Create libsolv pool by reading PortIndex (added conflicts field) and registry. -> Implemented search using libsolv (mportsearch in macports.tcl) -> Create unit tests for testing libsolv module. -> Upgraded dependency calculation and installation using libsolv. (mportinstall in macports.tcl) -> Conflict resolution with better results while using libsolv. -> Converted libsolv build from cmake to autoconf and added it to vendor/ so that libsolv can be built and installed as a subproject while installing MacPorts. To be Done: -> Add variant support with libsolv. (Contacted upstream developer for their inputs) -> Differentiate between build and run time dependency. -> Add support for bin:, lib: or path: style dependencies. At the moment we are not yet architecture-aware (we just assume an architecture for each package). -> Add support for uninstalling stuff using libsolv. To test the libsolv engine, you can use -l option. E.g., port search -l <portname> port install -l <portname> port install -l <portname> <conflictingportname> >From the tests and use cases that we looked into, libsolv implementation looks promising from the results. More work needs to be done to support all the features that MacPorts and libsolv has to offer. Plans after GSoC: Continue working and maintaining libsolv module. Optimize code and provide support to users and developers. Add variants support with inputs from upstream libsolv developers. Detailed reports are posted on my blog under gsoc-2015/ at: https://jacksonisaac.wordpress.com/category/gsoc-2015/ This all wouldn't be possible without constant support and help from neverpanic. I look forward to keep working and make MacPorts project better. -- Jackson Isaac _______________________________________________ macports-dev mailing list [email protected] https://lists.macosforge.org/mailman/listinfo/macports-dev
