Check-in [9712ba37db]
Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | - rename to fpm. |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
9712ba37db24992809296099c27653da |
| User & Date: | jls@semicomplete.com 2011-01-03 23:42:17 |
Context
|
2011-01-04
| ||
| 01:25 | - Add gem packaging check-in: 9111aeaef0 user: jls@semicomplete.com tags: trunk | |
|
2011-01-03
| ||
| 23:42 | - rename to fpm. check-in: 9712ba37db user: jls@semicomplete.com tags: trunk | |
| 23:40 | set group, too check-in: 37802d19c4 user: jls@semicomplete.com tags: trunk | |
Changes
Added bin/fpm.rb.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
#!/usr/bin/env ruby
#
require "optparse"
require "ostruct"
require "erb"
def main(args)
settings = OpenStruct.new
opts = OptionParser.new do |opts|
opts.banner = "Usage: #{$0} [options]"
opts.on("-p PACKAGEFILE", "--package PACKAGEFILE",
"The package file to manage") do |path|
if path =~ /^\//
settings.package_path = path
else
settings.package_path = "#{Dir.pwd}/#{path}"
end
end
opts.on("-n PACKAGENAME", "--name PACKAGENAME",
"What name to give to the package") do |name|
settings.package_name = name
end
opts.on("-v VERSION", "--version VERSION",
"version to give the package") do |version|
settings.version = version
end
opts.on("-d DEPENDENCY", "--depends DEPENDENCY") do |dep|
settings.dependencies ||= []
settings.dependencies << dep
end
opts.on("-a ARCHITECTURE", "--architecture ARCHITECTURE") do |arch|
settings.architecture = arch
end
opts.on("-m MAINTAINER", "--maintainer MAINTAINER") do |maintainer|
settings.maintainer = maintainer
end
opts.on("-C DIRECTORY", "Change directory before searching for files") do |dir|
settings.chdir = dir
end
end # OptionParser
opts.parse!(args)
# Actions:
# create package
#
# files: add, remove
# scripts: add, remove
# metadata: set, add, remove
if !settings.package_path
$stderr.puts "No package file given to manage. Give with -p PACKAGEFILE"
return 1
end
paths = args
type = settings.package_path.split(".")[-1]
mkbinding = lambda do
package = settings.package_name
version = settings.version
package_iteration = 1
maintainer = (settings.maintainer or "<#{ENV["USER"]}>")
category = (settings.category or "X11")
summary = (settings.summary or "no summary given for #{package}-#{version}")
architecture = (settings.architecture or %x(uname -m).chomp)
if architecture == "x86_64" && type == "deb"
architecture = "amd64"
end
url = (settings.url or "http://example.com/")
dependencies = (settings.dependencies or [])
return binding
end
metadata = mkbinding.call
package_path = settings.package_path
package_path.gsub!(/VERSION/, eval('"#{version}-#{package_iteration}"', metadata))
package_path.gsub!(/ARCH/, eval("architecture", metadata))
if type != "deb"
$stderr.puts "Unsupported package type '#{type}'"
return 1
end
builddir = "#{Dir.pwd}/build-#{type}-#{File.basename(package_path)}"
Dir.mkdir(builddir) if !File.directory?(builddir)
template = File.new("#{File.dirname(__FILE__)}/../templates/#{type}.erb").read()
Dir.chdir(settings.chdir || ".") do
puts Dir.pwd
# Add directories first.
dirs = []
paths.each do |path|
while path != "/" and path != "."
if !dirs.include?(path) or File.symlink?(path)
dirs << path
else
#puts "Skipping: #{path}"
#puts !dirs.include?(path)
#puts !File.symlink?(path)
end
path = File.dirname(path)
end
end
dirs = dirs.sort { |a,b| a.length <=> b.length}
puts dirs.join("\n")
system(*["tar", "--owner=root", "--group=root", "-cf", "#{builddir}/data.tar", "--no-recursion", *dirs])
puts paths.join("\n")
#paths = paths.reject { |p| File.symlink?(p) }
system(*["tar", "--owner=root", "--group=root", "-rf", "#{builddir}/data.tar", *paths])
system(*["gzip", "-f", "#{builddir}/data.tar"])
# Generate md5sums
md5sums = []
paths.each do |path|
md5sums += %x{find #{path} -type f -print0 | xargs -0 md5sum}.split("\n")
end
File.open("#{builddir}/md5sums", "w") { |f| f.puts md5sums.join("\n") }
# Generate 'control' file
control = ERB.new(template).result(metadata)
File.open("#{builddir}/control", "w") { |f| f.puts control }
end
# create control.tar.gz
Dir.chdir(builddir) do
system("tar -zcf control.tar.gz control md5sums")
end
Dir.chdir(builddir) do
# create debian-binary
File.open("debian-binary", "w") { |f| f.puts "2.0" }
end
Dir.chdir(builddir) do
system("ar -qc #{package_path} debian-binary control.tar.gz data.tar.gz")
end
end
ret = main(ARGV)
exit(ret != nil ? ret : 0)
|
Deleted bin/pkg.rb.
|
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |