2 git_dir = File.expand_path "../../.git", __FILE__
3 File.directory?(git_dir) && git_dir
7 git_dir = File.expand_path "../../.git", __FILE__
8 File.exist?(git_dir) && git_dir
12 File.expand_path "../../.revision", __FILE__
16 @description ||= `git describe --tags --match=v* --abbrev=40 --long`
21 if m = describe_revision.match(/^v(\d+\.\d+(\.\d+)?)-(\d+)-g([0-9a-f]+)/)
22 patch = m[3] unless m[3] == "0"
23 version = [m[1], patch].compact.join(".c")
24 return version, release_date, m[4]
28 if File.exist? revision_file
29 return IO.read(revision_file).split
32 ["X.Y.Z", default_release_date, "build"]
37 m = `git show --format="%ci" HEAD`.lines.first.match(/^(\d+-\d+-\d+)/)
41 date || default_release_date
44 def default_release_date
45 Time.now.strftime "%F"
48 def write_release(path)
49 version, date, revision = release_revision
51 File.open path, "wb" do |f|
52 f.puts %[#define RBX_RUBY_VERSION "#{Rubinius::BUILD_CONFIG[:ruby_version]}"]
53 f.puts %[#define RBX_ENGINE_VERSION "#{version.split(".")[0, 3].compact.join(".")}"]
54 f.puts %[#define RBX_VERSION "#{version}"]
55 f.puts %[#define RBX_LIB_VERSION "#{version.split(/\./)[0..1].join}"]
56 f.puts %[#define RBX_RELEASE_DATE "#{date}"]
57 f.puts %[#define RBX_BUILD_REV "#{revision}"]