Any way to compile an old version from git?
Simon Marlow
marlowsd at gmail.com
Mon May 23 12:15:13 CEST 2011
On 22/05/2011 21:17, David Peixotto wrote:
> I wrote a python script that can be used to record and reinstate the commit
> state of all the git repositories used by GHC. It parses the output of the
> sync-all log command suggested by Simon to create a "fingerprint" which is
> just the pairs of (subdirectory, commit) that can be used to identify the
> current state of all the repos. Given a fingerprint, it can also restore the
> repositories to the fingerprint state by running a checkout of the appropriate
> commit in each subdir.
>
> If the sync-all log command is added to the build bot then the script can
> parse the build log to get the fingerprint and restore the repo state. It
> could also be added as a post-commit hook to create a running history of
> fingerprints.
>
> The script is available here:
>
> https://github.com/dmpots/ghc/blob/36df2f39af4d132dac4acbc11a271a95e2254e42/utils/fingerprint/fingerprint.py
>
> and if appropriate it can be merged from the fingerprint branch here:
>
> git://github.com/dmpots/ghc.git fingerprint
I merged in your branch. Thanks! Perhaps it would be a good idea to
document the usage of the tool on
http://hackage.haskell.org/trac/ghc/wiki/Building/GettingTheSources
Cheers,
Simon
> Some examples of usage follows.
>
> $ ./utils/fingerprint/fingerprint.py -h
> Usage: fingerprint (create|restore) [options]
>
> Options:
> -h, --help show this help message and exit
> -d DIR, --dir=DIR write output to directory DIR
> -o FILE, --output=FILE
> write output to file FILE
> -l FILE, --from-log=FILE
> reconstruct fingerprint from build log
> -f FILE, --from-fp=FILE
> reconstruct fingerprint from fingerprint file
> -n, --no-branch do not create a new branch when restoring fingerprint
> -g DIR, --ghc-dir=DIR
> perform actions in GHC dir
>
> Creating a fingerprint by running `sync-all` in the ghc repo:
>
> $ ./utils/fingerprint/fingerprint.py create
> .|36df2f39af4d132dac4acbc11a271a95e2254e42
> ghc-tarballs|e7b7b152083f7c3e3559e557a239757d41ac02a6
> libraries/Cabal|2da1e48c6be7ba85f1f8e8e35e7960e45b1eaac8
> <snip>
>
> Creating a fingerprint by parsing a build log that contains the `sync-all` log
> output
>
> $ ./utils/fingerprint/fingerprint.py create -l build.log
> .|9c23f06f3eb925dca063d5102b0ced4a9afe795e
> ghc-tarballs|e7b7b152083f7c3e3559e557a239757d41ac02a6
> libraries/Cabal|2da1e48c6be7ba85f1f8e8e35e7960e45b1eaac8
> <snip>
>
> Creating a fingerprint and save the result as a timestamped file. Could be a
> useful post-commit hook.
>
> $ ./utils/fingerprint/fingerprint.py create -d /tmp
> Writing fingerprint to: /tmp/2011-05-22_14-57-32.fp
>
> Restore a set of commits from a fingerprint file.
>
> $ ./utils/fingerprint/fingerprint.py restore -f /tmp/2011-05-22_14-57-32.fp
> == libraries/filepath git checkout 92d211a2752fe8827582ae0d97efd18722ad3d87
> HEAD is now at 92d211a... Update source repo location to be the git repo in .cabal file
> <snip>
> Switched to a new branch 'fingerprint_2011-05-22_14-57-32_fp'
>
> Restore a set of commits by parsing a build log that contains the `sync-all`
> log output
>
> $ ./utils/fingerprint/fingerprint.py restore -l build.log
> == libraries/filepath git checkout 92d211a2752fe8827582ae0d97efd18722ad3d87
> HEAD is now at 92d211a... Update source repo location to be the git repo in .cabal file
> <snip>
> Switched to a new branch 'fingerprint_build_log'
>
> -David
>
> On May 19, 2011, at 7:05 AM, Erik de Castro Lopo wrote:
>
>> Edward Z. Yang wrote:
>>
>>> What might also be pretty useful is a global "checkout a commit from
>>> before this time",
>>
>> I believe this to be doable. I'm working on a tool for it.
>>
>>> which would also work even in the case of missing
>>> build logs (we should also publish a log of build log hashes, so you
>>> can have some record of known good builds).
>>
>> Having successful builds record the git hash of all repos would
>> be a great thing to have in future.
>>
>> Erik
>> --
>> ----------------------------------------------------------------------
>> Erik de Castro Lopo
>> http://www.mega-nerd.com/
>>
>> _______________________________________________
>> Cvs-ghc mailing list
>> Cvs-ghc at haskell.org
>> http://www.haskell.org/mailman/listinfo/cvs-ghc
>>
>
>
> _______________________________________________
> Cvs-ghc mailing list
> Cvs-ghc at haskell.org
> http://www.haskell.org/mailman/listinfo/cvs-ghc
More information about the Cvs-ghc
mailing list