mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
make-snapshot: package with TarHeader
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65150 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
9fa69f7e52
commit
f80c80f004
1 changed files with 41 additions and 1 deletions
|
@ -155,6 +155,46 @@ unless tmp = $exported
|
||||||
} unless $keep_temp
|
} unless $keep_temp
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def tar_create(tarball, dir)
|
||||||
|
require 'rubygems'
|
||||||
|
require 'rubygems/package'
|
||||||
|
require 'rubygems/package/tar_writer'
|
||||||
|
header = Gem::Package::TarHeader
|
||||||
|
dir_type = "5"
|
||||||
|
uname = gname = "ruby"
|
||||||
|
File.open(tarball, "wb") do |f|
|
||||||
|
w = Gem::Package::TarWriter.new(f)
|
||||||
|
Dir.glob("#{dir}/**/*", File::FNM_DOTMATCH) do |path|
|
||||||
|
next if File.basename(path) == "."
|
||||||
|
s = File.stat(path)
|
||||||
|
case
|
||||||
|
when s.file?
|
||||||
|
type = nil
|
||||||
|
size = s.size
|
||||||
|
when s.directory?
|
||||||
|
path += "/"
|
||||||
|
type = dir_type
|
||||||
|
size = 0
|
||||||
|
else
|
||||||
|
next
|
||||||
|
end
|
||||||
|
name, prefix = w.split_name(path)
|
||||||
|
h = header.new(name: name, prefix: prefix,
|
||||||
|
mode: s.mode, size: size, mtime: s.mtime,
|
||||||
|
uname: uname, gname: gname)
|
||||||
|
f.write(h)
|
||||||
|
if size > 0
|
||||||
|
IO.copy_stream(path, f)
|
||||||
|
f.write("\0" * (-size % 512))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
true
|
||||||
|
rescue => e
|
||||||
|
warn e.message
|
||||||
|
false
|
||||||
|
end
|
||||||
|
|
||||||
def package(vcs, rev, destdir, tmp = nil)
|
def package(vcs, rev, destdir, tmp = nil)
|
||||||
patchlevel = false
|
patchlevel = false
|
||||||
prerelease = false
|
prerelease = false
|
||||||
|
@ -417,7 +457,7 @@ _touch-unicode-files:
|
||||||
else
|
else
|
||||||
tarball = "#{$archname||v}.tar"
|
tarball = "#{$archname||v}.tar"
|
||||||
print "creating tarball... #{tarball}"
|
print "creating tarball... #{tarball}"
|
||||||
if system("tar", "cf", tarball, v)
|
if tar_create(tarball, v)
|
||||||
puts $colorize.pass(" done")
|
puts $colorize.pass(" done")
|
||||||
else
|
else
|
||||||
puts $colorize.fail(" failed")
|
puts $colorize.fail(" failed")
|
||||||
|
|
Loading…
Add table
Reference in a new issue