splice is tool which eases the task of maintaining a built-from-source local repository of software on unix-like systems. The typical use-case would be creating a '/usr/local'-style hierarchy of symlinks from an '/opt'-style directory tree.
splice is a replacement for graft.
splice is open-source software released under the GNU GPL version 2.
splice is written in python.
splice consists of three utilities: splice, unsplice, and prune.
example: installing foo-1.0:
wget -O - http://website.domain.tld/software/foo-1.0.tar.gz | gunzip | tar x cd foo-1.0 ./configure --prefix=~/opt/foo-1.0 make make install splice ~/opt/foo-1.0 ~/local
example: upgrading to foo-2.0:
wget -O - http://website.domain.tld/software/foo-2.0.tar.gz | gunzip | tar x cd foo-2.0 ./configure --prefix=~/opt/foo-2.0 make make install unsplice ~/opt/foo-1.0 ~/local splice ~/opt/foo-2.0 ~/local
If foo-1.0 had been installed directly into ~/local instead of ~/opt/foo-1.0, you would need to prune the old files out of the way first:
wget -O - http://website.domain.tld/software/foo-2.0.tar.gz | gunzip | tar x cd foo-2.0 ./configure --prefix=~/opt/foo-2.0 make make install prune ~/opt/foo-2.0 ~/local splice ~/opt/foo-2.0 ~/local
This would create a directory ~/local/.pruned/home_<user>_opt_foo-2.0~<datestring>~<uniquestring> which would contain all of the files which would have conflicted with foo-2.0.
This arrangement makes it easy to "undo" the prune later if needed (just rsync the '.pruned' directory back into its original location).
0.2 (Apr 28th 2008)
- first public release
0.3 (Jun 20th 2008)
- unsplice no longer attempts to remove mountpoints
0.4 (Oct 13th 2008)
- explicitly use 'python2.5'
0.5 (Oct 15th 2008)
- fixed bug in how symlinks which point to dirs are handled
0.6 (Nov 19th 2008)
- fixed another symlink-related bug.
0.7 (Jan 8th 2009)
- decided on policy of not touching symlinks to dirs in unsplice.
0.8 (Apr 13th 2009)
- fixed incorrect handling of '/' as the destination directory.