summaryrefslogtreecommitdiff
path: root/tool
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2022-09-17 21:16:06 +0900
committerGitHub <noreply@github.com>2022-09-17 21:16:06 +0900
commit38a7a13ac6ed6bba2584def7d7121257eb85e051 (patch)
tree1c20408e50d0fdd78e6277d9fa2dea05d785a88f /tool
parentca4cbe59eda77a3855094c843486759868794e85 (diff)
Auto-generate the release date on version.h from git CommitDate (#6382)
* Auto-generate the release date on version.h from git CommitDate * Generate revision.h on mswin
Notes
Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
Diffstat (limited to 'tool')
-rwxr-xr-xtool/file2lastrev.rb10
-rw-r--r--tool/lib/vcs.rb22
-rwxr-xr-xtool/make-snapshot2
3 files changed, 27 insertions, 7 deletions
diff --git a/tool/file2lastrev.rb b/tool/file2lastrev.rb
index 008e4b55e5..476437a995 100755
--- a/tool/file2lastrev.rb
+++ b/tool/file2lastrev.rb
@@ -66,7 +66,13 @@ OptionParser.new {|opts|
new_vcs["."]
end
}
-exit unless vcs
+unless vcs
+ # Output only release_date when .git is missing
+ if @output == :revision_h
+ puts VCS.release_date(Time.now - 10) # same as make-snapshot
+ end
+ exit
+end
@output =
case @output
@@ -76,7 +82,7 @@ exit unless vcs
}
when :revision_h
Proc.new {|last, changed, modified, branch, title|
- vcs.revision_header(last, modified, branch, title, limit: @limit)
+ vcs.revision_header(last, modified, modified, branch, title, limit: @limit)
}
when :doxygen
Proc.new {|last, changed|
diff --git a/tool/lib/vcs.rb b/tool/lib/vcs.rb
index 05d95061c4..d33d41dba1 100644
--- a/tool/lib/vcs.rb
+++ b/tool/lib/vcs.rb
@@ -95,6 +95,15 @@ class VCS
opts
end
+ def self.release_date(time)
+ t = time.utc
+ [
+ t.strftime('#define RUBY_RELEASE_YEAR %Y'),
+ t.strftime('#define RUBY_RELEASE_MONTH %-m'),
+ t.strftime('#define RUBY_RELEASE_DAY %-d'),
+ ]
+ end
+
attr_reader :srcdir
def initialize(path)
@@ -204,7 +213,8 @@ class VCS
revision_handler(rev).short_revision(rev)
end
- def revision_header(last, modified = nil, branch = nil, title = nil, limit: 20)
+ # make-snapshot generates only release_date whereas file2lastrev generates both release_date and release_datetime
+ def revision_header(last, release_date, release_datetime = nil, branch = nil, title = nil, limit: 20)
short = short_revision(last)
if /[^\x00-\x7f]/ =~ title and title.respond_to?(:force_encoding)
title = title.dup.force_encoding("US-ASCII")
@@ -225,10 +235,11 @@ class VCS
title = title.dump.sub(/\\#/, '#')
code << "#define RUBY_LAST_COMMIT_TITLE #{title}"
end
- if modified
- t = modified.utc
+ if release_datetime
+ t = release_datetime.utc
code << t.strftime('#define RUBY_RELEASE_DATETIME "%FT%TZ"')
end
+ code += VCS.release_date(release_date)
code
end
@@ -386,7 +397,10 @@ class VCS
end
class GIT < self
- register(".git") {|path, dir| File.exist?(File.join(path, dir))}
+ register(".git") do |path, dir|
+ File.exist?(File.join(path, dir)) &&
+ (`#{COMMAND} -v` rescue false) # make sure git command exists
+ end
COMMAND = ENV["GIT"] || 'git'
def cmd_args(cmds, srcdir = nil)
diff --git a/tool/make-snapshot b/tool/make-snapshot
index 02b5d182f5..22ae360c3e 100755
--- a/tool/make-snapshot
+++ b/tool/make-snapshot
@@ -347,7 +347,7 @@ def package(vcs, rev, destdir, tmp = nil)
end
File.open("#{v}/revision.h", "wb") {|f|
- f.puts vcs.revision_header(revision)
+ f.puts vcs.revision_header(revision, modified)
}
version ||= (versionhdr = IO.read("#{v}/version.h"))[RUBY_VERSION_PATTERN, 1]
version ||=