wiki:SummerOfCode2015Libsolv

This wiki gives detailed information of the project "Dependency calculation using SAT solving" as part of GSoC 2015. wiki:SummerOfCode2015#dependencies

Student Mentor
Jackson Isaac Clemens Lang

Installation and Testing

Installing gsoc15-dependency branch
Create a folder under ~/Development/libsolv so that we can clone and install the branch inside this prefix and not interfere with the stable MacPorts installation.

mkdir -p ~/Development/libsolv
cd ~/Development/libsolv
svn co https://svn.macports.org/repository/macports/branches/gsoc15-dependency
cd gsoc15-dependency/base
env PATH=/usr/bin:/bin:/usr/sbin:/sbin CFLAGS="-pipe -Os" ./configure --enable-readline --prefix ~/Development/libsolv/mp_gsoc && make
sudo make install

Creating alias for gsoc15-dependency port

echo "alias portlibsolv=\"$HOME/Development/libsolv/mp_gsoc/bin/port\"" >> ~/.bash_profile
echo "alias sudo=\"sudo \"" >> ~/.bash_profile

I have written a small shell script to do the above tasks at https://raw.githubusercontent.com/JacksonIsaac/macports-libsolv/master/mplibsolv.sh

Re-Build portindex
Currently if you are updating the ports via rsync, you will need to rebuild the portindex as conflicts field (required to set up solv information) has been added to the portindex in libsolv branch which is not yet merged with trunk. To do so run the following command:

sudo /path/to/libsolv/branch/prefix/bin/portindex -f

This will build the portindex again and may take ~10-15 minutes depending on the hardware configuration.

Note: You would have to do this each time you do a selfupdate to update the ports.
Workaround: You can sync via SVN SyncingWithSVN, as the portindex is generated locally.

Testing libsolv engine
Use -l option to use libsolv engine for search and install commands.

portlibsolv search -l <portname>
portlibsolv install -l <portname>
portlibsolv install -l <portname> <conflictingportname>

Note: portlibsolv is our alias for gsoc15-dependecy branch's port command.

Appendix

Filename Description
configure.ac Add libsolv as a subproject. This will set up libsolv while installing MacPorts.
doc/port.1.txt Add documentation related to libsolv
src/port/port.tcl Add option for libsolv.
In proc action_target add call to mportinstall which handles libsolv dependency engine in src/macports1.0/macports.tcl, when libsolv option passed.
src/port/portindex.tcl Add conflicts field to portindex. This is required for conflict resolution using libsolv.
src/macports1.0/Makefile.in Add macports_libsolv.tcl to SRCS.
src/macports1.0/tests/macports_libsolv.test Create unit test for libsolv related modules.
src/macports1.0/macports.tcl Add proc mportinstall to handle libsolv dependency engine and install packages returned by libsolv. Update mportsearch to call libsolv search, when -l option passed.
src/macports1.0/macports_libsolv.tcl Create new file macports_libsolv.tcl to define libsolv related modules.
vendor/Makefile.in Add rules to make libsolv package
vendor/libsolv.tar.gz Add libsolv tarball with autoconf build
Last modified 9 years ago Last modified on Sep 14, 2015, 12:59:32 PM