Mercurial > projects > ldc
annotate revisions.pl.in @ 1112:829ac3f30103
Updating revisions.pl.in:
- Change the way the LLVM SVN revision is detected, using `svn info` instead
of `svnversion`. This speeds it up significantly on my machine (especially
when the LLVM SVN checkout isn't in disk cache).
- Add "last changed date" to SVN checkouts too, not just unpacked tarballs
- No longer rely on SVN revision to detect release vs trunk checkouts, treat
release checkout the same as unpacked release tarball. (Except for date
determination, which uses SVN date instead of filesystem date)
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Fri, 13 Mar 2009 16:18:01 +0100 |
parents | dc576c7e4b1e |
children | 123812e02bc8 |
rev | line source |
---|---|
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
2 |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
3 use strict; |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
4 use warnings; |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
5 use File::stat; |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
6 use Time::localtime; |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
7 |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
8 my $llvm_src = `perl @LLVM_CONFIG@ --src-root`; |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
9 |
1112
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
10 my $svn_info = `svn info $llvm_src 2>/dev/null`; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
11 |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
12 my $extra_includes = ""; |
1064
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
972
diff
changeset
|
13 my $llvm_rev_str; |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
972
diff
changeset
|
14 my $llvm_rev_nr; |
1112
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
15 my $llvm_date = ""; |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
16 |
1112
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
17 if ($svn_info =~ /^URL:.*\/trunk\s*$/m && $svn_info =~ /^Last Changed Rev:\s*(\d+)\s*/m) { |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
18 $llvm_rev_str = qq!"LLVM trunk rev. $1"!; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
19 $llvm_rev_nr = $1; |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
20 } else { |
1112
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
21 # Either non-trunk or 'svn info' didn't report "Last Changed Rev". |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
22 $extra_includes = qq!#include "llvm/Config/config.h"!; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
23 $llvm_rev_str = "PACKAGE_STRING"; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
24 # Assume latest release, so < any version we should be testing for. |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
25 $llvm_rev_nr = 0; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
26 } |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
27 |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
28 # Use SVN date even if non-trunk: |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
29 if ($svn_info =~ /^Last Changed Date: ([^(]*?)\s*(\(|$)/m) { |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
30 $llvm_date = qq!" ($1)"!; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
31 } else { |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
32 # Otherwise, try to get it from the libdir |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
33 my $llvm_lib = `perl @LLVM_CONFIG@ --libdir`; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
34 $llvm_lib =~ s/\s+$//; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
35 if (-d $llvm_lib) { |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
36 my $mod_time = ctime(stat($llvm_lib)->mtime); |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
37 $llvm_date = qq!" ($mod_time)"!; |
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
38 } |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
39 } |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
40 |
972
d66ab756c75b
Change the way the version is printed (more verbose, with short hash)
Frits van Bommel <fvbommel wxs.nl>
parents:
873
diff
changeset
|
41 my $ldc_rev = `hg -R@PROJECT_SOURCE_DIR@ log -r qparent --template '{rev}:{node|short} ({date|isodate})' 2>/dev/null || hg -R@PROJECT_SOURCE_DIR@ tip --template '{rev}:{node|short} ({date|isodate})'`; |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
42 |
873
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
43 my $out = qq!#ifndef LDC_VERSIONS_H |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
44 #define LDC_VERSIONS_H |
1112
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
45 $extra_includes |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
46 |
1064
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
972
diff
changeset
|
47 // LLVM version string, for use in -version output |
1112
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
48 #define LLVM_REV_STR $llvm_rev_str$llvm_date |
1064
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
972
diff
changeset
|
49 // LLVM svn revision number, used to adapt to changes in LLVM |
1112
829ac3f30103
Updating revisions.pl.in:
Frits van Bommel <fvbommel wxs.nl>
parents:
1065
diff
changeset
|
50 // (Is 0 if LLVM is not an SVN trunk version) |
1064
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
972
diff
changeset
|
51 #define LLVM_REV $llvm_rev_nr |
f0b6549055ab
Make LDC work with LLVM trunk (s/LinkOnceLinkage/LinkOnceOdrLinkage/)
Frits van Bommel <fvbommel wxs.nl>
parents:
972
diff
changeset
|
52 // LDC version string, for use in -version output |
972
d66ab756c75b
Change the way the version is printed (more verbose, with short hash)
Frits van Bommel <fvbommel wxs.nl>
parents:
873
diff
changeset
|
53 #define LDC_REV "rev. $ldc_rev" |
853
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
54 |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
55 #endif // LDC_VERSIONS_H\n!; |
82ad6c0c601c
Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents:
diff
changeset
|
56 |
873
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
57 my $revh; |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
58 my $old = ""; |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
59 open $revh, "revisions.h" and $old = join "", <$revh>; |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
60 |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
61 if ($old ne $out) { |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
62 open $revh, ">revisions.h" or die "cannot create revisions.h: $!"; |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
63 print $revh $out; |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
64 close $revh; |
a331ce9bc749
fix unnecessary revisions.h regeneration and mars.c recompilation
elrood
parents:
853
diff
changeset
|
65 } |