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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }