On Sat, Dec 10, 2011 at 10:12 PM, <rixed@happyleptic.org> wrote:
What I'd really like is a way to mix any version I want of the packages I
install, especially experimental versions for the packages I want to test or
contribute to.
I stopped using GODI some time ago because I wanted master of ocaml and
batteries but stable versions of everything else.  So I ended up rolling my
own makefile-based installation/upgrade tool which is both annoying and
archaic.

Here is a little trick that I did to get full control of which version of each package gets installed.

In rocketboost, file 'godi-tools/mk/build/mk/bsd.prefs.mk' around line 700 change to use your private repository.

# The primary backup site.                                                                                                                                                                       
MASTER_SITE_BACKUP=     \                                                                                                                                                                        
        http://192.168.100.100/godi/distfiles/                                                                                                                                         
#       http://godi-backup2.camlcity.org/godi-backup/ \                                                                                                                                          
#       http://www.ocaml-programming.de/godi-backup/ \                                                                                                                                           
#       http://godi.0ok.org/godi-backup/                                                                                                                                                         
                                                                                                                                                                                                 
# Where to put distfiles that don't have any other master site                                                                                                                                   
MASTER_SITE_LOCAL= \                                                                                                                                                                             
        ${MASTER_SITE_BACKUP:=LOCAL_PORTS/}                                                                                                                                                      
                                                                                                                                                                                                 
GODI_BUILD_SITE?= \                                                                                                                                                                              
        http://192.168.100.100/godi/${GODI_SECTION}                                                                                                                                    
#        http://www.ocaml-programming.de/godi-build/${GODI_SECTION}/                                                                                                                             
# This must only be one URL.                                                                                                                                                                     
                                                                                                                                                                                                 
GODI_BUILD_BACKUP_SITES= \                                                                                                                                                                       
        http://192.168.100.100/godi/${GODI_SECTION}                                                                                                                                    
#       http://godi-backup2.camlcity.org/godi-build/${GODI_SECTION}/ \                                                                                                                           
#       http://godi.0ok.org/godi-build/${GODI_SECTION}/                                                                                                                                          
                                                                                                                                                                                                 
GODI_BUILD_SITES= \                                                                                                                                                                              
        ${GODI_BUILD_SITE} \                                                                                                                                                                     
        ${GODI_BUILD_BACKUP_SITES}                                                                                                                                                               
                                                                                                                                                                                                 
ROCKETBOOST_BUILD_SITES?= \                                                                                                                                                                      
        http://192.168.100.100/godi/                                                                                                                                                   
#       http://www.ocaml-programming.de/godi-build/rocketboost/ \                                                                                                                                
#       http://godi-backup2.camlcity.org/godi-build/rocketboost/ \                                                                                                                               
#       http://godi.0ok.org/godi-build/rocketboost/                                                                                                                                              

You also need to patch godi-tools package in the same way, so that the bsd.prefs.mk that gets installed with it and is used after the bootstrap is also pointing to the private repository.

At your server you keep the distfiles in the godi/distfiles/ folder.  This is similar to the http://www.ocaml-programming.de/godi-backup/ for the official GODI.  For the build files you keep them and 'available.new' under a section directory e.g. 3.12 similar to http://www.ocaml-programming.de/godi-build/3.12 or have a dev section or whatever section you want.

With this in place you can manage your own GODI "universe". You can mix whatever version of packages you want, by editing the available.new. Guess you might have to delete the local copy of a package in build/buildfiles/<package>.tar.gz and also <apps-|godi-<package> if you decide to rollback to an old version of the package.

With this setup you should also have an official version of GODI that fetch from the official places. This is not the installation you work with but occasionally you can switch to it (by changing the PATH variable or a sym-link), do an update and see what new packages are available. You copy the new distfiels you want to your distfiles/ directory at your server and the buildfiles to the section you want them in and update the available.new for that section.

Having this on a server makes it possible for a team to work with the same versions of the packages in an easy way.

Maybe it is possible to override the locations without patching the 'bsd.prefs.mk' files, but this was the way I ended up doing it, and I would be glad to hear if there is some easier way.

Hopes this helps

 
Is this in the planned feature list?


--
Caml-list mailing list.  Subscription management and archives:
https://sympa-roc.inria.fr/wws/info/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs