Fixed some C/C++ compiler errors due to stricter checks.
[rubinius.git] / rakelib / release.rb
blob066934fe9469d08813e979c12bfe115a3964566b
1 def git_directory
2   git_dir = File.expand_path "../../.git", __FILE__
3   File.directory?(git_dir) && git_dir
4 end
6 def in_git?
7   git_dir = File.expand_path "../../.git", __FILE__
8   File.exist?(git_dir) && git_dir
9 end
11 def revision_file
12   File.expand_path "../../.revision", __FILE__
13 end
15 def describe_revision
16   @description ||= `git describe --tags --match=v* --abbrev=40 --long`
17 end
19 def release_revision
20   if git_directory
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]
25     end
26   end
28   if File.exist? revision_file
29     return IO.read(revision_file).split
30   end
32   ["X.Y.Z", default_release_date, "build"]
33 end
35 def release_date
36   if git_directory
37     m = `git show --format="%ci" HEAD`.lines.first.match(/^(\d+-\d+-\d+)/)
38     date = m[1]
39   end
41   date || default_release_date
42 end
44 def default_release_date
45   Time.now.strftime "%F"
46 end
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}"]
58   end
59 end