Cannot easily get old versions

Issue #74 new
Stephen Biggs-Fox created an issue

I'm trying to build GS2 6.0.1 for testing purposes. However, it is not easy to get the code for this version in a build-able form.

I tried using my existing GS2 git repository:

git tag git checkout 6.0.1

Upon which I get the following warnings:

warning: unable to rmdir 'Makefiles': Directory not empty warning: unable to rmdir 'externals/utils': Directory not empty

Carrying on regardless, I tried:

make depend make gs2

However, I then get error messages about incorrect include paths. I'm guessing this is something to do with still having build artefacts from the new directory structure hanging around. So I clear those out with:

git clean -fdx rm -rf Makefiles/ externals/ utils/

And try again:

make depend

Except now I have no Makefiles directory so I get:

Makefile:219: Makefile.archer: No such file or directory make: *** No rule to make target `Makefile.archer'. Stop.

So I re-instate them and try again:

git checkout next git submodule update --recursive git checkout 6.0.1 mv externals/utils utils make depend make gs2

But I get the following error message:

ftn -r8 -O2 -xCORE-AVX-I -I. -Iutils -Igeo -I.. -c runtime_tests.f90 runtime_tests.f90(79): error #6404: This name does not have a type, and must have an explicit type. [GIT_STATE] if(GIT_STATE.eq."clean")then -------^ compilation aborted for runtime_tests.f90 (code 1) make: *** [runtime_tests.o] Error 1 rm mp.f90

I'm guessing this is because Makefiles and utils are at the version corresponding to next, which is obviously not the version corresponding to 6.0.1. Therefore, I looked on the sourceforge website to work out which was the correct version (Makefiles = r3823; utils = r3488), got the commit message for those SVN commits, found the matching commits in the Makefiles and utils history, checked those out and tried again:

cd Makefiles git checkout 9f5689f cd .. mv utils externals/utils cd externals/utils git checkout d781fee cd ../.. mv externals/utils utils make distclean make depend make gs2

Upon which I get this error:

ftn -r8 -double-size 128 -O2 -xCORE-AVX-I -I. -Igeo -I.. -c layouts_type.f90 layouts_type.f90(11): warning #6379: The structure contains one or more misaligned fields. [G_LAYOUT_TYPE] type :: g_layout_type ----------^

So I gave up on git and tried checking out the old SVN repository instead:

svn checkout svn://svn.code.sf.net/p/gyrokinetics/code/gs2/tags/6.0/6.0.1 gs2-6.0.1

However, I then get the following error messages:

svn: warning: Error handling externals definition for 'gs2-6.0.1_test/utils': svn: warning: OPTIONS of 'https://svn.code.sf.net/p/gyrokinetics/code/utils/trunk': SSL handshake failed: SSL error: tlsv1 alert protocol version (https://svn.code.sf.net) svn: warning: Error handling externals definition for 'gs2-6.0.1_test/Makefiles': svn: warning: OPTIONS of 'https://svn.code.sf.net/p/gyrokinetics/code/Makefiles/trunk': SSL handshake failed: SSL error: tlsv1 alert protocol version (https://svn.code.sf.net)

I then had to look on the sourceforge website to work out which version of Makefiles and utils went with 6.0.1 and check them out individually:

cd 6.0.1 svn checkout -r3823 svn://svn.code.sf.net/p/gyrokinetics/code/Makefiles/trunk Makefiles svn checkout -r3488 svn://svn.code.sf.net/p/gyrokinetics/code/utils/trunk utils make depend make gs2

This worked but it was a convoluted process to get there. Less familiar users / developers might struggle with this. Should we make it easier to get and build old versions? I would have expected my first try with the git repository to work (and I suspect others would expect that to work too as it is the obvious and standard way). Is it even possible to get the git method to work? Is it worth it?

Comments (3)

  1. David Dickinson

    I think the svn issues with SSL are not GS2 related and we don't have much control over this -- I'd have expected this to work and when I just tried it locally it did! I think it was probably just a sourceforge "blip".

    The git method is a bit more involved due to the change from svn externals to git submodules. This couldn't be automated for every branch+commit so we just fixed it for master/trunk/next when we first migrated. Other old branches require you to checkout the relevant version of utils and makefiles -- the easiest way is probably to look at the svn repository. When doing a "deep dive" into the history I'd recommend trying out a fresh clone first, this tends to avoid issues with changing between branches with very different sub-module setups.

    I agree it would probably be a good idea for us to try to provide easy access to previous releases though. Perhaps we can look at doing this for old tags and packaging as tar.gz or similar? Any thoughts @ZedThree and @josephparker ?

  2. Peter Hill

    We can upload tarballs of previous versions here: https://bitbucket.org/gyrokinetics/gs2/downloads/. The sourceforge site has tarballs for 6.0.1 and 6.0.0. Previous versions would need tarballs making.

    The gs2-6.0.1.tgz (and 6.0.0) from here works for me, the tests compile and all pass. I did need to modify Makefile to get the tests to compile though:

    - SVN_REV='"$(shell svnversion -n .)"'
    + SVN_REV='$(shell svnversion -n .)'
    

    We could (and I think we should) just replace this with a hard-coded value anyway

  3. David Dickinson

    @Peter Hill and @Joseph Parker do you have any views on making old versions (probably v6 onwards) available to download as a bundle from bitbucket?

  4. Log in to comment